在线时间 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
自我介绍 软件开发工程师
=========================================
@# a* V6 Q" @ 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
+ y( {; U( A2 p) A4 g4 ~5 y 仍用数学归纳法,: ~/ U* ~. v5 F( E
假设N<=n时,弗法正确。具体值我就不验证了。
3 [7 o2 y3 L3 N7 V9 ]: P 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,7 }6 S7 ]$ J0 \) B* ~/ J% \$ @
三重循环中,我们都把K排在循环中的最后一位。
& V6 f. d5 x8 y, E: \ 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
0 M- _# l# Y8 d6 X I 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
2 n' @7 L" F$ Q& \+ ` 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
* Q* Q$ M# z, C; ^0 j% q8 K 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。1 t% @6 y* ]" d& z% q2 T4 _
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。5 u' w' \1 x! H4 t$ X. }
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。7 `8 |, R% v. q6 Q$ |/ k2 s
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,
$ n, R" p9 t. d4 N" N' E n3 l& B 所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
7 l7 n- x- u3 h( ?8 N 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,
3 ~* ~" c# L- g 所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。
0 |9 P0 N/ v; Q 所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
6 O& _) D# p* H$ A" e3 q 这样,弗法就可以较为严格的证明了。' v- S: |# @9 [8 [/ J# W
=========================================, ~2 A4 \: e: B4 T
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
' B6 g; p# C) I0 \ 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。8 d/ o" h; H$ I: X- P
=========================================
2 O. y7 S6 j! z7 K& W3 V L* r& Q4 R! d* T6 C9 k% O6 z) o
8 u9 H( V* j( O4 C t
zan