|
这里给你个floyd算法的代码。 clear; 5 i2 ?$ V# v5 w& w6 K( q7 s
clc; %==========================================================================$ F( H+ \( j2 s6 f; H# B) ?
%输入你的对称矩阵7 T+ i4 V; `9 Q' ^
%========================================================================== n=input('message')9 f! r2 J* _5 {
w=zeros(n);
0 s. Q5 v1 V* H4 R f3 Q! B9 D2 Aw=[]; % 只需输一半,另一半用转置即可- j7 c2 _& ]& Y8 Z
w=w+w'; M=10000000; %M 表示无限大 for i=1:n
0 j$ g* Z5 N; i% W+ e for j=1:n
% I5 C8 i1 M( m# S- F# j1 R if w(i,j)==0 & i~=j
8 E& |1 h: \) X. W; r% i" V" K% J w(i,j)=M; ( W- D' |9 o; p5 _" O, ]; ]
end0 q% H3 T4 l) b6 V6 z1 l* s! n: d
end( V2 I5 ]6 L; n8 O2 r/ V
end
+ A' O$ e c1 H& ~' U9 F% X L 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 |