任意两点最短路函数

function [distance,path] = lumin(start,ends)
W=xlsread(‘lu’);%权重矩阵
% % W=B;
W(isnan(W))=inf;%isnan 判断数组元素是不是NaN
n=length(W);
D=W(start,:);
visit=ones(1,n);
visit(start)=0;
parent=zeros(1,n);
path=[];
for i=1:n-1
t=[];
for j=1:n
if visit(j)
t=[t D(j)];
else
t=[t inf];
end
end
[value index]=min(t);
visit(index)=0;
for k=1:n
if D(k)>D(index)+W(index,k)
D(k)=D(index)+W(index,k);
parent(k)=index;
end
end
end
distance=D(ends);
t=ends;
while t~=start&&t>0
path=[t path];
p=parent(t);
t=p;
end
path=[start,path];
% [distance,path]
end

发布了8 篇原创文章 · 获赞 0 · 访问量 137

猜你喜欢

转载自blog.csdn.net/qq_43620967/article/details/103328739
今日推荐