天天看點

初識 Dijkstra算法

Dijkstra 算法的思想

Dijkstra 算法說白了就是一個求最短路徑的算法,用于從一個指定的點到其餘各個點的最短路徑,是以也叫做“單源最短路徑”

例如求0到4的最短路徑

初識 Dijkstra算法

看似好複雜好複雜,其實我們完全可以逐個擊破。

首先我們需要一個清單來存儲該節點是否被通路了,對該清單進行初始化,全都為false。

初識 Dijkstra算法

然後我們還需要一個清單,用來記錄從起點到“終”點的距離。(這裡我們要将它看成無窮大)如圖:

初識 Dijkstra算法

之後呢還需要最後一個清單,這個清單用來存儲上一個節點,用-1來表示不存在這條邊。如圖

初識 Dijkstra算法

然後我們就可以開始了

從初始節點0開始,我們規定0節點到0節點的距離為0,然後尋找和它直接相連的兩條邊,并記錄清單進行更新。like this

初識 Dijkstra算法

然後肯定就是進行比較,找到最短的邊呗,顯而易見就是1号節點,讓後就以該節點為初始節點重複操作就行啦。那麼這裡要注意一個問題就是更新資料的時候,我們要比較的是當新節點的距離加上邊的值如果比對應節點小時,則更新,反之則保持不變。

說了這麼多,還不如來張動圖說的明白

初識 Dijkstra算法

Dijkstra 算法的概述圖我也放這啦,慢慢看吧

初識 Dijkstra算法

由于本人也是小萌新,Dijkstra算法也才剛剛學到,希望對大家有些許幫助,發文章純興趣,大佬輕噴

圖檔來源于百度百科和b站upWAY_zhongup視訊中截取

繼續閱讀