关于弗洛伊德算法发现的怪现象: ) f- S7 P- v B. C0 C 7 R$ g/ E# o9 \, q# O# g; H9 I我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。5 ^& s& Y# }5 I6 q" x3 n
原来的弗洛伊德算法是:) s1 l( I/ C8 N J' s% T
For k:=1 to n ) |( @. `4 b0 LFor i:=1 to n( H9 X+ p f7 b
For j:=1 to n( m1 n. Q3 G2 a: U' x( r; ^% z! V
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 6 V3 M* c" W8 z$ x( f6 ~1 l" F我改成下面的形式,结果具体值代入仍是正确的,当然无法证明: / A: l/ X5 l5 p& R8 h" B: }! JFor j:=1 to n - W3 J( M* ?) M# g5 c4 u9 r" A) T4 E) mFor i:=1 to n U# J0 W, o. IFor k:=1 to n" n/ d4 b0 x- L B3 i
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];7 ?: x+ C0 O8 }+ q5 @% ~
我再改成如下形式,结果仍是正确的:% b) }6 R- l+ E. E6 c0 S/ ]
For j:=1 to n/ h* P; [5 a2 G. g. Z
For i:=1 to j-1- f' B: I' D' Z
For k:=1 to n ' [1 e: H0 t8 N4 d$ NIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];- ]! o- \+ P ~, N2 u, q
如果我改成如下形式,结果出错,不行了: 1 ^5 u2 ^* f6 O9 z9 P1 p& ^: L; dFor j:=1 to n5 D: {# y6 l1 X7 m
For i:=j+1 to n8 N1 |# o" K/ g. j/ m* t
For k:=1 to n 5 u; p' H& T# E: z) d! K! o, HIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ( P$ ]( }$ _, i9 c无法证明,只能用具体值来代入验证。 & J1 Y5 J" q/ i) {3 D4 |7 o9 M1 ]% F: G% Y; ]6 S3 Z& o