最短路徑演算法

2021-07-04 13:28:51 字數 1441 閱讀 2985

可以求出所有點之間的最短路徑

public

final

int infility=1000;// 無窮遠

public

final

int n=35;// n是圖中頂點的個數

public

int distance=new

int[n][n];

public

int path=new

int[n][n];

// distance是鄰接矩陣

// path[i][j]表示i到j的最短路徑上j的前驅結點

// 初始化path矩陣

int i,j,k;

for(i=0;ifor(j=0;j//

}// floyd演算法

for (k = 0; k < n; ++k)

for (i = 0; i < n; ++i)

for (j = 0; j < n; ++j)

if(distance[i][j]>distance[i][k]+distance[k][j])

需要注意,在初始化path矩陣的時候,

1.如果將path初始化為j

path[i][j]=j;
則在floyd演算法中更新path的時候要這樣更新:

path[i][j]=path[i][k];
2.如果這樣初始化path

path[i][j]=i;
則需要這樣更新:

path[i][j]=path[k][j];
求某個點到其它結點的最短路徑

public

static

class graph

public

static

int infility = 1000;// 無窮遠

public

int path = new

int[vertexnum];// 起點到其他結點的最短路徑上的前驅結點

public

int dis = new

int[vertexnum];// 起點到其他結點的最短距離

public

void

dijkstra(int start)

// 主迴圈,執行n-1次

for (k = 1; k < vertexnum; ++k)

}visited[minidx] = true;// 找到了乙個最近鄰居

// 遍歷所有未找到最短路徑的結點,更新最短路徑

for (j = 0; j < vertexnum; ++j) }}

}

最短路徑演算法 最短路

在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...

最短路徑演算法

floyd演算法 012345 001 54 1108 1 2 801 3 3 1035 45 302 5413520 floyd 演算法過程描述如下 首先 以邊集 初始化,得到所有的直接連通代價 依次考慮第 k個結點,對於 中的每乙個 i j 判斷是否滿足 s i j s i k s k j 如果...

最短路徑演算法

個人覺得下面 有代表性 最短路徑演算法原始碼 vb 本人載 開發gis,遊自編的最短路徑查詢程式,速度特快,3萬節點,35000條路全部遍歷,只需1秒。現將最短路徑的思路告訴大家,希望大家在優化,並用不同語言編制,我正在學delphi,準備用delphi做成庫,本例以由拓撲關係的arc info 檔...