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 + -
显示快捷键?