參考視頻:https://www.bilibili.com/video/BV1oV411R7Yo
視頻講解通俗易懂。建議1.5倍速食用!
下面的總結,估計僅僅適合我自己看。不太明白的地方。請去原視頻觀看!
目的就是生成一個優先隊列(最小的優先):
- 1、從A開始,先把每一 個點邊計算出來,入列
- 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
結束!