|
这里给你个floyd算法的代码。 clear;
8 }- @$ m* V% S- o; R& U2 d, @clc; %==========================================================================) f1 f! i1 h$ B' H
%输入你的对称矩阵0 `! m4 M2 v |/ V
%========================================================================== n=input('message'). e$ f2 g# U% X3 X1 R( K
w=zeros(n);
3 E: [/ @; p& j( r+ Ow=[]; % 只需输一半,另一半用转置即可" r( c8 H5 x5 K+ G. e4 u
w=w+w'; M=10000000; %M 表示无限大 for i=1:n2 B/ @2 w' h l; L) Q; X' ~
for j=1:n$ h* Z9 m8 ?* W1 c9 h( v. g, d
if w(i,j)==0 & i~=j: O' g g; u# j. ^3 | m
w(i,j)=M;
R: _3 j/ U- c0 x9 C end
k% W& T" W Q) Pend! t$ |- f) n2 K @
end! R2 @2 V6 d$ C& V7 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 |