Dijkstra算法爲什麼權值不能是負值

Dijkstra算法當中將節點分爲已求得最短路徑的集合(記爲S)和未確定最短路徑的個集合(記爲U),
歸入S集合的節點的最短路徑及其長度不再變更,如果邊上的權值允許爲負值,那麼有可能出現當與S
內某點(記爲a)以負邊相連的點(記爲b)確定其最短路徑時,它的最短路徑長度加上這條負邊的權值
結果小於a原先確定的最短路徑長度,而此時a在Dijkstra算法下是無法更新的,由此便可能得不到正確的結果。
求帶負權值邊的單源最短路徑可以用貝爾曼-福特算法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章