迪傑斯特拉算法。簡單理解。內含示例

參考視頻:https://www.bilibili.com/video/BV1oV411R7Yo

視頻講解通俗易懂。建議1.5倍速食用!

 

下面的總結,估計僅僅適合我自己看。不太明白的地方。請去原視頻觀看!

目的就是生成一個優先隊列(最小的優先):

  1. 1、從A開始,先把每一 個點邊計算出來,入列
  2. 2、如果這個頂點的所有邊計算完畢,就出列

1,先計算,起點(圖中爲A)到各個相鄰點的距離大小。生成一個隊列。

2,如果,A點出發,所能夠到達的所有點。已經“走完”。那麼就將A點出發的所有相關的路徑列。出列。

3,接着進行下一個。最短距離所對應的城市名字。並且以這個城市名字作爲起點。

【本示例的第二個爲C點!即是上一個過程的A點!】

然後,比較從新的起點C出發,A-C-B的距離和。是否比A-B的距離小。如果,A-C-B的距離比之前的A-B距離要小的話。那麼就替換之前的A-B。

更新爲下圖:

剩下的以此類推。

 

4,最後得出的結果:

根據所得結果,每次想要找尋路徑的時候。可以進行反推。

 

舉例子:[結果只是相對於A點的!]

F到A最短:F-D-B-C-A

D到A最短:D-B-C-A

結束!

 

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