Ok, tôi đăng câu hỏi này vì bài tập này:graph - Dijkstra cho The Single-Nguồn Longest Đường dẫn
Chúng ta có thể thay đổi thuật toán Dijkstra để giải quyết đơn nguồn vấn đề con đường dài nhất bằng cách thay đổi tối thiểu để tối đa? Nếu có thì hãy chứng minh thuật toán của bạn đúng. Nếu không, hãy cung cấp một ví dụ.
Đối với bài tập này hay tất cả mọi thứ liên quan đến thuật toán Dijkstra, tôi giả sử không có trọng lượng tiêu cực trong đồ thị dưới. Nếu không, nó không có ý nghĩa nhiều, ngay cả đối với vấn đề đường đi ngắn nhất, Dijkstra không thể hoạt động bình thường nếu cạnh tiêu cực tồn tại.
Ok, trực giác của tôi đã trả lời nó cho tôi:
Vâng, tôi nghĩ rằng nó có thể được sửa đổi.
Tôi chỉ
- khởi khoảng cách mảng để MININT
- thay đổi
distance[w] > distance[v]+weight
đểdistance[w] < distance[v]+weight
Sau đó, tôi đã làm một số nghiên cứu để xác minh câu trả lời của tôi. Tôi tìm thấy bài đăng này:
Longest path between from a source to certain nodes in a DAG
Trước tiên tôi nghĩ câu trả lời của tôi đã sai vì bài viết ở trên. Nhưng tôi thấy rằng có lẽ câu trả lời trong bài viết ở trên là sai. Nó trộn lẫn Sự cố đường dẫn dài nhất một nguồn với Sự cố đường dẫn dài nhất.
Cũng trong wiki của Bellman–Ford algorithm, nó nói một cách chính xác:
Thuật toán Bellman-Ford tính đơn nguồn đường đi ngắn nhất trong một digraph quân gia quyền. Đối với đồ thị chỉ có trọng số cạnh không âm, thuật toán Dijkstra nhanh hơn cũng giải quyết được vấn đề. Do đó, Bellman-Ford được sử dụng chủ yếu cho các đồ thị có trọng số cạnh tiêu cực.
Vì vậy, tôi nghĩ câu trả lời của tôi là chính xác, đúng không? Dijkstra thực sự có thể là Các nguồn duy nhất Vấn đề đường dẫn dài nhất và các sửa đổi của tôi cũng đúng, phải không?
@ Kristo, bạn có thể vui lòng có một cái nhìn? –