數據結構筆記——Dijkstra算法

寫在前面:科班出身,應屆考研黨,願21考研成功上岸,沖沖衝!

目錄

一、BFS算法的侷限性

二、Dijkstra算法

三、如何使用數組信息

四、用於負權值帶權圖


一、BFS算法的侷限性

帶權路徑長度——當圖是帶權圖時,一條路徑上所有邊的權值之和,稱爲該路徑的帶權路徑長度

BFS算法求單源最短路徑只適用於無權圖,或所有邊的權值都相同的圖

二、Dijkstra算法

初始:從V0開始,初始化三個數組信息如下

第1輪:循環遍歷所有結點,找到還沒確定最短路徑,且dist最小的頂點Vi,零final[j] = true

檢查所有鄰接自Vi的頂點,若其final值爲false,則更新dist和path信息

第2輪:循環遍歷所有結點,找到還沒確定最短路徑,且dist最小的頂點Vi,零final[j] = true

第3輪:循環遍歷所有結點,找到還沒確定最短路徑,且dist最小的頂點Vi,零final[j] = true

第4輪:循環遍歷所有結點,找到還沒確定最短路徑,且dist最小的頂點Vi,零final[j] = true

三、如何使用數組信息

V0到V2的最短(帶權)路徑長度爲:dist[2] = 9

通過path[]可知,V0到V2的最短(帶權)路徑:V2<- -- V1<-----V4<------V0

時間複雜度:O(n^2)即O(|V|^2)

四、用於負權值帶權圖

結論:Dijkstra算法不適用於有負權值的帶權圖

 

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