在线时间 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
自我介绍 软件开发工程师
=========================================' y: A: t/ ~- G# H }
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程: D: W o4 z: r, E5 L
仍用数学归纳法,
1 \) E) L c& x5 C7 O 假设N<=n时,弗法正确。具体值我就不验证了。* a8 ]; R( W! Y7 v8 `6 n
当N=n+1时,假设最新一点最后一点为K,此时K=n+1,9 k+ ]+ W. O0 @
三重循环中,我们都把K排在循环中的最后一位。
! s! {/ m+ v; [: w+ `: m* G 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
# v! R- x. y0 ?8 x' X/ ` 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
& B1 K4 |% k/ @+ @ 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。! H0 O/ s9 P5 N
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。
) C3 x9 j2 o- P, i4 B0 q 经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。2 K0 X9 Z3 A$ J' W J4 ~
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
/ ^" F5 X% w4 M* @ 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,5 ?6 s; s4 r8 a# Q; L& ^5 [
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
5 [& O- K% \8 i 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,
; Z0 s- X: N5 O 所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。
9 }. v# f/ h8 ^7 y" \, J 所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
4 S2 A3 k/ ]1 j8 q7 m! h2 g1 n 这样,弗法就可以较为严格的证明了。
6 Z2 |, |9 r! ^, m6 p& x/ m =========================================
( z z: X9 \# r/ ^2 i) f 为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
) N4 C5 n: {3 S* O' `7 W0 B 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。7 ^1 d& n' o! \0 ^& {4 {' S3 o% ]
=========================================
( G8 m/ U: I/ ]$ k0 C4 c0 f0 _ 4 o3 A. a5 l7 R) [1 U' s
! e6 ]3 h J* y8 U' M
zan