|
这里给你个floyd算法的代码。 clear;
# b) J# e5 w+ p, G: Zclc; %==========================================================================
" K4 t, t7 l7 R' ~" K- y %输入你的对称矩阵
$ w' W0 B8 [4 Q) `' P, b4 @, q( U%========================================================================== n=input('message')
8 b1 T0 X4 @9 q- S" Y: W ^w=zeros(n);6 C7 @! E( l4 i
w=[]; % 只需输一半,另一半用转置即可5 |* t$ u& J3 a' q- w
w=w+w'; M=10000000; %M 表示无限大 for i=1:n
( Y/ u. F+ r/ e6 ^) X' B for j=1:n" }" g) i$ X- B+ w1 }% E; `
if w(i,j)==0 & i~=j ~: R- i' C& s/ c
w(i,j)=M; # ]5 A( y4 J2 g8 N, h% v; V
end
% A6 \& K$ @6 Q8 F z( r. F2 Tend/ N1 j% V' I8 e; }8 D# k. l
end1 i# N* N5 W2 ^% t f5 k
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 |