|
这里给你个floyd算法的代码。 clear; 7 n! f; [! z3 n# a
clc; %==========================================================================
* t/ i! Z3 d$ }$ m1 W. ~8 r8 U# G %输入你的对称矩阵: }0 B' f; u& n9 n/ g( Z
%========================================================================== n=input('message')% u7 U( G" S# F0 ?) I% R3 |
w=zeros(n);7 U, I8 C* G# q5 h, ~- E: ^. U
w=[]; % 只需输一半,另一半用转置即可
& b1 m. M" Z4 Ow=w+w'; M=10000000; %M 表示无限大 for i=1:n
O( G! ~3 h r) X for j=1:n7 ^' f( X( j/ a3 l% \+ U
if w(i,j)==0 & i~=j% |" W4 p5 U0 E; T+ X+ f5 t6 u
w(i,j)=M; + Z$ K5 z% Q- P6 {: L( }
end8 x) F) V, G5 A
end
$ t _9 _6 R: `. k, N1 K9 Wend
' f, p3 H5 F9 c 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 |