Dijkstra算法維護兩個集合:(已找到最短路徑的頂點)和(未找到最短路徑的頂點),每次叠代地從集合中刪除路徑距離最小的點,並通過這個新移動的點更新從每個頂點到源點的最短路徑,直到集合為空。我們通過壹個例子來簡單描述壹下Dijkstra算法的過程。
假設我們有下圖,其中頂點A不是該算法的起點:
首先,我們需要初始化兩個集合的和以及每個頂點到源點的距離。如果它不直接與A相鄰,則結果被設置為正無窮大。
步驟1:挑出與集合距離最小的點,這裏將挑出頂點F,集合的和變為:,並根據最新的重新計算中間頂點到源點A的最短距離。
Step 2::挑出離集合距離最小的點,這裏會挑出頂點E,集合的和變為:,根據最新的重新計算頂點到源點A的最短距離。
第三步:挑出離集合距離最小的點,這裏會挑出頂點C,集合的和變為:,根據最新的重新計算頂點到源點A的最短距離。
第四步:挑出離集合距離最小的點,這裏將挑出頂點D,集合的和變為:,並根據最新的重新計算頂點到源點A的最短距離。
第五步:挑出離集合距離最小的點,這裏會挑出頂點B,集合的和變為:,根據最新的重新計算頂點到源點A的最短距離。
第六步:挑出與集合距離最小的點,這裏將挑出頂點G,集合的和將更改為:,由於集合為空,算法將停止叠代並輸出結果。
以上是對Dijkstra算法計算過程的簡單描述。