在线时间 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
自我介绍 软件开发工程师
=========================================& s. X# G! W/ L7 G2 f, a' }! U
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
) p9 }( \) I- d% d% K 仍用数学归纳法,+ O/ q4 w6 _5 n% u; a% ?% @: \2 M
假设N<=n时,弗法正确。具体值我就不验证了。! F; G# l5 J. X
当N=n+1时,假设最新一点最后一点为K,此时K=n+1,* g5 x% Y0 b$ r/ _+ r
三重循环中,我们都把K排在循环中的最后一位。
; T) q$ Q% C- g8 S. T/ [ 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
" Y9 ?6 q j) u2 V 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
1 e. P" _/ q4 M; O; X5 D 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
; U5 `; @0 G0 X/ M& P 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。' b" u {' i$ S+ B
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。6 U' m8 V* c: u6 V1 G1 o- i2 Q ?
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
& z( `' A( ?8 p$ \6 c* h! j: D 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,* Q* q. Z$ O2 ?4 Y: v
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。! E0 g( l n$ F& s8 c+ p6 `$ Z: b
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,
* F# R/ U7 P F 所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。/ f9 B6 W5 K- M8 L, I! _3 ?
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
2 u7 N4 V/ t, K0 C' u5 l 这样,弗法就可以较为严格的证明了。5 L* ^* o+ a) d) R$ L
=========================================
# _! h& i" n+ P) e. ` 为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
; a6 }( q& \( ], \1 m( W 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
. [4 B9 P' W9 |( r! ` =========================================4 |9 K* `3 q# s( R
8 r+ G( a' @. y. b3 D! Z8 ^
# a, ~1 m# }0 t8 Z7 K) j: y
zan