|
这里给你个floyd算法的代码。 clear;
O) O8 H/ p+ M. _% i/ nclc; %==========================================================================
, i; O& `3 L( k/ H; b %输入你的对称矩阵5 o7 A; Z5 s/ j
%========================================================================== n=input('message')
* D; j" O" {; c1 bw=zeros(n);
5 x& a* p7 f- X0 ^0 {: Cw=[]; % 只需输一半,另一半用转置即可/ X/ s% }! H% s1 ^# G) Z" g# P
w=w+w'; M=10000000; %M 表示无限大 for i=1:n
. x# t/ p1 \5 F6 g" G for j=1:n ?& a& r6 L" C, ^$ j
if w(i,j)==0 & i~=j+ Y6 o9 X4 _1 w7 u4 K" K& @+ ?
w(i,j)=M; # D/ R9 N r# }* H
end2 C$ c/ x; L: Y
end: E. C( p6 l3 B8 v( I2 V- O( d
end
" s) N% k7 ]1 ]. y 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 |