7 @* [6 f7 D. A4 K% E, _+ L我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。8 z& w* `& y1 h7 Y4 F$ x* L" M) j6 X
原来的弗洛伊德算法是: * i5 Z* p' p! NFor k:=1 to n ! K( y a+ t* D; N/ Y* PFor i:=1 to n' s* v, g# ?9 W' i3 o& V# T9 i! x
For j:=1 to n% a) w! `/ R3 E
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];, l3 f4 e4 r3 G; e
我改成下面的形式,结果具体值代入仍是正确的,当然无法证明: 7 E( j! a% v) t1 sFor j:=1 to n# b4 Z8 j6 a0 i/ O3 c
For i:=1 to n" D1 g2 a( V0 I! A
For k:=1 to n 0 J5 v w( n) l# m$ F: {) uIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];& \& E( v# L* Z" V
我再改成如下形式,结果仍是正确的:9 i+ G6 J# c2 u3 u
For j:=1 to n ) x |( K0 [8 q" n. M6 UFor i:=1 to j-1 + Y; o2 n% M! }5 H1 Z/ N& ~. BFor k:=1 to n " X! i3 Y* S9 Z6 m6 m0 NIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];# w4 U s/ g8 G7 e& W1 x
如果我改成如下形式,结果出错,不行了:5 Y* y$ }: I# ]+ {) i
For j:=1 to n $ t2 h) G2 i: HFor i:=j+1 to n$ y# s9 a& V6 P) X* H0 |
For k:=1 to n8 _1 l r C$ `0 V
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ! p/ R: s6 I/ h: o$ L/ m无法证明,只能用具体值来代入验证。 * o7 f% {0 O0 C& m8 S9 ~, T P . C$ w; M8 ^% I6 z 7 }7 r; c/ d+ N- |8 d0 Y