基本思想:
- 通過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為起點)。
原文鏈接:https://zhuanlan.zhihu.com/p/346558578