关于弗洛伊德算法发现的怪现象:+ R6 W( [% `/ h
/ ~0 ^' e1 ]- a) h$ l( Y/ W* ?
我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 ) Q% Z) v# R8 c7 P8 x' [原来的弗洛伊德算法是: & l* X1 J8 P M$ u7 {' [8 N' \For k:=1 to n J% d6 p; u6 c
For i:=1 to n" \4 E$ D) E; U& Q
For j:=1 to n" @) r, Y! W. W# s( p k; T
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ; U# J) p& p5 ~ j! Y我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:, V6 \9 p" \/ y3 p
For j:=1 to n 0 i$ \) H- D7 w- P8 W$ E* E5 }5 B* HFor i:=1 to n. k4 K. B8 K- H3 o/ i
For k:=1 to n ' P O; o0 L- v: IIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];: G Z5 u. j+ m
我再改成如下形式,结果仍是正确的: " q- g+ J7 M9 fFor j:=1 to n ( }+ @. T' c3 H+ Q& y$ xFor i:=1 to j-1 4 m" i1 Q, W, p# H% \0 ^, H* {For k:=1 to n9 }7 ^3 g+ w" y9 j3 X
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; % [4 V, x# N# e+ w! x: P如果我改成如下形式,结果出错,不行了: 4 }8 y& J3 M% Z! F+ X! G2 F JFor j:=1 to n $ m1 M1 h2 e/ EFor i:=j+1 to n + b" \8 x) n% |9 B$ t! O! WFor k:=1 to n6 X. G$ C- d9 T" P1 x8 w
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; , r0 d( L4 K, f# Y5 x. K无法证明,只能用具体值来代入验证。2 m# U; l. F0 ^2 T+ E. E
9 H" _0 W+ S7 @; X: e
) I2 ^* N0 M, i& Q% B