|
这里给你个floyd算法的代码。 clear; & q3 Q1 v. r" Z2 s
clc; %==========================================================================/ m8 i: _/ `. m6 k+ r$ ~) a
%输入你的对称矩阵
- R& P% Q8 q3 H1 r* y% b3 F- l%========================================================================== n=input('message'), X0 i, G: s2 b. d9 [5 H
w=zeros(n);
+ ]* }' a* e0 Ww=[]; % 只需输一半,另一半用转置即可 X0 V+ i0 Y M& b1 K
w=w+w'; M=10000000; %M 表示无限大 for i=1:n. g, l. ^/ U* K7 O( l0 p! f4 N
for j=1:n
. } M7 u( L% d9 U, p if w(i,j)==0 & i~=j
& }2 Q: {& Z- w1 I& D( [0 R w(i,j)=M; 7 f8 v, r0 M7 F$ {, \! I
end. c4 p- i# {: B0 r
end
1 c, @0 y4 B3 A$ t3 [) Y3 X+ Xend
4 R- c/ u* E {* W- G$ ?* d& ^ 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 |