弗洛伊德演算法求每一對頂點之間的最短路徑

2021-04-23 14:34:54 字數 998 閱讀 2797

#include 

#define vertex_num 3

#define infinity 10000

#define true 1

#define false 0

typedef

struct  graph

graph;

void  shortestpath(graph g, int  p[vertex_num][vertex_num][vertex_num], int  d[vertex_num][vertex_num]) }

for  (u = 0; u < g.vexnum; u++)

for  (v = 0; v < g.vexnum; v++)

for  (w = 0; w < g.vexnum; w++)

if  (d[v][u] + d[u][w] < d[v][w])     /*從v經u到w的一條路徑更短*/ }

} void  printpath ( graph g,  int  p[vertex_num][vertex_num][vertex_num], int  d[vertex_num][vertex_num] )

printf( "/n" );

}           

printf( "length:%d/n" ,d[i][j]);

printf( "/n" );

} }

} void  main()

g.arcs[0][1]=4,g.arcs[0][2]=11,g.arcs[1][0]=6,g.arcs[1][2]=2,

g.arcs[2][0]=3;

g.vexnum=vertex_num;

g.arcnum=5;

/*輸出圖的有關資訊*/

for (i=0;i

printf( "/n" );

} shortestpath(g,p,d);

printpath(g,p,d); }

弗洛伊德演算法(每一對頂點之間的最短路徑)

for int i 1 i vtxnum i for int j 1 j vtxnum j for k 1 k vtxnum k 中間點 for int i 1 i vtxnum i for int j 1 j vtxnum j if dist i k dist k j dist i j dist是...

每隊頂點之間的最短路徑(弗洛伊德演算法)

floyd演算法 又稱為插點法,是一種利用動態規劃的思想尋找給定的加權圖中多源點之間最短路徑的演算法,與dijkstra演算法類似。該演算法名稱以創始人之一 1978年圖靈獎獲得者 史丹福大學電腦科學系教授羅伯特 弗洛伊德命名。通過乙個圖的權值 矩陣求出它的每兩點間的 最短路徑矩陣。從圖的帶權 鄰接...

弗洛伊德演算法 從某個頂點到其他頂點之間的最短路徑

弗洛伊德演算法 include include include include define infinity 65535 定義乙個無限大的值 define maxsize 50 最大頂點個數 include using namespace std typedef char vertextype 4...