求邻接矩阵任意两点间的最短距离。matlab。程序在下面有没有哪位大神能给解释一下后边的是什么意思%Dijkstra最短路算法Matlab程序,用于求从各点之间的最短路距离
%D为邻接矩阵需要输入
%d为s到其它各点最短距离
%pre记载了最短路径生成路线
clear all
clc
D=[0 6 inf inf 5 6 inf 5 inf
6 0 9 inf inf 9 inf 3 inf
inf 9 0 7 inf inf 4 inf inf
inf inf 7 0 6 4 6 inf 3
5 inf inf 6 0 5 inf inf 4
6 9 inf 4 5 0 5 inf inf
inf inf 4 6 inf 5 0 inf inf
5 3 inf inf inf inf inf 0 inf
inf inf inf 3 4 inf inf inf 0];%这是邻接矩阵
[m,n]=size(D);%m行n列,这里m=n=9
E=zeros(m,n);%E为任意两点间最短距离矩阵
for s=1:m
%当s=1时,就是求1这个点到其他各个点的最短距离,同理,当s=2时,……=9时。
d=inf.*ones(1,m);%初始化
d(1,s)=0;%s点到s点的最短距离为0
ok=zeros(1,m);%初始化,用来记录已经求得最短路径的点
pre=zeros(1,m);%初始化
while length(find(ok==1))<m
minD=inf;
for k=1:m
if ok(k)==0&&minD>d(k)
minD=d(k);
y=k;
end
end
if minD==inf
break;
end
ok(y)=1;
for i=1:m
if D(y,i)~=inf
alt=d(y)+D(y,i);
if alt<d(i)
d(i)=alt;
pre(i)=y;
end
end
end
end
E(s,:)=d;
end
我不懂什么算法,只知道这个现成的可以算出来,可我又看不懂啥意思
能给解释下后半部分吗