在线时间 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
自我介绍 软件开发工程师
=========================================7 B( U+ T8 K& g! u2 H2 O
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
; F) t+ e) O8 ?8 H& z" y 仍用数学归纳法,
* c, J7 _# w6 Z: N/ [" u0 x# h( e 假设N<=n时,弗法正确。具体值我就不验证了。
; F6 q( s+ |" D 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
8 ^3 W. H+ P& K' }8 \, A6 V6 i 三重循环中,我们都把K排在循环中的最后一位。: Q4 f& x; V; s; O; ]# J: {
现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
' j Q9 h$ W; h4 d/ M 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。; h9 K" S% _# n0 c4 r% K6 ?2 H
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
$ F% I* \, v5 x: s1 W7 H 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。
+ K" m8 u8 e0 q J }1 U 经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。! U+ S3 S( i; S$ M) Y
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
1 W* n3 M5 O% @ 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,
! O! e0 ]7 `! X 所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。: R! T2 L/ {7 J+ T( S$ w" Z
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,9 i6 s3 h( q* W4 V2 X
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。( E+ D, s3 d' l1 H
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。. V5 D- c5 H9 b& J$ @* Z
这样,弗法就可以较为严格的证明了。
( o1 l7 C. B3 J9 A$ b9 \' a' |0 M =========================================& Z8 R- m) N, f, g1 j% S' n2 K
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
+ T* h& d6 U# l 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
, [' H* y! [2 B( t; S =========================================# y" c5 F! w' }7 R( f
+ G* T ]! }4 ?( P
8 c1 W5 E0 V5 b" G) l
zan