最短路徑 迪傑斯特拉演算法

2021-07-27 12:43:57 字數 932 閱讀 6010

例如,要求下圖v0到v8的最短路徑

所以我們可以找到這樣的一條最短路徑

下面是他的鄰接矩陣:

偽**如下:

#define maxvex	9

#define infinity 65535

typedef int patharc[maxvex]; // 用於儲存最短路徑下標的陣列

typedef int shortpathtable[maxvex]; // 用於儲存到各點最短路徑的權值和

void shortestpath_dijkstar(mgraph g, int v0, patharc *p, shortpathtable *d)

(*d)[v0] = 0; // v0至v0的路徑為0

final[v0] = 1; // v0至v0不需要求路徑

// 開始主迴圈,每次求得v0到某個v頂點的最短路徑

for (v = 1; v < g.numvertexes; v++)

}final[k] = 1; // 將目前找到的最近的頂點置1

// 修正當前最短路徑及距離

for (w = 0; w < g.numvextexes; w++)}}}

最後的: d

0147

58101216p

0014

2436

7final11

1111111

迪傑斯特拉最短路徑演算法

時間限制 1 sec 記憶體限制 32 mb 提交 27 解決 17 提交 狀態 命題人 外部匯入 題目描述 在帶權有向圖g中,給定乙個源點v,求從v到g中的其餘各頂點的最短路徑問題,叫做單源點的最短路徑問題。在常用的單源點最短路徑演算法中,迪傑斯特拉演算法是最為常用的一種,是一種按照路徑長度遞增的...

最短路徑(迪傑斯特拉演算法)

源 include define maxint 32767 表示極大值 define mvnum 100 最大頂點數 typedef char vertextype 定義資料型別 typedef int arctype typedef struct amgraph int locatevex amg...

迪傑斯特拉最短路徑

問題描述 在帶權有向圖g中,給定乙個源點v,求從v到g中的其餘各頂點的最短路徑問題,叫做單源點的最短路徑問題。在常用的單源點最短路徑演算法中,迪傑斯特拉演算法是最為常用的一種,是一種按照路徑長度遞增的次序產生最短路徑的演算法。在本題中,讀入乙個有向圖的帶權鄰接矩陣 即陣列表示 建立有向圖並按照以上描...