主題
Search

Dijkstra 演算法


Dijkstra 演算法是一種用於查詢圖測地線演算法,即中兩個圖頂點之間的最短路徑。它的功能是透過構建從初始頂點到圖中每個其他頂點的最短路徑樹來實現的。

該演算法在 Wolfram 語言中實現為FindShortestPath[g,Method -> "Dijkstra"].

在具有 n 個節點和 m 條邊的圖上,Dijkstra 演算法的最壞情況執行時間為 O(n^2),因為它允許有向環。它甚至可以找到從源節點 s 到圖中所有其他節點的最短路徑。這基本上是節點選擇的 O(n^2) 和距離更新的 O(m)。雖然 O(n^2) 是稠密圖的最佳可能複雜度,但對於稀疏圖,複雜度可以顯著提高。

透過稍微修改,Dijkstra 演算法可以用作反向演算法,為匯聚節點維護最小生成樹。透過進一步修改,它可以擴充套件為雙向演算法。

Dijkstra 演算法的瓶頸是節點選擇。但是,使用 Dial 的實現,對於稀疏圖可以顯著改進這一點。

在電視劇 NUMB3RS 第三季劇集 "Money For Nothing" (2007) 中,數學教授 Charlie Eppes 使用 Dijkstra 演算法來找到被劫持卡車逃離洛杉磯最可能的路線,該卡車裝載了數百萬美元的現金和醫療用品,以及兩名綁架受害者。

Haeupler等人 (2024) 證明,當 Dijkstra 演算法與足夠高效的 資料結構結合使用時,無論是在執行時間還是比較次數方面都是普遍最優的。這一結果為圖演算法提供了強大的超越最壞情況效能保證。通俗地說,這意味著 Dijkstra 演算法對於每種可能的圖拓撲結構都表現得儘可能好(Haeupler等人,2024)。


另請參閱

所有點對最短路徑, Bellman-Ford 演算法, Floyd-Warshall 演算法, 圖距離, 圖測地線, 可達性演算法, 最短路徑, 最短路徑問題

本條目部分內容由 Andreas Lauschke 貢獻

本條目部分內容由 Len Goodman 貢獻

透過 探索

參考文獻

Dijkstra, E. W. "A Note on Two Problems in Connection with Graphs." Numerische Math. 1, 269-271, 1959.Haeupler, B.; Hladík, R.; Rozhoň, V., Tarjan, R.; and Tetek, J. "Universal Optimality of Dijkstra via Beyond-Worst-Case Heaps." 9 Apr 2024. https://arxiv.org/abs/2311.11793.Skiena, S. "Dijkstra's Algorithm." §6.1.1 in Implementing Discrete Mathematics: Combinatorics and Graph Theory with Mathematica. Reading, MA: Addison-Wesley, pp. 225-227, 1990.Whiting, P. D. and Hillier, J. A. "A Method for Finding the Shortest Route through a Road Network." Operational Res. Quart. 11, 37-40, 1960.

在 上被引用

Dijkstra 演算法

請引用為

Goodman, Len; Lauschke, Andreas; 和 Weisstein, Eric W. "Dijkstra 演算法。" 來自 Web 資源。 https://mathworld.tw/DijkstrasAlgorithm.html

主題分類