1. 程式人生 > 遊戲攻略 >《原神攻略》謁索雷痕第二幕疾雷攻逐全面解析

《原神攻略》謁索雷痕第二幕疾雷攻逐全面解析

什麼是?解決什麼問題?缺點?

問題描述:在無向有權圖G = VE)中,假設每條邊E[i]的長度是w[i],找到由頂點V0到其餘各點的最短路徑。

Dijkstra演算法是典型的單源最短路徑演算法,用於計算一個節點到其他節點的最短距離。主要特點是以起始點為中心向外層擴充套件,直到擴充套件到終點為止,與BFS有幾分相似Dijkstra存在侷限性,即不能處理負權邊

演算法描述

設G = (V,E)是一個帶權有向圖,把圖中頂點集合V分成兩組,第一組為已求出最短路徑的頂點集合(用S表示,初始時S中只有一個源點,以後每求得一條最短路徑,就將加入到集合S中,直到全部頂點都加入到S中,演算法就結束了),第二組為其餘未確定最短路徑的頂點的集合(用U表示)

,按最短路徑長度的遞增次序以此把第二組的頂點加入S中。在加入的過程中,總保持從源點v到S中個頂點的最短路徑長度不大於從源點v到U中任何頂點的最短路徑長度。此外,每個頂點對應一個距離,S中的頂點的距離就是從v到此頂點的最短路徑長度,U中的距離,是從v到此頂點只包括S中的頂點為中間頂點的當前最短路徑長度。

演算法步驟

1、詳細

  • 初始時,S只包括起點vU包含除v外的其他頂點,且U[i]表示頂點i到起點的距離。
  • U中選出“距離起點最短的頂點a”,並將頂點k加入到S中,同時,從U中移除頂點a
  • 從頂點a出發,更新U中各個頂點到起點v的距離,dis[b] = min(dis[b], dis[a] + ab);

2、簡略

  • 找到當前沒有訪問的最短路節點;(找最小值
  • 確認這個節點的最短路就是當前大小;(確定一個解
  • 根據這個節點的最短路大小,更新其他節點的路徑長度。(根據確定的解更新

3、圖片說明