淺談數據結構之圖的面試真題-Dijkstra最短路徑算法(四)

上一篇

算法描述

通過Dijkstra計算圖G中的最短路徑時,需要指定起點vs(即從頂點vs開始計算)。
此外,引進兩個集合S和U。S的作用是記錄已求出最短路徑的頂點,而U則是記錄還未求出最短路徑的頂點(以及該頂點到起點vs的距離)。

操作步驟

  1. 初始時,S只包含起點vs;U包含除vs外的其他頂點,且U中頂點的距離爲"起點vs到該頂點的距離"[例如,U中頂點v的距離爲(vs,v)的長度,然後vs和v不相鄰,則v的距離爲∞]。
  2. 從U中選出"距離最短的頂點k",並將頂點k加入到S中;同時,從U中移除頂點k。
  3. 更新U中各個頂點到起點vs的距離。之所以更新U中頂點的距離,是由於上一步中確定了k是求出最短路徑的頂點,從而可以利用k來更新其它頂點的距離;例如,(vs,v)的距離可能大於(vs,k)+(k,v)的距離。
  4. 重複步驟(2)和(3),直到遍歷完所有頂點。

圖解

1.在這裏插入圖片描述

2.

在這裏插入圖片描述

3.

在這裏插入圖片描述

4.

在這裏插入圖片描述

5.

在這裏插入圖片描述

6.

在這裏插入圖片描述

7.

在這裏插入圖片描述

8.

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章