关于弗洛伊德算法发现的怪现象: 9 R/ [$ \, P- G3 s% L7 w & p; h) P/ k: |! l& j( w- U' s P0 U我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 R, l" X2 x; D4 m原来的弗洛伊德算法是: 9 I) G; b* m2 A; A3 x5 ~3 |For k:=1 to n7 V) P& v+ T( s& b, @- I8 e
For i:=1 to n# e4 B; g" L ^$ I, ?# g1 V
For j:=1 to n - W9 q9 H: e! T7 K- r; p k: bIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];# [! ~, e- V$ C& F2 s9 ?
我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:3 M) r% y( c) Y @- X4 }* ?: g/ a
For j:=1 to n9 u# I' ?8 X9 ~/ ^
For i:=1 to n ( E" @' V9 @* x5 v0 ~; [, LFor k:=1 to n 3 }& F3 ]. g4 U# P) r* bIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];* i9 r# z6 J$ y( V
我再改成如下形式,结果仍是正确的:# F' |7 ?# v1 z
For j:=1 to n: X h- n* \* K U9 K. m( ?: z$ T. v
For i:=1 to j-16 `/ n" d0 f! F2 \, p5 c) m
For k:=1 to n4 x0 K! H. M0 C$ G h
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];* J6 p! l2 S& I$ m+ k
如果我改成如下形式,结果出错,不行了:: n7 P& _) e9 u$ U. b% l
For j:=1 to n ; p# u; A( w, z0 l1 MFor i:=j+1 to n $ z+ Z* t5 j; G2 f# d4 |$ nFor k:=1 to n/ h8 d3 N; v4 U: C
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 7 K( D% {: s l3 Y2 k4 a无法证明,只能用具体值来代入验证。 + |& w: M6 J8 H, i. t+ _8 t o6 p, X: L5 _, E% j
* R! j6 b% [1 I9 |