|
这里给你个floyd算法的代码。 clear; . j- S" E2 ?4 q
clc; %==========================================================================' A h% Y+ t% T% A
%输入你的对称矩阵9 m5 J/ d" l6 |
%========================================================================== n=input('message')* l' c l6 f& r% |, ?, ~& ?
w=zeros(n);
4 S) J! v3 \6 N0 [w=[]; % 只需输一半,另一半用转置即可
' N# Y. W% C+ _" Mw=w+w'; M=10000000; %M 表示无限大 for i=1:n7 R9 W }1 B+ f0 P/ i& Z- z) Z3 @
for j=1:n* o' e. S4 e4 n1 V
if w(i,j)==0 & i~=j
: ]& l9 V- l1 t! g w(i,j)=M;
9 w( p4 o* _8 x; a end. A2 J; A& P; V/ }6 y% K
end. B: y: @9 x3 s( [1 s) Q
end
: j i o% u0 S5 o7 Y* A0 N+ v 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 |