" M4 j% u, }( e1 M我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 4 h9 {+ R! E5 O6 w* F" s' ]原来的弗洛伊德算法是:1 p" Z: p4 C8 R. z& n4 Q
For k:=1 to n; u# ^# L; q- x; T- v
For i:=1 to n. i% ]% }' Q- |1 i% V) g7 p5 \) u
For j:=1 to n- I6 y- z0 k7 O# Y* W
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 9 `7 d9 g( `& w% I% B6 }; a# L6 h我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:! T% t+ U$ ^8 n3 g* ?+ J \, |
For j:=1 to n) p) _: t, e" Y8 } f
For i:=1 to n $ s) I q& O7 [# _" u8 s. d( h1 U% m' zFor k:=1 to n) s- [4 @3 L/ k% ^5 L
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];% z& q9 B. [! m. N5 J
我再改成如下形式,结果仍是正确的:5 r5 z- o$ Y) t( Y2 y
For j:=1 to n, p8 x5 u, ]2 ]/ T( V& T3 h
For i:=1 to j-1 7 Q; g. b" [. Z3 x3 zFor k:=1 to n: a+ k4 Z1 t- V9 @* y b
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ! P" w' H/ }. H+ t! A/ P如果我改成如下形式,结果出错,不行了:# N# M+ W) ^% G. n/ H3 C% {
For j:=1 to n1 O% G9 Q* |+ m5 g! l
For i:=j+1 to n* I5 f4 K" Z0 ]6 o: B# S/ S n
For k:=1 to n & `) z6 _" r) C- g7 U. @& yIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 2 h9 H* c r: s无法证明,只能用具体值来代入验证。 ! r( O" b* S4 K) S1 ~ 9 M) r, d# L5 X( g5 _6 O # t) } |- [1 r- ?$ l% M" \