Dijkstra 算法的思想
Dijkstra 算法說白了就是一個求最短路徑的算法,用于從一個指定的點到其餘各個點的最短路徑,是以也叫做“單源最短路徑”
例如求0到4的最短路徑
看似好複雜好複雜,其實我們完全可以逐個擊破。
首先我們需要一個清單來存儲該節點是否被通路了,對該清單進行初始化,全都為false。
然後我們還需要一個清單,用來記錄從起點到“終”點的距離。(這裡我們要将它看成無窮大)如圖:
之後呢還需要最後一個清單,這個清單用來存儲上一個節點,用-1來表示不存在這條邊。如圖
然後我們就可以開始了
從初始節點0開始,我們規定0節點到0節點的距離為0,然後尋找和它直接相連的兩條邊,并記錄清單進行更新。like this
然後肯定就是進行比較,找到最短的邊呗,顯而易見就是1号節點,讓後就以該節點為初始節點重複操作就行啦。那麼這裡要注意一個問題就是更新資料的時候,我們要比較的是當新節點的距離加上邊的值如果比對應節點小時,則更新,反之則保持不變。
說了這麼多,還不如來張動圖說的明白
Dijkstra 算法的概述圖我也放這啦,慢慢看吧
由于本人也是小萌新,Dijkstra算法也才剛剛學到,希望對大家有些許幫助,發文章純興趣,大佬輕噴
圖檔來源于百度百科和b站upWAY_zhongup視訊中截取