关于弗洛伊德算法发现的怪现象: 9 ?3 _% {6 L9 N8 j. ~$ r. G 9 }, T7 I3 F! k; x. F$ M! g, I, f我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 & K& m* K: q& @# i6 z6 Z& t原来的弗洛伊德算法是: 8 P& c& {' U2 R* oFor k:=1 to n. \% ^& ?! r! V7 A; L$ i
For i:=1 to n$ k3 H e, ? t3 W
For j:=1 to n- t1 N4 S2 V6 P& y B |* e8 O
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; , W" c' |6 m) _我改成下面的形式,结果具体值代入仍是正确的,当然无法证明: " {2 E1 T7 O( q0 r$ zFor j:=1 to n) q1 ^4 N8 r" h+ E5 C9 s, X
For i:=1 to n" T: C% R# i7 v$ L4 v
For k:=1 to n ]; ^4 F. L# b) dIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];/ j1 A4 @) e0 z& \
我再改成如下形式,结果仍是正确的:+ W! M% o% a4 `5 E5 \2 o
For j:=1 to n ; j# r" g" j4 F: Z6 j0 b iFor i:=1 to j-1 ( o1 J: C% v; Q# ~2 u* ^/ ~For k:=1 to n2 ~' I3 |/ _$ t& \+ E7 `. @/ u3 {
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];. c' ^; E/ @" q/ l7 x9 o* {
如果我改成如下形式,结果出错,不行了:4 G# B/ Y w2 a/ T! ]* J
For j:=1 to n - H4 O x' B5 _5 e8 S- s, ^For i:=j+1 to n9 N$ O5 l& r# k, F' }3 f3 y- ]* c
For k:=1 to n & R; [ g4 m) R+ `+ n$ f; p9 lIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];# b/ v0 Q5 z% {
无法证明,只能用具体值来代入验证。 4 E0 S3 I, ]; v/ O( U, d ; F# O: }4 H7 o2 O, t8 W1 p+ z" V! l) J* Z/ p, ?( ^