在线时间 138 小时 最后登录 2018-11-1 注册时间 2015-8-26 听众数 13 收听数 0 能力 0 分 体力 366 点 威望 0 点 阅读权限 30 积分 146 相册 0 日志 0 记录 0 帖子 70 主题 23 精华 0 分享 0 好友 17
升级 23%
TA的每日心情 难过 2016-5-14 14:04
签到天数: 18 天
[LV.4]偶尔看看III
自我介绍 软件开发工程师
=========================================
& h- h$ x# |/ b4 F- X; J% u K) } 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:4 V" ~8 x% \* {4 ^
仍用数学归纳法,
4 C1 t( n0 } s( d2 G' j 假设N<=n时,弗法正确。具体值我就不验证了。2 k0 q' t- p8 k2 M+ n2 j
当N=n+1时,假设最新一点最后一点为K,此时K=n+1,' u0 R! \: Y4 W; V! g& [
三重循环中,我们都把K排在循环中的最后一位。
0 o) x, d- f0 p 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
; A, @" M: S. a0 w8 `& O8 y 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
5 w3 S( w5 b3 p. v& f ^ 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
* {3 Y; t1 P: t& h* V 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。9 t7 t3 Y6 [% u# `) n
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。1 l6 B8 _& u% B, G* @
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。4 i4 _: ^4 d% P0 }
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,$ H) k7 V5 k) O( p- g( r
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。6 h& @4 c5 Q7 s: s) J; `$ i, Q
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,
X) ~0 K& X( G g- M# E5 z 所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。
3 A2 I6 x7 d! N [7 D 所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。# ~( A5 I6 W9 m) u# ?; S* l+ _. M
这样,弗法就可以较为严格的证明了。 G. c5 ^/ ^/ y! b8 O
=========================================: g. ?+ v4 z o$ W0 W Q
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???9 C3 X4 F) @' e
如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
1 l: r+ G6 ~7 F =========================================/ t) l+ b+ r$ |+ b! O5 X
" K- v7 o1 i) _/ t9 v8 S4 W
3 S: z6 c$ G- i
zan