这里给你个floyd算法的代码。 clear;
' P# _3 `' y; R) [# tclc; %==========================================================================! J; c L, C( P+ ^8 I, J7 w! j
%输入你的对称矩阵
9 k8 k3 N N7 D; q1 s9 y3 c%========================================================================== n=input('message')
' \2 r! W' M5 y: c7 ^) l; Uw=zeros(n);
6 Z+ d& e7 b6 W h" Xw=[]; % 只需输一半,另一半用转置即可
- X% J t" \9 S" E( k% g. P xw=w+w'; M=10000000; %M 表示无限大 for i=1:n+ B. V q$ o3 x) ~; F( s$ r
for j=1:n& c. n1 ?6 N; G: C+ ]. b. e
if w(i,j)==0 & i~=j# K. h. }7 [: P4 c A( e9 P
w(i,j)=M;
/ i; s! o" }1 y/ D6 m6 g6 O7 d end; \$ D8 I8 P+ F! R/ B2 s
end, m' @: Z. E) v& ]' ~" W% ~
end! e( G" |# L5 L, e8 N# k/ S* C1 M
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 |