floyd演算法的matlab實現

2021-10-25 04:23:41 字數 726 閱讀 4750

2018.8.29

經過計算後得到的可行的演算法,可以算出任意兩點間的最短路程

function [dist,path]=myfloyd(a)

%尋找i,j兩點最短路徑

% 輸入:a—鄰接矩陣,元素(aij)是頂點i到j之間的直達距離,可以是有向的

% sb—起點的標號;db—終點的標號

% 輸出:dist—最短路的距離;% path—最短路的路徑

n=size(a,1);

m=a;

for i=1:n %path矩陣的初始化

for j=1:n

path(i,j)=j;

endend

for k=1:n

for i=1:n

for j=1:n

if a(i,j)>a(i,k)+a(k,j)

a(i,j)=a(i,k)+a(k,j);

path(i,j)=k;

endend

endendfor sb=1:n

for db=1:n

t=path(sb,db);

dist(sb,db)=m(sb,t);

while t~=db

p=path(t,db);

dist(sb,db)=dist(sb,db)+m(t,db);

t=p;

endend

end

floyd演算法MATLAB實現

floyd演算法,簡單的來說,就是算出n個點任意兩個點之間的最短距離,類似於三角形任意兩邊之和大於第三邊,畫了個圖,圖咋不好看,注意領會精神 然後就可以,算出從a到b的所有距離,留下最優的那一組 即最小的 儲存,同樣,a和c以及b和c之間的距離也可以輸出,最後就可以得到3x3的乙個矩陣 3個地點,主...

多源最短路Floyd 演算法 matlab實現

弗洛伊德 floyd 演算法是一種用於尋找給定的加權圖中頂點間最短路徑的演算法。該演算法名稱以創始人之一 1978年圖靈獎獲得者 史丹福大學電腦科學系教授羅伯特 弗洛伊德命名。基本思想 通過floyd計算圖g v,e 中各個頂點的最短路徑時,需要引入乙個矩陣s,矩陣s中的元素a i j 表示頂點i ...

floyd演算法 多源最短路徑 python實現

floyd 弗洛伊德 演算法用來找每個點兩兩之間的最短距離 多源最短路徑 是典型的動態規劃 原理很簡單 乙個點 i 到另乙個點 j 的最短路徑無非有兩種 直接到達 i j 通過走其他點 k1,k2 kn 乙個或多個點到達 i k1 k2 j 所以找最短路就直接 比較 1 和 2 哪條路徑更短 資料結...