天天看點

迪傑斯特拉(Dijkstra)算法圖解

通過dijkstra計算圖g中的最短路徑時,需要指定一個起點d(即從頂點d開始計算)。

此外,引進兩個數組s和u。s的作用是記錄已求出最短路徑的頂點(以及相應的最短路徑長度),而u則是記錄還未求出最短路徑的頂點(以及該頂點到起點d的距離)。

初始時,數組s中隻有起點d;數組u中是除起點d之外的頂點,并且數組u中記錄各頂點到起點d的距離。如果頂點與起點d不相鄰,距離為無窮大。

然後,從數組u中找出路徑最短的頂點k,并将其加入到數組s中;同時,從數組u中移除頂點k。接着,更新數組u中的各頂點到起點d的距離。

重複第4步操作,直到周遊完所有頂點。

s={d(0)}, u={a(∞),b(∞),c(3),e(4),f(∞),g(∞)}。 注:c(3)表示c到起點d的距離是3。

a(22) b(13) c(3) d(0) e(4) f(6) g(12)。

迪傑斯特拉(Dijkstra)算法圖解

 以上圖為例,對迪傑斯特拉進行算法示範(以頂點d為起點)。

迪傑斯特拉(Dijkstra)算法圖解

繼續閱讀