D(i,j):i到j的距离.
R(i,j):i到j之间的插入点.
输入: 带权邻接矩阵w(i,j)
function [D,R]=floyd(A)
n=length(A);
D=A;
for i=1:n
for j=1:n
R(i,j)=j;
end
end
R
for k=1:n
for i=1:n
for j=1:n
if D(i,k)+D(k,j)<D(i,j)
D(i,j)=D(i,k)+D(k,j);
R(i,j)=R(i,k);
end
end
end
k
D
R
%D=[0 7 5 inf 9;7 0 2 inf 6;5 2 0 2 inf;3 inf 2 0 6;inf 6 4 6 0]
end