|
这里给你个floyd算法的代码。 clear; ( e" h5 f) r# Z' X2 M: @! L
clc; %==========================================================================
7 p1 y1 {( _% j5 ^ A %输入你的对称矩阵5 D0 s; S6 V6 P: ^9 X! k
%========================================================================== n=input('message')
- X& Z6 S% G. r3 o: Ww=zeros(n);
* e/ q3 V0 x$ y9 n8 c% Tw=[]; % 只需输一半,另一半用转置即可
! X# c. O' z! }: p% @, Yw=w+w'; M=10000000; %M 表示无限大 for i=1:n
2 b# u! S6 M# @6 v* \* j for j=1:n
0 r- U1 c- `% E5 T+ { if w(i,j)==0 & i~=j
/ F) E, h/ Z9 o- F& k w(i,j)=M; 9 g( Q8 j3 v0 ^. K2 J7 e4 J/ X M- M2 x
end
% Y/ x% u Y+ w4 v: W+ jend: B+ n% G5 H; }! {3 v0 K
end
' x6 v; U3 n( l: z, l; l0 F) o# n 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 |