|
这里给你个floyd算法的代码。 clear; + f! G7 I/ R1 l) t6 b/ p; t
clc; %==========================================================================) o$ X& g) m5 _6 n1 D) J, {. l
%输入你的对称矩阵
* s9 n+ v" b. ]$ X& i- [& ?%========================================================================== n=input('message')' b$ `% V3 M7 D4 B+ R8 F
w=zeros(n);5 I6 R; p- ], I! F( }0 I# z
w=[]; % 只需输一半,另一半用转置即可) H7 f7 Y; t2 Z" {! k
w=w+w'; M=10000000; %M 表示无限大 for i=1:n
; F4 w, v0 r/ ~! m9 L" m for j=1:n
3 A, t: ]6 X& m4 l) l; P if w(i,j)==0 & i~=j( [! r- { \% p% d
w(i,j)=M; ) ?4 t5 V! i4 l3 \+ M: n. f
end' `) b. R. I3 S0 e- \# j0 ^
end6 p, N( x, ?9 C7 G. ?
end( k9 o9 b, @7 Q7 q8 }
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 |