|
这里给你个floyd算法的代码。 clear;
" A- y% {+ ~. R) e$ R* n" ]clc; %==========================================================================$ M6 y& ~: t& R6 {
%输入你的对称矩阵
; ~* F% A9 p2 k% O%========================================================================== n=input('message')
% h+ l( l! h5 T& {+ p5 W+ l1 ww=zeros(n);
/ U; r7 o* ~9 q6 |w=[]; % 只需输一半,另一半用转置即可, k# q! V0 v4 F% a
w=w+w'; M=10000000; %M 表示无限大 for i=1:n: t- u) Z1 z- @8 f4 _
for j=1:n3 S$ E" Q7 }3 Y E0 k! O0 ?! ]
if w(i,j)==0 & i~=j' ~6 w1 p) @3 q: {7 I+ k" Y
w(i,j)=M;
- X' f% z: X; k" U' V end, c% g/ Y2 }. } O1 b, t
end3 n/ X2 b3 _/ R, ~3 H4 A
end& ^3 U$ M4 j2 U
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 |