Tôi đang cố gắng để tìm ra cách con đường Graph theo Eppstein của thuật toán trong này giấy công trình và làm thế nào tôi có thể tái tạo lại đường đi ngắn nhất từ đến với tương ứng xây dựng đống .
Cho đến nay:
chứa tất cả các cạnh để lại một đỉnh trong một đồ thị không phải là một phần của con đường ngắn nhất trong . Chúng được sắp xếp theo đống bởi "lãng phí thời gian" được gọi là khi sử dụng cạnh này thay vì cạnh trên một con đường ngắn nhất. Bằng cách áp dụng Dijkstra tôi tìm thấy những con đường ngắn nhất đến mọi đỉnh từ .
Tôi có thể tính toán điều này bằng cách lấy chiều dài của cạnh + (giá trị của đỉnh đầu (nơi cạnh được chỉ hướng) - giá trị của đỉnh đuôi (nơi bắt đầu có hướng). Nếu đây là thì không phải là con đường ngắn nhất, nếu là thì nó nằm trên con đường ngắn nhất.
Bây giờ tôi xây dựng 2-Heap bằng cách ghép các tập hợp các cạnh theo cho bất kỳ , trong đó root chỉ có một con (= cây con).
Để xây dựng tôi chèn vào bắt đầu ở đỉnh thiết bị đầu cuối . Mỗi khi một đỉnh được chạm bằng cách nào đó trong khi chèn nó được đánh dấu .
Bây giờ tôi có thể xây dựng bằng cách chèn phần còn lại của vào . Mỗi đỉnh trong chứa con từ và từ hoặc từ đầu tiên và từ thứ hai và là một đống 3.
Với tôi có thể xây dựng một DAG có tên chứa một đỉnh cho mỗi đỉnh đánh dấu từ và cho mỗi đỉnh không gốc từ .
Các gốc của trong được gọi là và chúng được kết nối với các đỉnh mà chúng thuộc theo theo "ánh xạ".
Càng xa càng tốt.
Bài báo nói rằng tôi có thể xây dựng bằng cách chèn một gốc và kết nối nó với bằng một cạnh bẩm sinh với . Các đỉnh của giống nhau trong nhưng chúng không có trọng số. Các cạnh có chiều dài. Sau đó, với mỗi cạnh được định hướng các cạnh tương ứng trong được tạo và có trọng số bởi . Chúng được gọi là Heap Edges. Sau đó, với mỗi đỉnh , đại diện cho một cạnh không nằm trong một con đường ngắn nhất nối một cặp đỉnh và , "các cạnh chéo" được tạo từ đến trong có độ dài . Mỗi đỉnh trong chỉ có mức độ tối đa là tối đa.
đường dẫn 's bắt đầu từ có nghĩa vụ phải là một one-to-one chiều dài tương ứng giữa - -paths trong .
Cuối cùng, một đống mới được đặt hàng 4-Heap được xây dựng. Mỗi đỉnh tương ứng với một đường dẫn trong bắt nguồn từ . Cha mẹ của bất kỳ đỉnh có một cạnh ít hơn. Trọng lượng của một đỉnh là chiều dài của đường tương ứng.
Để tìm đường dẫn ngắn nhất, tôi sử dụng BFS đến và "dịch" kết quả tìm kiếm thành các đường dẫn bằng cách sử dụng .
Thật không may, tôi không hiểu làm thế nào tôi có thể "đọc" và sau đó "dịch" nó qua để nhận đường dẫn ngắn nhất.