|
这里给你个floyd算法的代码。 clear; $ w e6 X* p5 |) i5 s
clc; %==========================================================================/ y" s! ?: y& J {! |9 v5 E
%输入你的对称矩阵+ I4 q9 ?! E- P ^0 n/ d$ |1 G* Y
%========================================================================== n=input('message')2 A L, L- p1 r/ [8 A# z
w=zeros(n);& d2 d; q% k! \: N6 q4 C$ K
w=[]; % 只需输一半,另一半用转置即可
5 g* x# T! M& z1 X0 @ w- \4 C! Ww=w+w'; M=10000000; %M 表示无限大 for i=1:n# P+ @. w; ^; |/ x
for j=1:n
( j3 ]& @; r% a2 N% y a if w(i,j)==0 & i~=j
5 P& E4 Z( W$ j- U w(i,j)=M;
! F$ d% T3 M8 Y7 }! T9 h6 g& U end
. h; A7 x2 S& `4 z/ s$ x6 Lend
" L4 s* }+ C, F7 F3 V: }8 ]0 aend
: t9 _! M/ I3 C7 h$ Y" R 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 |