|
这里给你个floyd算法的代码。 clear; & s" g7 `* j# M* `' t; u; K
clc; %==========================================================================
2 Q. I6 H) c3 i' y2 T1 z %输入你的对称矩阵$ W# M; A0 Q. s) B3 i- S, z
%========================================================================== n=input('message')8 X% R: b+ X! B2 C
w=zeros(n);9 ^! ~6 l% [ d: m" I% R8 ~
w=[]; % 只需输一半,另一半用转置即可
+ W2 i; L& a3 s9 ]; m1 z, H+ f* h4 Q& gw=w+w'; M=10000000; %M 表示无限大 for i=1:n* b: h/ I( a/ E5 E$ P6 n/ i
for j=1:n9 G9 S. x: N m; G4 @; C" b; b
if w(i,j)==0 & i~=j
$ ]3 j8 f% H5 o& z$ Z4 S w(i,j)=M;
9 [ V6 I3 A- B end# M) K% Q/ S) t1 y( a- ?
end ]2 I4 C1 ^8 q$ W3 R9 }
end
! u$ C" ^+ z, H+ P 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 |