Dijkstra迪傑斯特拉演算法

2021-10-10 11:45:45 字數 754 閱讀 9215

作用:用於對有權圖進行搜尋,找出圖中兩點的最短距離(或一點到其他所有點的最短距離)

ps:這一大段我看著也費勁

演算法思想:設g=(v,e)是乙個帶權有向圖,把圖中頂點集合v分成兩組,第一組為已求出最短路徑的頂點集合(用s表示,初始時s中只有乙個源點,以後每求得一條最短路徑 , 就將加入到集合s中,直到全部頂點都加入到s中,演算法就結束了),第二組為其餘未確定最短路徑的頂點集合(用u表示),按最短路徑長度的遞增次序依次把第二組的頂點加入s中。在加入的過程中,總保持從源點v到s中各頂點的最短路徑長度不大於從源點v到u中任何頂點的最短路徑長度。此外,每個頂點對應乙個距離,s中的頂點的距離就是從v到此頂點的最短路徑長度,u中的頂點的距離,是從v到此頂點只包括s中的頂點為中間頂點的當前最短路徑長度。

我的理解:從起點出發,找離起點最近的沒訪問過的點,然後把找到的最近的點作為新的起點,再找離它最近的沒訪問過的點,直到找到終點。

例子:從1開始找到6的最近路徑

設n為最終路徑值

從1開始,1能到2點和3點,2更近,去2.n+=1;n=1

從2開始,2能到3點和4點,4更近,去4.n+=3;n=4

從4開始,4能到3點和5點、6點,3更近,去3.n+=4;n=8

從3開始,3只能到5點,去5.n+=5;n=13

從5開始,5只能到6點,去6,n+=4,n=17

參考:dijkstra演算法**詳解

Dijkstra(迪傑斯特拉)演算法

迪傑斯特拉 dijkstra 演算法是典型最短路徑演算法,用於計算乙個節點到其他節點的最短路徑。它的主要特點是以起始點為中心向外層層擴充套件 廣度優先搜尋思想 直到擴充套件到終點為止。指定乙個節點,例如我們要計算 a 到其他節點的最短路徑 引入兩個集合 s u s集合包含已求出的最短路徑的點 以及相...

dijkstra迪傑斯特拉演算法

注意 1.標頭檔案climits的int max,加上2整數會溢位,每次相加前得判斷被加值是否為int max,int max 10為負數 2.得先初始化再對d s c s g,cost等賦值 fill d 0 d 0 max,int max fill g 0 0 g 0 0 max max,int...

迪傑斯特拉 Dijkstra 演算法

迪傑斯特拉 dijkstra 演算法是典型最短路徑演算法,用於計算乙個節點到其他節點的最短路徑。它的主要特點是以起始點為中心向外層層擴充套件 廣度優先搜尋思想 直到擴充套件到終點為止。通過dijkstra計算圖g中的最短路徑時,需要指定起點s 即從頂點s開始計算 dijkstra演算法算是貪心思想實...