基于matlab的floyd算法matlab计算最短路径.docx

基于matlab的floyd算法matlab计算最短路径.docx

基于 matlab 的 floyd 算法 matlab 计算最短路径 function [d,path]=floyd(a,sp,ep) % floyd - 最短路问题 % % Syntax: [d,path]=floyd(a,sp,ep) % % Inputs: % a - 距离矩阵是指 i 到 j 之间的距离,可以是有向的 % sp - 起点的标号 % ep - 终点的标号 % % Outputs: % d - 最短路的距离 % path - 最短路的路径 % a =[ 0 50 inf; 50 0 15 ; Inf 15 0 ];% a(i,j) ,从节点 i 到 j 之间的距离 % [d,path]=floyd(a,2,5) sp=3; ep=1; n=size(a,1); D=a; path=zeros(n,n); for i=1:n for j=1:n if D(i,j)~=inf path(i,j)=j; %j 是 i 的后续点 end end end 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)=path(i,k); end end end end p=[sp]; mp=sp; for k=1:n if mp~=ep d=path(mp,ep);

文档评论(0)

1亿VIP精品文档

相关文档