关于弗洛伊德算法发现的怪现象: 5 |5 N, v7 Y4 v7 G1 W: D9 T2 ? $ E2 K# C6 `+ g1 j- ]我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 , F; A' a! ^+ s! |原来的弗洛伊德算法是:- Z/ ?+ l3 @* |' u9 j: o/ v; a% [
For k:=1 to n& m) o: K _, r7 {
For i:=1 to n; ^+ @( D3 O6 g, P
For j:=1 to n $ D* F% l! s' \ J0 {# CIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; % E4 d/ y( s: w/ D( p我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:) c6 ^( _7 e1 ?! G6 v
For j:=1 to n - v, x" K J1 g" K9 SFor i:=1 to n & D( \" i) c- u- j7 dFor k:=1 to n0 ~8 u- D) P8 k& j8 R, D5 m+ K
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 0 O* Q2 G9 U5 Y, s我再改成如下形式,结果仍是正确的:7 V- W* [1 W) D) ?% g
For j:=1 to n4 m, i0 o" x! v/ O, i! o( J/ L# F
For i:=1 to j-11 C" i: E) n& C8 m- ^5 F
For k:=1 to n 4 r1 e: {5 W# r2 XIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];: N4 q$ V: y8 h3 C
如果我改成如下形式,结果出错,不行了: / k- d8 G g. i- p% E( k* eFor j:=1 to n( {. d5 `* A3 }; Y/ w
For i:=j+1 to n 1 t4 B- O, w% M& Y) S+ PFor k:=1 to n " E8 M0 J- @- E. uIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];7 h0 ]) i& G/ H* l' X4 [
无法证明,只能用具体值来代入验证。 K$ @: a: M% r