关于弗洛伊德算法发现的怪现象: . z: l& v. n& w! W d 7 \ A5 M+ a! m; m! _4 r& o我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。# Y' o4 W8 \- h8 p# V0 y6 a0 t: y
原来的弗洛伊德算法是: ' n7 [6 ?0 C7 z A+ A z3 PFor k:=1 to n 5 a: T2 j4 P3 k8 t" U. gFor i:=1 to n a, b8 k/ G& X6 yFor j:=1 to n: b" p1 t+ u" D
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 9 h' d s% R. E我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:9 h( n: }& Y; R! Y
For j:=1 to n5 a$ m# _3 p- U3 k
For i:=1 to n9 O3 t5 K0 |% \. |
For k:=1 to n6 u6 k. r" c/ `- I1 |% e
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 2 `& g6 o% e* z6 H* ^5 Y3 n& r- V我再改成如下形式,结果仍是正确的:9 H. v3 y" S1 }5 S3 K
For j:=1 to n# a G" s3 l" S# h3 T" D0 P+ m
For i:=1 to j-19 L7 |, }+ }( E! q) R
For k:=1 to n/ M. M. D" g8 n
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];/ ~2 [- T$ L0 q$ N$ N7 \
如果我改成如下形式,结果出错,不行了:9 K5 b% i: N4 a. @; R7 z+ H/ `
For j:=1 to n8 N1 g8 g, J* @- v/ B+ t: N
For i:=j+1 to n ' V9 v: \( U5 m! i6 JFor k:=1 to n9 W7 \ ^- w3 U b* m) o
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ( q5 n+ G4 A. @+ u无法证明,只能用具体值来代入验证。- G$ ]" {8 u; N+ q1 t% S$ l
! m; ?2 Y0 c5 z% p$ \* j. j! r g) T6 m % n A- r* G, b4 D* w( u