关于弗洛伊德算法发现的怪现象: ' Z. D( Y# V9 ]0 b. i S) H9 E* R8 `" S- D* R3 z
我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 , k( l/ K4 K( T& l3 y7 o7 `% h7 Q, w原来的弗洛伊德算法是: 4 F4 l8 ~% j5 v8 i- G8 {' hFor k:=1 to n s* L1 v5 h, _$ B. B
For i:=1 to n , j$ m" q) l: y2 k s* WFor j:=1 to n3 [. N. m3 a. b0 j
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 8 e' m9 k! }0 O. E/ k我改成下面的形式,结果具体值代入仍是正确的,当然无法证明: " L, e) c; D( ?6 iFor j:=1 to n/ W* N# _# s I( {
For i:=1 to n! W( v+ W7 d( Q+ t- t$ J1 ]
For k:=1 to n" e" U/ d" c# R1 ~. N
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; " l) f" w# @1 o- k: l( P& y! j我再改成如下形式,结果仍是正确的:' O- e9 x- \( w
For j:=1 to n: j- r6 [2 j% m4 N& s/ P% z Q2 N
For i:=1 to j-1 6 @4 {) J4 U1 h% q6 X2 o/ q/ f7 sFor k:=1 to n + _6 b/ j7 L3 _7 JIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];% m/ n% M' C7 y' r$ h
如果我改成如下形式,结果出错,不行了:& Z9 u( u; Z5 b) j3 |1 c
For j:=1 to n ' E' O6 w$ t9 c F! b2 HFor i:=j+1 to n2 T; J$ D- i' } e+ }
For k:=1 to n1 i7 a; h9 ~/ w9 Y4 p
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];; H4 ^. {8 q4 w' F! `# d0 C
无法证明,只能用具体值来代入验证。- G0 q( g/ s: [; B) y$ o
* f$ x: l G7 i