关于弗洛伊德算法发现的怪现象: 4 g6 d& Y+ R' }; t/ h; ]/ m+ O6 k8 [8 B& J+ J0 h3 l; I9 G ]
我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 * c6 _3 I a' o; w5 [原来的弗洛伊德算法是:. t% J( s6 h: i+ @7 ]
For k:=1 to n * C" {9 @- } f0 Z2 b, tFor i:=1 to n$ w2 u$ v* Q9 J. G
For j:=1 to n 7 {' O2 M" q! o5 AIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];6 Z* O% W+ z: d$ q/ h( r X( _! Y) ?
我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:* M- o- }0 d8 m" T: s* G7 d2 B
For j:=1 to n' Z: x' \4 L6 ~; x# ^- {' o
For i:=1 to n" P6 T, B" U5 K/ s5 }8 X+ ~
For k:=1 to n 8 N5 u% ~; N: Z- |4 u5 V9 kIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];9 A) q& g) K6 G9 y/ ~. l3 u# E
我再改成如下形式,结果仍是正确的:4 | P5 |) Q9 z* r B+ {
For j:=1 to n2 [7 E. u2 i* h# ^9 I
For i:=1 to j-1 * h; t# y% r6 _4 T) j- \For k:=1 to n 4 j& }- N( x) H$ MIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 9 p- Z& c+ i, v如果我改成如下形式,结果出错,不行了:9 M& J4 K9 q6 n! }+ K
For j:=1 to n : F1 g5 A% a$ x: i0 LFor i:=j+1 to n . W( i8 C, _1 P+ @5 g: sFor k:=1 to n2 G8 c3 R H6 G! R1 c9 u
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];4 p* X2 Y* J' ]! ~8 w6 ?9 ]$ O+ ^
无法证明,只能用具体值来代入验证。/ `* N g- E6 Z7 y# s
G% q" x) z, f! m8 Z ; }! T+ Z+ |3 C9 K$ P8 u+ l" t0 l