|
这里给你个floyd算法的代码。 clear; . e1 k( P& D) ]( U/ D! J
clc; %==========================================================================, i( p! X' s' n+ b" g o' l- T
%输入你的对称矩阵. e; j# ~9 u% [9 A ~2 o8 Z
%========================================================================== n=input('message')
5 B/ Q% Z9 U& e7 u- vw=zeros(n);% w: m* o) V% A) Y! v8 z
w=[]; % 只需输一半,另一半用转置即可1 q( v/ A$ x* z: X# E
w=w+w'; M=10000000; %M 表示无限大 for i=1:n9 v0 l- R8 L; w
for j=1:n
1 j6 g/ R8 z' D# i8 \ if w(i,j)==0 & i~=j; {- ]2 U% p4 E; V, t6 D& s4 ]9 s& j
w(i,j)=M;
* h+ `* ~* q. H6 ~( t% e( N6 } end' p6 y( K: R4 c1 v9 H7 w8 \
end* ?* r8 }8 Y9 M) b+ Q
end) F: \/ V4 D: u$ B s. k$ d% [
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 |