( b8 n( m% _# k& _0 k我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 ; Z9 d. U0 g: H7 [3 @( m原来的弗洛伊德算法是: 5 c* P. ~, q! i/ i! TFor k:=1 to n * }( X# P! h7 ?3 F2 oFor i:=1 to n% v* r: d) T6 n; I" ~( m
For j:=1 to n ' d- r; ]3 i, c& ]& j1 {! \If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];2 x1 ?+ n- u! a0 `3 ]; u: K
我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:2 F2 p( w6 F! A% T( G( O6 Y
For j:=1 to n4 s! L# d$ x8 ~8 F3 m' z" }( ~
For i:=1 to n- S" z: ~/ l7 a
For k:=1 to n/ X3 \7 g( D1 G! z* S) r
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];! R* R, q& g, i. w! f
我再改成如下形式,结果仍是正确的:+ V0 `* y9 S/ Y7 ]# s! Q0 ^
For j:=1 to n+ o) y- Y1 F- z
For i:=1 to j-1 9 d+ S) G+ J8 K( R( S! n1 n" cFor k:=1 to n" D2 x$ g6 n) X4 _. G
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 7 D) q1 l$ l+ y) j如果我改成如下形式,结果出错,不行了:8 R6 u2 U. m; D; t
For j:=1 to n 5 L5 R; I4 } u; p( A& oFor i:=j+1 to n" e) d, p8 O3 C) \$ R Z, y+ A2 e5 D
For k:=1 to n. J: g; O' o. `3 `, m- }$ Z8 R, g
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ) c" Y O# t( T1 k' F无法证明,只能用具体值来代入验证。/ f' Z& f8 k6 u% L2 U- [
1 B2 r' ?4 ?4 L5 Z' G( }0 p
; p/ F: |, M w! ~8 H! O