|
这里给你个floyd算法的代码。 clear;
4 Q( b Z2 Q0 ~! U# o. @7 ~2 Oclc; %==========================================================================' v2 j- w2 Q5 B u1 x. ?
%输入你的对称矩阵- \" x) \1 n1 u4 h; z
%========================================================================== n=input('message')3 U4 H* R/ ?7 T2 L4 X7 y6 g
w=zeros(n);
6 Q8 V" S. r: `; ow=[]; % 只需输一半,另一半用转置即可% g, `: i* k7 _2 H3 I
w=w+w'; M=10000000; %M 表示无限大 for i=1:n6 x" o! l$ E C U: i
for j=1:n6 R/ q9 o0 _" I$ m0 A8 R8 P1 g
if w(i,j)==0 & i~=j3 G, `5 P8 O- Y p, @ d2 W9 j
w(i,j)=M;
( J9 e) `2 _# o0 C end+ g5 Y& X$ Y D. U8 l$ n
end9 ~; F* L% I! `6 {9 J& q/ _6 ~
end# ~" b& t5 `# A' B" j
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 |