关于弗洛伊德算法发现的怪现象: ) A. P9 l) `: u& `' h2 x# p& l) j) B# o {
我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。 y; K+ H. D0 z. D. e& ~3 U
原来的弗洛伊德算法是: * ?- z* y/ M, m* [% mFor k:=1 to n+ ?3 v0 T' _+ v
For i:=1 to n + g( b8 w2 B' ]% J- t! FFor j:=1 to n5 n+ u1 r/ c2 l3 @) F+ ?' X
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];; x# z+ G8 V5 h2 Z, R
我改成下面的形式,结果具体值代入仍是正确的,当然无法证明: $ v' P2 a& ^; n; YFor j:=1 to n d a! \3 g9 S- ~
For i:=1 to n4 m2 _3 Y8 e/ r+ r% h6 C
For k:=1 to n+ X6 k. V# M1 @# |
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; ) C- `9 [3 `. W2 o- J& N0 M我再改成如下形式,结果仍是正确的:' h4 ?2 h" T: K2 I! d
For j:=1 to n" _+ c# y' {' _
For i:=1 to j-1& K' N& z! B8 r2 }# N: T! x
For k:=1 to n+ R4 o% X3 ^/ k# p v
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];4 U8 |* q( \( g6 d" j
如果我改成如下形式,结果出错,不行了: 3 d% w' ?! C. u3 x2 ~For j:=1 to n8 X+ ~: x, k6 d9 R; Q
For i:=j+1 to n9 u. M3 {' H% D, S X8 J
For k:=1 to n / |+ T5 J/ }( s; hIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; " L9 w0 d m# a) _9 D) y无法证明,只能用具体值来代入验证。 $ `4 B5 b" L! x3 q' d" [* b8 k) D& I' Z7 [+ l7 T
8 J. N" I d6 A2 j( I0 T