在线时间 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
自我介绍 软件开发工程师
=========================================' \' E2 S$ V+ f1 I- [
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:# R* K) M; ^* r) ^
仍用数学归纳法,
" Z5 f K# l7 B& [; c; ~2 b 假设N<=n时,弗法正确。具体值我就不验证了。
1 X8 n$ ]' @- a3 ^ 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
5 e4 E+ @' X( T; _5 R+ `* j+ ?* [+ ^1 h& S 三重循环中,我们都把K排在循环中的最后一位。: }) W! J% V5 p: S( _# N% `
现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。) c/ s- }/ E5 I3 b" T1 k
如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
* F5 `, E$ ?. ^$ x% T+ K 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。2 r2 W: ? K; B: p
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。1 ]" v) [9 S% Z7 B1 S
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
: M: K2 c' [2 w, H 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
' E' w ^ _5 w g& Q 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,' B1 a5 @% \% o* u1 {+ ^/ ~
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
4 j0 \3 q ]" s 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,# M& z, n( _: d$ I! s5 r0 O
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。! a9 C1 A2 w( m- Q* ]
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。9 @2 z& ^+ P+ p' ?9 g; S
这样,弗法就可以较为严格的证明了。
- A: T: j5 k1 _8 V1 V3 n/ T =========================================
$ v9 k' e8 M+ h/ F1 e; Q5 {0 z 为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???1 ~8 A1 r& s4 V5 @1 N+ {
如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
k; s# T( q' r" s- \/ z1 u% F =========================================
3 G" w. n5 e' D' ^5 R7 |, Z ! ~' m! \- I9 H7 j& E
: j3 P X+ D, T
zan