( h- P+ X& a4 Z3 m/ b5 P我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 , c3 l8 X( k* _% v- A原来的弗洛伊德算法是:" V) K* {% S4 {, |! H6 u# }
For k:=1 to n% [: k5 a7 ]8 F! L
For i:=1 to n: ~. \" B t# m, A2 l
For j:=1 to n 9 m1 h+ G( X, L7 ~! A6 ~5 yIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; & E8 f2 A% R# R) m7 L4 f我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:2 A$ j/ V9 R* l0 i
For j:=1 to n S3 F# G$ N, c+ U r6 rFor i:=1 to n1 l! u, _8 t, d) @0 \, Y' E
For k:=1 to n% n- s7 r# U! h
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];! f; M8 _9 J/ w- |! i+ R1 q
我再改成如下形式,结果仍是正确的: $ q6 d' U7 X9 W" ?For j:=1 to n 4 r0 v) F" K* Y" x& k t& y' L0 f& iFor i:=1 to j-1 ( i- I/ ^# k, X; Z/ ^For k:=1 to n2 m) F% ]' f0 K$ O' y, w$ B% r6 [
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];& G! T8 _# N8 \8 I/ j' k' s
如果我改成如下形式,结果出错,不行了:# s1 X5 d; N# K
For j:=1 to n 0 m# O# v, p4 c, jFor i:=j+1 to n3 ]) @, I5 N3 F- L5 m9 C
For k:=1 to n& p0 ^7 N+ N9 p
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];4 U3 Y$ K# f k$ F |
无法证明,只能用具体值来代入验证。 % B) ~1 j e# ^. ^$ a0 {2 F# \ + U4 t% E- P& R, i3 |/ \" M9 z : H \" i! @5 o N$ |6 u8 W