function dijkstra()
n=10; % 节点个数
a=ones(n)+inf;
for i=1:n
a(i,i)=0;
end
a(1,2)=8; a(1,3)=5;a(1,4)=9; a(1,5)=2; a(1,6)=4;
a(1,7)=2; a(1,8)=6; a(1,9)=7;a(1,10)=2;a(2,3)=9;
a(2,4)=5; a(2,5)=7; a(2,6)=8; a(2,7)=1; a(2,8)=8;
a(2,9)=4; a(2,10)=2; a(3,4)=7; a(3,5)=9; a(3,6)=1;
a(3,7)=7; a(3,8)=2; a(3,9)=2; a(3,10)=7; a(4,5)=3;
a(4,6)=7; a(4,7)=1; a(4,8)=7; a(4,9)=5; a(4,10)=8;
a(5,6)=8;a(5,7)=1;a(5,8)=6;a(5,9)=5;a(5,10)=5;
a(6,7)=9;a(6,8)=4;a(6,9)=8;a(6,10)=6;
a(7,8)=8;a(7,9)=6;a(7,10)=1;
a(8,9)=1;a(8,10)=1;
a(9,10)=1;
for i=2:10 % 设置为对称矩阵
for j=1:(i-1)
a(i,j)=a(j,i);
end
end
% the main program
for k=1:9 % 节点循环,依次寻找与后节点的最短距离
% k=1;
b=[1:(k-1),(k+1):n]; % b矩阵为除去自身节点外的其他所有节点标号,b矩阵是逐渐减小的
kk=length(b); % kk为b矩阵的长度,kk值逐渐减小
a_id=k; % a_id从自身节点标号开始,也是变化的
b1=[(k+1):n]; % b1矩阵为自身节点以后的节点标号
kk1=length(b1); % kk1为
while kk>0
for j=1:kk1
te=a(k,a_id)+a(a_id,b1(j));
if te
a(k,b1(j))=te;
end
end
miid=1;
for j=2:kk
if a(k,b(j))