关于弗洛伊德算法发现的怪现象:# ~1 t F; A0 B1 A* }
) h1 F6 ~( X* F) J# q7 V
我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。& O& \4 i2 h: P( O. G
原来的弗洛伊德算法是:% d, S y& e$ A% u4 Y, y. y+ m
For k:=1 to n - u& T! e+ V6 s& m" z4 sFor i:=1 to n) a, g3 J" T# I) l
For j:=1 to n7 h+ N9 x- \% ?/ e" G
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; & v2 T3 Q2 q. ~5 o. V9 C1 f: D我改成下面的形式,结果具体值代入仍是正确的,当然无法证明: 7 h' u5 Z- s# Z3 c: E @For j:=1 to n ' s% ]1 F: A u) z0 z+ eFor i:=1 to n % `; j) L Q" ?8 p+ sFor k:=1 to n7 v8 o! H/ ^3 I D& ~& g
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ( P$ _& N4 M/ Y0 M# F7 h, r我再改成如下形式,结果仍是正确的: ) X9 t4 }% E4 Y2 BFor j:=1 to n0 m) q/ ~; H! L M! o" S# U' n# i1 U
For i:=1 to j-1 " t- C8 g* |9 f; C0 p) `For k:=1 to n' W( k4 V# k9 u& R3 {: A% F
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; + C) ?$ ]/ b! k7 _2 ?3 \4 w& \如果我改成如下形式,结果出错,不行了: ) a6 ^ I8 Q) s& l8 \' ZFor j:=1 to n7 S) \" A6 d: y8 [4 p# ]9 N
For i:=j+1 to n$ |( K" F# |* l4 J2 R
For k:=1 to n. Q7 [7 L- I+ ^. {
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];" \. _% j! \% D% n" D# D
无法证明,只能用具体值来代入验证。7 T# d4 i& q. F& @
& v2 w) J9 Y- O5 I. U