|
这里给你个floyd算法的代码。 clear;
8 t' X$ ? P1 u$ n+ l9 fclc; %==========================================================================% v( b9 f; a7 ?' |# y: L
%输入你的对称矩阵6 i2 K( Z# t$ W& Q
%========================================================================== n=input('message')
$ |2 |/ y, |- l0 v. l8 |: R! C: \w=zeros(n);* B& T2 b, x8 u5 }3 k- C
w=[]; % 只需输一半,另一半用转置即可
/ B( n1 Z( O+ e- w+ P6 r$ D ^$ rw=w+w'; M=10000000; %M 表示无限大 for i=1:n
8 [5 X0 X4 g/ c5 H7 ` for j=1:n$ B+ y- d3 z- I
if w(i,j)==0 & i~=j$ ^; l4 x1 p8 j) L" J
w(i,j)=M;
) ?1 H) @! @0 W8 Z- i9 J, c; ^/ m end0 K( c) R2 d& U) r9 J
end7 Q1 V, n9 S6 \; n8 a
end. O! ~0 j" s& m; k: ?: p6 @
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 |