shortroad.m
来自「Matlab源程序求任意两点间的最短距离」· M 代码 · 共 33 行
M
33 行
%求点k0到w中其他任意点的距离
%d表示点,按到k0点的距离从小到大排列
%s(k)表示k0点到d(k)点的距离
%road(k,:)表示从k0到d(k)点的最短路径
function [d,s,road]=shortroad(w,k0)
w(:,k0)=inf;
wh=size(w,2);
road=zeros(wh);
road(:,1)=k0;
for k1=1:wh-1
[s(k1),d(k1)]=min(w(k0,:));
thp1=w(d(k1),:)+s(k1);
w(:,d(k1))=inf;
for k2=1:wh
if thp1(k2)<w(k0,k2)
w(k0,k2)=thp1(k2);
thp2=road(d(k1),:);
thp2(1)=0;
thp3=thp2(thp2~=0);
thp4=[thp3,d(k1)];
road(k2,2:length(thp4)+1)=thp4;
end
end
end
for k3=1:wh
thp5=road(k3,:);
thp5=thp5(thp5~=0);
road(k3,length(thp5)+1)=k3;
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?