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


基本思想:

  1. 通過Dijkstra計算圖G中的最短路徑時,需要指定一個起點D(即從頂點D開始計算)。
  2. 此外,引進兩個數組S和U。S的作用是記錄已求出最短路徑的頂點(以及相應的最短路徑長度),而U則是記錄還未求出最短路徑的頂點(以及該頂點到起點D的距離)。
  3. 初始時,數組S中只有起點D;數組U中是除起點D之外的頂點,並且數組U中記錄各頂點到起點D的距離。如果頂點與起點D不相鄰,距離為無窮大。
  4. 然后,從數組U中找出路徑最短的頂點K,並將其加入到數組S中;同時,從數組U中移除頂點K。接着,更新數組U中的各頂點到起點D的距離。
  5. 重復第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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM