1. 程式人生 > >MATLAB Floyd演算法求最短路

MATLAB Floyd演算法求最短路

在該演算法中,我們用鄰接矩陣的形式來儲存該圖。

因為在本次建模過程中,我們已經把資料輸入到excel中,

而matlab是可以程式設計來讀取excel和寫入excel的。若你的圖的

鄰接矩陣在txt中,也可以直接將txt拖入excel中讀取。

n表示維數

w表示該圖鄰接矩陣

clc
clear
n=32;
[w,txt,raw]=xlsread('E:\w.xls');
w(isnan(w))=0
%Floyd演算法求每對頂點之間的最短距離
M=max(max(w))*n^2;%M為充分大的正實數
d=w+((w==0)-eye(n))*M;
path=zeros(n);
for k=1:n
  for i=1:n
    for j=1:n
      if d(i,j)>d(i,k)+d(k,j)
         d(i,j)=d(i,k)+d(k,j);
         path(i,j)=k;
      end
    end
  end
end
d
path
xlswrite('E:\Path.xlsx,',path,'sheet1','a1');
xlswrite('E:\FILE.xlsx',d,'sheet1','a1');
ans=1