《原神攻略》謁索雷痕第二幕疾雷攻逐全面解析
阿新 • • 發佈:2021-07-27
什麼是?解決什麼問題?缺點?
問題描述:在無向有權圖G = (V,E)中,假設每條邊E[i]的長度是w[i],找到由頂點V0到其餘各點的最短路徑。
Dijkstra演算法是典型的單源最短路徑演算法,用於計算一個節點到其他節點的最短距離。主要特點是以起始點為中心向外層擴充套件,直到擴充套件到終點為止,與BFS有幾分相似。Dijkstra存在侷限性,即不能處理負權邊。
演算法描述
設G = (V,E)是一個帶權有向圖,把圖中頂點集合V分成兩組,第一組為已求出最短路徑的頂點集合(用S表示,初始時S中只有一個源點,以後每求得一條最短路徑,就將加入到集合S中,直到全部頂點都加入到S中,演算法就結束了),第二組為其餘未確定最短路徑的頂點的集合(用U表示)
演算法步驟
1、詳細
- 初始時,S只包括起點v;U包含除v外的其他頂點,且U[i]表示頂點i到起點的距離。
- 從U中選出“距離起點最短的頂點a”,並將頂點k加入到S中,同時,從U中移除頂點a;
- 從頂點a出發,更新U中各個頂點到起點v的距離,dis[b] = min(dis[b], dis[a] + ab);
2、簡略
- 找到當前沒有訪問的最短路節點;(找最小值)
- 確認這個節點的最短路就是當前大小;(確定一個解)
- 根據這個節點的最短路大小,更新其他節點的路徑長度。(根據確定的解更新)
3、圖片說明