|
这里给你个floyd算法的代码。 clear;
0 G. H) n/ R0 L+ I: t. g) l1 Oclc; %==========================================================================
5 F* ?# b& u q1 V; V# J* S2 J %输入你的对称矩阵
1 w2 G/ e+ n- `% `+ @; n%========================================================================== n=input('message')
+ e/ E2 Z, B! o7 w7 ww=zeros(n);
8 l E/ b4 ]7 m; O+ W3 A2 qw=[]; % 只需输一半,另一半用转置即可
7 Q4 M1 Z" Y0 p$ F# d1 H4 ~+ Xw=w+w'; M=10000000; %M 表示无限大 for i=1:n3 K/ S8 i! }! T& `; ~# k/ |* T; e
for j=1:n1 N/ I, p* G$ ?" [, K2 K
if w(i,j)==0 & i~=j1 f& D; D5 y3 W+ c3 [
w(i,j)=M;
0 z" v5 N4 T8 C9 T4 E end
6 j! A8 K( _; P) |* pend
" W1 u2 u% B, Z) x" |0 {end
, O- Z8 C% T9 B( f8 Q8 h$ {$ \ 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 |