|
这里给你个floyd算法的代码。 clear;
# w/ u9 |& Y. L" l- Y# vclc; %==========================================================================3 j; O2 x5 C: p6 n% N: P0 v) q
%输入你的对称矩阵' N; m% w' i6 v. n
%========================================================================== n=input('message')& g+ a. ^9 x2 M5 s9 y" ^! d' V
w=zeros(n);
, C7 a B) |" \/ z2 m" ^w=[]; % 只需输一半,另一半用转置即可
' c( I+ e j. g7 j$ N# J" `* Aw=w+w'; M=10000000; %M 表示无限大 for i=1:n
! j& D% t' B) b7 c! E6 ?) ]+ c for j=1:n2 {9 s- p/ g- |
if w(i,j)==0 & i~=j! Q! J: V. y9 _& t" M1 c* C+ w9 l
w(i,j)=M; $ M. @+ S- }0 t% f8 _
end
+ y; V! j& b$ f+ aend+ z1 h1 M& |4 K9 S4 {# S/ `
end" k6 |$ s7 F+ r6 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 |