|
这里给你个floyd算法的代码。 clear; 2 a* f( @( S! S7 Z& o# i
clc; %==========================================================================
# f- L3 r) k2 a) ^+ E) [! n$ D %输入你的对称矩阵* Q/ l( S% N+ ?5 F) S Z/ M+ \7 {
%========================================================================== n=input('message')
0 B# D2 p! u7 U5 X! X. f) ?: Qw=zeros(n);
& y5 d5 P5 {: I! J5 p/ Qw=[]; % 只需输一半,另一半用转置即可" a$ N7 Y) K/ k
w=w+w'; M=10000000; %M 表示无限大 for i=1:n$ H* n l, @% c* m# [5 B1 {& e3 Z
for j=1:n8 n. j3 w" u$ A2 U# f
if w(i,j)==0 & i~=j
7 _/ L( w/ d/ H5 [! M1 z8 [1 ] w(i,j)=M; ; n5 C0 V- v W; i( Z1 l( q
end
6 ^$ s& g5 u) N+ C/ _end$ h) C G. C# l$ Z
end5 S% Z; ?0 [2 I8 w. P
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 |