|
这里给你个floyd算法的代码。 clear; 7 r" h$ J: p8 }9 l+ |& e
clc; %==========================================================================
$ A; E* X0 E, f %输入你的对称矩阵
* N5 F% d5 n5 _4 b%========================================================================== n=input('message')9 y9 a- @; K6 [ z$ J- j8 m
w=zeros(n);
- D$ }" N" J5 h& l" r6 Nw=[]; % 只需输一半,另一半用转置即可8 Y# F# o9 n& Y+ X7 B% `) V
w=w+w'; M=10000000; %M 表示无限大 for i=1:n
# R9 y. J/ c0 { for j=1:n
# @! s* f$ Y. i if w(i,j)==0 & i~=j' f& S! z1 H, ^
w(i,j)=M; 9 `" v8 p `9 q: G* r
end
' l: W2 y; R+ f* m5 n' N, cend0 }! E! x3 q1 ?4 ^
end
' {) H0 v7 ^# i$ W# W b 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 |