dijkstra giả định rằng chi phí của đường dẫn tăng lên theo chiều cao. cộng với việc tìm kiếm có thứ tự (sử dụng hàng đợi ưu tiên) có nghĩa là khi bạn lần đầu tiên đến một nút, bạn đã đến qua con đường ngắn nhất.
điều này không đúng với trọng số âm. nếu bạn sử dụng dijkstra với trọng số tiêu cực thì bạn có thể tìm thấy một con đường sau đó là tốt hơn so với một trước đó (vì một trọng lượng tiêu cực cải thiện đường dẫn trên một bước sau).
vì vậy trong bellman-ford, khi bạn đến một nút bạn kiểm tra để xem đường dẫn mới có ngắn hơn không. Ngược lại, với dijkstra, bạn có thể hủy các nút
trong một số trường hợp (hầu hết) dijkstra sẽ không khám phá tất cả các đường dẫn đầy đủ. ví dụ, nếu G liên kết với C thì chi phí cao hơn bất kỳ thông qua C. bellman-ford sẽ vẫn xem xét tất cả các đường dẫn thông qua G đến F (dijkstra sẽ không bao giờ nhìn vào chúng bởi vì chúng có chi phí cao hơn đi qua C). nếu nó không làm điều này nó không thể đảm bảo việc tìm kiếm vòng lặp âm.
đây là ví dụ: ở trên không bao giờ tính toán đường dẫn AGEF. E đã được đánh dấu là đã đến thăm vào thời điểm quý khách đến từ G.
Nguồn
2012-05-11 11:46:48
IFRC Bellman-Ford cũng quản lý hồ quang với chi phí âm – BigMike
Nhưng nếu tôi muốn làm cho trực quan, như thế này, cho bellman-ford, nó sẽ giống nhau? – Wish
Bạn có thể hình dung B-F với biểu đồ khác nhau với các giá trị âm. Nhưng đối với Dijkstra bạn không thể sử dụng nó. – shan