floyd算法用matlab求出d和path之后怎么调用自己所需两点的最短距离及路径

2025-02-26 03:03:31
推荐回答(1个)
回答1:

这是一个我写的Floyd算法的程序。w是图的邻接矩阵需要事先输入并保存在工作空间中,调用方法为:[D,path]=floyd(w)。给出的结果D为路径的邻接矩阵,path为路径所经过的端点顺序。

程序为:

function [D,path]=floyd(w)
%D R a
n=size(w,1);
%设初值
D=w;
path=zeros(n);
for i=1:n
  for j=1:n
      if D(i,j)~=inf
          path(i,j)=j;
      end
  end
end
%迭代,更新D path
for k=1:n
  for i=1:n
     for j=1:n
        if D(i,k)+D(k,j)           D(i,j)=D(i,k)+D(k,j);
           path(i,j)=path(i,k);
        end
     end
  end
end