弗洛伊德演算法

2022-05-15 05:33:09 字數 1112 閱讀 3790

求最短路徑

#include using namespace std;

#define maxint 32767 //表示極大值,即∞

#define mvnum 100 //最大頂點數

typedef char vertextype; //假設頂點的資料型別為字元型

typedef int arctype; //假設邊的權值型別為整型

int path[mvnum][mvnum]; //最短路徑上頂點vj的前一頂點的序號

int d[mvnum][mvnum]; //記錄頂點vi和vj之間的最短路徑長度

//------------圖的鄰接矩陣---------------

typedef structamgraph;

int locatevex(amgraph g , vertextype v)//locatevex

void createudn(amgraph &g)

cout << endl;

for(i = 0; i < g.vexnum; ++i)//for

}//for

cout << "輸入邊依附的頂點及權值,如a b 3" << endl;

for(k = 0; k < g.arcnum;++k)//for

}//createudn

void shortestpath_floyed(amgraph g)//for

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

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

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

if(d[i][k] + d[k][j] < d[i][j])//if

}//shortestpath_floyed

void displaypath(amgraph g , int begin ,int temp )

}//displaypath

int main()//main

弗洛伊德演算法

弗洛伊德演算法 floyd 又稱為是插點法。目的是求加權圖中頂點中最短路徑的方法。本文通過舉例子的方法想你具體解釋何為弗洛伊德演算法。有乙個送禮物的問題,是csdn上的乙個題目,題目的詳情是這樣的。hehe和xixi在乙個地方玩遊戲,xixi把n 1件禮物 hehe以前送給xixi的 分別藏在了另外...

弗洛伊德演算法

floyd演算法詳解 求解任意兩點間的最短距離 floyd warshall演算法,簡稱floyd演算法,用於求解任意兩點間的最短距離,時間複雜度為o n 3 我們平時所見的floyd演算法的一般形式如下 1void floyd 注意下第6行這個地方,如果dist i k 或者dist k j 不存...

弗洛伊德演算法

弗洛伊德演算法 求任意一點i到任意一點j的最短路。分析 求i到j的最短路,大可以使用群舉法,因為點都是離散的,i到j的路徑是有限的,所以一定可以通過群舉法得到最短路,但群舉法卻沒太大意義,他的意義在於 把群舉法 通過修改 進行分類,得到好的演算法。flod演算法的分類標準是 通過i到j過點的情況進行...