Có một triển khai tùy chỉnh KSPA cần được viết lại. Việc triển khai hiện tại sử dụng thuật toán Dijkstra đã sửa đổi có mã giả được giải thích dưới đây. Nó thường được gọi là KSPA bằng cách sử dụng chiến lược xóa cạnh tôi nghĩ như vậy. (Tôi là một người mới trong đồ thị lý thuyết).Gợi ý cho KSPA trên đồ thị vô hướng
Step:-1. Calculate the shortest path between any given pair of nodes using the Dijkstra algorithm. k = 0 here.
Step:-2. Set k = 1
Step:-3. Extract all the edges from all the ‘k-1’ shortest path trees. Add the same to a linked list Edge_List.
Step:-4. Create a combination of ‘k’ edges from Edge_List to be deleted at once such that each edge belongs to a different SPT (Shortest Path Tree). This can be done by inspecting the ‘k’ value for each edge of the combination considered. The ‘k’ value has to be different for each of the edge of the chosen combination.
Step:-5. Delete the combination of edges chosen in the above step temporarily from the graph in memory.
Step:-6. Re-run Dijkstra for the same pair of nodes as in Step:-1.
Step:-7. Add the resulting path into a temporary list of paths. Paths_List.
Step:-8. Restore the deleted edges back into the graph.
Step:-9. Go to Step:-4 to get another combination of edges for deletion until all unique combinations are exhausted. This is nothing but choosing ‘r’ edges at a time among ‘n’ edges => nCr.
Step:-10. The ‘k+1’ th shortest path is = Minimum(Paths_List).
Step:-11. k = k + 1 Go to Step:-3, until k < N.
Step:-12. STOP
Như tôi hiểu các thuật toán, để có được thứ k con đường ngắn nhất, SPTS 'k-1' sẽ được tìm thấy giữa mỗi cặp nguồn-đích và 'k-1' cạnh mỗi từ một SPT sẽ được xóa đồng thời cho mọi kết hợp. Rõ ràng thuật toán này có sự phức tạp tổ hợp và làm tắc nghẽn máy chủ trên các biểu đồ lớn. Mọi người gợi ý cho tôi thuật toán của Eppstein (http://www.ics.uci.edu/~eppstein/pubs/Epp-SJC-98.pdf). Nhưng bài báo trắng này trích dẫn một 'digraph' và tôi không thấy một đề cập đến nó chỉ hoạt động cho digraphs. Tôi chỉ muốn hỏi folks ở đây nếu có ai đã sử dụng thuật toán này trên một đồ thị vô hướng?
Nếu không, có các thuật toán tốt (về mặt thời gian phức tạp) để triển khai KSPA trên đồ thị không bị chiếu xạ không?
Cảm ơn trước,
Đồ thị vô hướng về cơ bản là đồ thị với mọi cạnh gấp đôi, phải không? Không có vấn đề gì với thuật toán bạn đã liên kết. –
Có. Nhưng ai đó làm việc trên algo nói với tôi rằng nó sử dụng một kỹ thuật phân phối đặc biệt mà có thể không hoạt động trên đồ thị vô hướng. Vì vậy, tôi nghĩ đến việc kiểm tra xem liệu có ai đó đã thực sự áp dụng nó cho một đồ thị vô hướng không. Nhưng tôi sẽ kiểm tra. Đang thực hiện ... – Abhay
Thuật toán Eppstein chỉ hoạt động trên biểu đồ tuần hoàn. Mặc dù một đồ thị vô hướng là một đồ thị có hướng với các cạnh theo cả hai hướng, kỹ thuật phân tách không thành công do các chu kỳ. – Abhay