|
这里给你个floyd算法的代码。 clear;
& U, g7 r7 G( e9 ]clc; %==========================================================================
. ~0 E2 ~) z' m$ ` %输入你的对称矩阵9 e' ]2 _6 d: _# {+ b
%========================================================================== n=input('message')8 ~; d2 a3 V3 r
w=zeros(n);
# j0 i; J& k: bw=[]; % 只需输一半,另一半用转置即可
' ]& M8 c1 \1 C# \3 A0 w- v; Xw=w+w'; M=10000000; %M 表示无限大 for i=1:n# }* Y' @9 c3 K8 M$ ~7 J: \, G
for j=1:n
" N' ]. y7 [/ L if w(i,j)==0 & i~=j
9 v% W* v# |% m' e) x. X w(i,j)=M;
; _! B! j8 P* C, I( p end
7 j* g3 z# h) C8 S+ r- p; x' Nend
% c4 ^9 H! q6 X7 a/ Q% Iend, b! v/ `: r/ K( q: s+ Q
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 |