最短路的Warshall Floyd演算法

2021-06-06 18:02:42 字數 825 閱讀 1142

求賦權圖 g = (v, e , f )中任意兩點間的最短路的warshall-floyd 演算法:設 a = (aij )n×n 為賦權圖g = (v, e , f )的矩陣, 當vivj∈e 時aij = f (vivj), 否則取aii =0, aij= +∞(i≠j ), dij 表示從vi 到vj 點的距離, rij 表示從vi 到vj 點的最短路中乙個點的編號.

① 賦初值. 對所有i, j, dij = aij, rij = j. k = 1. 轉向②

② 更新 dij, rij . 對所有i, j, 若dik + dk j<dij, 則令dij = dik + dk j, rij = k, 轉向③.

③ 終止判斷. 若dii<0, 則存在一條含有頂點vi 的負迴路, 終止; 或者k = n 終止; 否則令k = k + 1, 轉向②.最短路線可由 rij 得到.

例解:用warshall-floyd 演算法, matlab 程式**如下:

d=a; %賦初值

for(i=1:n)for(j=1:n)r(i,j)=j;end;end %賦路徑初值

for(k=1:n)for(i=1:n)for(j=1:n)if(d(i,k)+d(k,j)r(i,j)=k;end;end;end %更新rij

k %顯示迭代步數

d %顯示每步迭代後的路長

r %顯示每步迭代後的路徑

pd=0;for i=1:n %含有負權時

if(d(i,i)<0)pd=1;break;end;end %存在一條含有頂點vi 的負迴路

if(pd)break;end %存在一條負迴路, 終止程式

end %程式結束

最短路 求最長最短路,求最短路的路徑

hdu 1595 find the longest of the shortest include include include include include include include include include include include include include defi...

最短路 最短路徑問題

題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...

最短路徑演算法 最短路

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