在线时间 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
自我介绍 软件开发工程师
=========================================
0 W/ f& G2 ^ q! n/ }! q* z 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
$ J) b! L3 b3 T9 Y1 m 仍用数学归纳法,
+ g2 }. I. [ c! c 假设N<=n时,弗法正确。具体值我就不验证了。0 l* i9 F- [2 c K
当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
1 Z9 G; ?; k Q. \$ U 三重循环中,我们都把K排在循环中的最后一位。
$ I" \9 @ u- E8 W7 _4 ]9 | 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。. G& g0 c0 ~: k$ a
如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。6 M+ ~' n4 [* `
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。& v1 X+ s6 G8 O7 Y5 e& H& ?! s
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。& T( k: u" c* g$ c
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。( o) ~7 K) J D) s: R0 }
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。' {5 M, v. C8 j! s2 J
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,% `* B. [# V7 K( \7 z
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。' z/ e5 c5 J; Z1 c
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,5 J5 R, w0 z; X& O a* f
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。5 Z& g+ K! W J9 Z9 u6 [
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
. t5 U* K/ Y/ O6 t2 q0 p7 u. x 这样,弗法就可以较为严格的证明了。
. b# k: Y W9 u* r =========================================
( ^& s0 K4 c; W3 t 为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
" P s& u* g% M1 \* p; W 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。 c, |" P- d5 y* G$ @$ o8 ]! s
=========================================' R/ \+ b& Z( Y5 e
( [9 a% S+ v3 q* d 1 L6 i; V4 Z! c2 N* [
zan