當前位置:成語大全網 - 書法字典 - 直觀理解:從單壹來源獲得最短路徑-Dijkstra算法

直觀理解:從單壹來源獲得最短路徑-Dijkstra算法

SSSP迪傑斯特拉算法:荷蘭計算機科學家艾茲格·迪科斯徹在1959年提出的單源最短路徑算法(SSSP)。它是解決加權圖(沒有負權重的邊)中從壹個頂點到其他頂點的最短路徑問題的算法。Dijkstra算法是壹種結合貪婪算法、廣度優先搜索(BFS)和動態規劃的最短路徑算法。Dijkstra算法的主要特點是從原點出發,采用貪婪算法的策略,每次都遍歷到離原點最近且沒有被訪問過的頂點的相鄰頂點,直到擴展到終點。

Dijkstra算法維護兩個集合:(已找到最短路徑的頂點)和(未找到最短路徑的頂點),每次叠代地從集合中刪除路徑距離最小的點,並通過這個新移動的點更新從每個頂點到源點的最短路徑,直到集合為空。我們通過壹個例子來簡單描述壹下Dijkstra算法的過程。

假設我們有下圖,其中頂點A不是該算法的起點:

首先,我們需要初始化兩個集合的和以及每個頂點到源點的距離。如果它不直接與A相鄰,則結果被設置為正無窮大。

步驟1:挑出與集合距離最小的點,這裏將挑出頂點F,集合的和變為:,並根據最新的重新計算中間頂點到源點A的最短距離。

Step 2::挑出離集合距離最小的點,這裏會挑出頂點E,集合的和變為:,根據最新的重新計算頂點到源點A的最短距離。

第三步:挑出離集合距離最小的點,這裏會挑出頂點C,集合的和變為:,根據最新的重新計算頂點到源點A的最短距離。

第四步:挑出離集合距離最小的點,這裏將挑出頂點D,集合的和變為:,並根據最新的重新計算頂點到源點A的最短距離。

第五步:挑出離集合距離最小的點,這裏會挑出頂點B,集合的和變為:,根據最新的重新計算頂點到源點A的最短距離。

第六步:挑出與集合距離最小的點,這裏將挑出頂點G,集合的和將更改為:,由於集合為空,算法將停止叠代並輸出結果。

以上是對Dijkstra算法計算過程的簡單描述。