|
这里给你个floyd算法的代码。 clear;
# s# _. ~0 T& [+ E' Wclc; %==========================================================================' b2 [0 I8 K V7 x. P3 a0 a2 _
%输入你的对称矩阵$ z6 e8 m% a6 k- ?' s( n0 g
%========================================================================== n=input('message')
q: ~5 \+ f! j( N7 U; zw=zeros(n);
' g5 b. Z! p6 K6 \w=[]; % 只需输一半,另一半用转置即可
# T/ j- x; U) U0 u* N, Yw=w+w'; M=10000000; %M 表示无限大 for i=1:n
7 f+ n6 T$ s1 x$ _ for j=1:n
X: J3 P2 G+ l" \% q0 z+ Y! N if w(i,j)==0 & i~=j
4 f' C6 a& E" [4 k w(i,j)=M; % h. p* p7 V7 b, W( ]6 R* T1 G% G" `
end
% E7 x- ]# L& I7 E7 x# b+ i' wend
! q8 F, x8 @2 q' vend C7 x; f; P. i. a: j
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 |