" t }& M( Q6 f) p我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 0 s" @/ k* z- B! {7 y原来的弗洛伊德算法是:/ a p9 ?/ T* L5 K3 _7 S. S4 D! H
For k:=1 to n ! {9 c" _$ l3 O F8 D9 j) mFor i:=1 to n9 p+ C* P, o# @+ T8 S, L; g
For j:=1 to n 8 M( K& b$ e0 a0 C& S. hIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; # m+ U' \& A2 c! X, |0 @我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:; Y3 T# y2 y* v+ ~* Z& U
For j:=1 to n k2 Y6 Q* F$ a" e; [5 \3 q! u
For i:=1 to n 6 A, R% d- e) H0 n3 K4 m8 `, S, v9 eFor k:=1 to n2 ~! M, i8 G! z3 g0 S. B8 K
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 0 }$ w, q/ f4 h* M/ [ z+ e我再改成如下形式,结果仍是正确的:" ^4 o7 [7 X3 k
For j:=1 to n " b) J7 }4 m+ z7 p, |& A. d! Y( qFor i:=1 to j-1 7 Z0 a2 x! \3 l8 H/ tFor k:=1 to n3 |% [0 ]! u; H) k4 f
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];8 V0 K( z3 B: [8 `( [) n
如果我改成如下形式,结果出错,不行了:7 N( B k% z( p8 s# P# {0 J
For j:=1 to n& P( f5 n3 Y; F- q( V* U
For i:=j+1 to n . X( ]1 K" J R. {( tFor k:=1 to n / s" Y; a8 ]* Z; \; k" iIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 1 e2 K7 B6 l% t无法证明,只能用具体值来代入验证。) E' E2 ]- U N: {( Y3 a& ~
, B; N( p; A! o/ M