function P=Dijkstra(D,vs)
[m,n]=size(D);
P=[vs,0,0];
T=[1:n;inf*ones(1,n);zeros(1,n)]';
wz=find(T(:,1)==vs);
T(wz,:)=[];
s=length(T(:,1));
while s>0
for i=1:s
if P(end,2)+D(vs,T(i,1))<T(i,2)
T(i,2)=P(end,2)+D(vs,T(i,1));
T(i,3)=vs;
end
end
wz=find(T(:,2)==min(T(:,2)));
P=[P;T(wz,:)];
T(wz,:)=[];
s=length(T(:,1));
vs=P(end,1);
end
matlba关于Dijkstra算法(暂时不太懂,学会了再说)
于 2024-04-10 21:25:51 首次发布