关于弗洛伊德算法发现的怪现象:6 _5 k' ?9 _- z0 U( a. ?& i/ i
4 S o$ O; u3 D& }/ @1 |1 l8 v
我在用实际顶点代入验证的基础上证实如下现象,无法用理论解释,个人感到弗洛伊德算法象哥德巴赫猜想一样,无法证明的。/ [ b3 i4 A8 `) F) A
原来的弗洛伊德算法是:7 T$ q, `# ]: [
For k:=1 to n " b5 V5 z& r3 I5 w7 A( T- j: ^. h+ f# zFor i:=1 to n" x# I W3 F" l& D- ^
For j:=1 to n( ~) a: b$ b/ B" i6 m
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 6 N; G2 _: a8 G, t: M5 N我改成下面的形式,结果具体值代入仍是正确的,当然无法证明:) y$ l5 o1 m8 `. f( d5 J& s9 o
For j:=1 to n 8 k- s: \$ K& G# O- ?For i:=1 to n. d# h5 F, a+ [3 e3 H* |6 m9 |& Z
For k:=1 to n- E! Z; U$ @1 S7 D- x) [2 O
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j]; 3 p& |4 u% h4 H. h' g我再改成如下形式,结果仍是正确的: ' i3 b' t, ^0 z% yFor j:=1 to n 1 E- j; |: t$ j- u, PFor i:=1 to j-1$ i9 `; u! v" g% @4 l
For k:=1 to n / T8 Y9 L) L' z/ u1 o1 P: q- T7 GIf D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];/ S, S7 w9 r( D$ S9 e4 [' k
如果我改成如下形式,结果出错,不行了: ) j3 G% `& C) w6 P& vFor j:=1 to n - [1 b! P" V4 E. Y! W, OFor i:=j+1 to n& L- `( b% g* u) J6 y$ r
For k:=1 to n5 |# q3 v) k& `. B5 N2 u, h: u
If D[i,j]>D[i,k]+D[k,j] Then D[i,j]:=D[i,k]+D[k,j];1 [9 Z* T6 a e6 u! h( ]; Q
无法证明,只能用具体值来代入验证。% p+ I7 e# @& T' N: y# Q# }. V9 t
2 q& F2 j3 U; j, g5 \8 O' W( h
, J2 z9 B6 O" I