迪傑斯特拉算法

迪傑斯特拉算法(SPF:Shortest Path First最短路徑算法)html

1. 算法思想算法

     輸入(即已知條件): 有權重的無向圖G={E,V},V是頂點的集合,E是邊的集合 ,每一邊皆有權重(大於零),源節點s和目的節點d都屬於集合V(s∈V, d∈V)。htm

     輸出(即求得的結果): 源節點s到全部其它節點的最短路徑的長度。blog

wps28

wps29

2. 初始化階段,除了起點A外,全部節點的距離dist設置爲無窮大。ci

wps30

3. 更新鄰居的距離get

    起點A的鄰居爲爲B,D,根據邊AB、AD的權重,將其距離分別更新爲it

Distance(B)=2,Distance(D)=1test

wps31

4. 移除有最小距離的點Dim

     因爲A的鄰居節點是B和D,Distance(B)=2>Distance(D)=1,因此移除D點。d3

wps32

5. 以移除的D爲起點進行更新

     分別計算D的鄰居節點的距離,等於AD的權重,加上DC、DFDG、DE、DB的權重。

wps33

6. 移除B

     在未移除的節點中,選擇距離最小的B( distance =2)移除,而且更新鄰居

     注意:distance(D)  D不用更新,由於D已知; distance(E)也不用更新,由於BD+DE=5,比前面計算的值3要大。

wps34

7. 移除E

     在未移除的節點中,選擇距離最小的E(distance =3)移除,而且更新鄰居

      因爲鄰居B、D已經移除,因此不用更新; distance(G)也不用更新,由於BE+GE=16>distance(G)=5,比前面計算的值5要大。

wps35

8. 移除C

     在未移除的節點中,選擇距離最小的C(distance =3)移除,而且更新鄰居

wps36

9. 移除G

wps37

10. 最後移除F,並按前面原則更新各節點距離

   到此,能夠獲得起點A到各個頂點的最短距離,完成了dijkstra的算法過程。

wps38步驟閱讀

相關文章
相關標籤/搜索