|
这里给你个floyd算法的代码。 clear;
8 G0 ?! H! q; C8 Aclc; %==========================================================================. R% Y2 |5 U: q) Q
%输入你的对称矩阵# Y- x- ]& Y" d& Y2 {: O! E) k+ W
%========================================================================== n=input('message')! c6 P# {5 O8 }! G/ v8 g" @* @
w=zeros(n);3 {+ b7 L9 g/ y
w=[]; % 只需输一半,另一半用转置即可: P# Y: R9 s/ r2 ?. B
w=w+w'; M=10000000; %M 表示无限大 for i=1:n" F. l/ g/ [8 v9 D
for j=1:n3 w% U! ~9 m+ }: }+ m- d4 d) r
if w(i,j)==0 & i~=j
. P+ J7 Q2 T& s+ ~) ?! z: O w(i,j)=M;
0 U" @) Y+ f/ Y* K7 R" } end- P" a [6 t2 N- V3 Y
end, j4 z* f( _8 X: [4 k6 N
end
% ?$ v6 A, }0 }* x7 O( s path=zeros(length(w)); for k=1:n for i=1:n for j=1:n if w(i,j)>w(i,k)+w(k,j) w(i,j)=w(i,k)+w(k,j); path(i,j)=k; end end end end w, path 你也可以参考: http://mathserver.sdu.edu.cn/html/sxjm/texts/chapter5/5_3.htm |