最短路徑之folyd演算法

2021-06-12 15:56:22 字數 865 閱讀 6368

floyd演算法

floyd演算法採用的是(鬆弛技術),對在i和j之間的所有其他點進行一次鬆弛。 

if d[i,j]>d[i,k]+d[k,j] then

d[i,j]:=d[i,k]+d[k,j];

時間複雜度:為o(n^3);

演算法描述: 

a) 初始化:d[u,v]=a[u,v]

b) for k:=1 to n

for i:=1 to n

for j:=1 to n

if d[i,j]>d[i,k]+d[k,j] then

d[i,j]:=d[i,k]+d[k,j];

c) 演算法

結束:d即為所有點對的最短路徑矩陣

**如下: 

#include#include#includeusing namespace std;

int graph[6][6];

int path[6][6];

#define inf 1000

void show()//顯示graph

else graph[i][j]=inf;}}

for (k=0 ;k>i>>j;

in>>graph[i][j];

graph[j][i]=graph[i][j];

}///floyd 圖中點的編號1 ~5

for( i=1;i<6;i++)

其實這個演算法很挫,很簡單,演算法效率也比較搓,但是可以找出正權圖中每兩個點之間的最短路徑。

**貼完了 求挑錯,求打臉!

最短路徑演算法 最短路

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

最短路徑 之Dijkstra演算法

dijkstra演算法dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for in...

最短路徑 之Dijkstra演算法

dijkstra演算法 dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for i...