在线时间 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
自我介绍 软件开发工程师
=========================================
* M/ m0 i2 g5 s6 _- |! G 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
; [- s0 d2 U% e1 J# e. ] 仍用数学归纳法,
) _ U7 Z8 K9 z 假设N<=n时,弗法正确。具体值我就不验证了。! E5 ]* e: b- z, x2 |
当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
6 j% `2 G, J* j6 R+ I$ R' ~$ @ 三重循环中,我们都把K排在循环中的最后一位。
5 ]7 V0 p, Z/ r" S- E 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
* w1 }( \$ u1 [# t4 m 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。% x3 c. \$ E& q6 l
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
7 n% v+ j: H! } 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。* ?2 n' P, p0 B0 c+ ^9 w( R
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
! L5 M0 _) I) a1 u( O. U 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。: t3 s- O# N( l7 W% H7 n+ j
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,* ?6 ?' U1 L9 G; Q9 X
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
2 Q* [9 I0 H1 x- o* P! ]3 P, U# s$ D 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,
/ j+ n0 i- s# ?$ l& D3 S# d 所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。
' P" ^% y: _2 @% _ 所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。7 b$ u; T" d. F: y1 Y% Y+ p& ^
这样,弗法就可以较为严格的证明了。
2 R/ m5 |8 w; P: y$ d9 ^ =========================================
) D6 t4 O3 y% R 为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???' `6 E9 ~) @2 L& E2 y6 _
如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
6 X# t& J0 x. b6 ` =========================================
) N6 X: T2 J) t6 D r( b; h F
' l2 a- Y, ^; o# h1 s6 \5 `
2 Y3 O+ E( g& R2 X2 ?( g0 L, y
zan