【算法学习笔记】 图(四)用优先级队列优化Dijkstra算法求最短路径(邻接矩阵存储)
生活随笔
收集整理的這篇文章主要介紹了
【算法学习笔记】 图(四)用优先级队列优化Dijkstra算法求最短路径(邻接矩阵存储)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
優(yōu)先級隊列:priority_queue,經(jīng)過實驗之后發(fā)現(xiàn)默認是首先輸出最大的元素,現(xiàn)在想讓隊頭為最小的元素,需要進行運算符重載
此算法尋找源點到與它連接的所有頂點的最短路徑
運算符重載:
struct Node {int u, step;Node() {};Node(int a, int sp) {u = a; step = sp;//u為頂點,step為源點到頂點u的最短路徑 }bool operator < (const Node& a)const { // 重載 <return step > a.step;} };注意這樣重載以后operator<為成員函數(shù),再用pop出隊時首先出的是step最小的結點
總代碼:
注意這個:
if (flag[t])//說明已經(jīng)找到了最短距離,該結點是隊列里面的重復元素
continue;
已經(jīng)找到了從源點到t的最短距離,結束此輪循環(huán),開始下一輪循環(huán),出隊Q的下一個頂點,尋找源點到下一個頂點的最小路徑
摘錄自書籍【趣學算法】第2.5節(jié)
總結
以上是生活随笔為你收集整理的【算法学习笔记】 图(四)用优先级队列优化Dijkstra算法求最短路径(邻接矩阵存储)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【记录】在云服务器安装tomcat部署自
- 下一篇: 【笔记】docker核心概念和使用 do