1. 程式人生 > >為什麼Dijkstra演算法不能處理帶負權邊的圖

為什麼Dijkstra演算法不能處理帶負權邊的圖

Dijkstra演算法在執行過程中維持的關鍵資訊是一組節點集合S,從源節點s到該集合中每個節點之間的最短路徑已經被找到。演算法重複從節點集合V-S中選擇最短路徑估計最小的節點u,將u加入到集合S,然後對所有從u出發的邊進行鬆弛操作。

當把一個節點選入集合S時,即意味著已經找到了從源點到這個點的最短路徑,但若存在負權邊,就與這個前提矛盾,可能會出現得出的距離加上負權後比已經得到S中的最短路徑還短。(無法回溯)