在线时间 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! b& f( O e6 G3 R
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
: r( z2 ^4 u4 x% E 仍用数学归纳法,' G& G( K$ k$ S! Y+ n$ ~6 N
假设N<=n时,弗法正确。具体值我就不验证了。
1 K8 u& U/ E1 f$ `& N 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
- z. F. @- t* I8 V* o" ?: M. h% Q 三重循环中,我们都把K排在循环中的最后一位。, W% B" [ m0 ~8 v }1 m& y
现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
1 X9 e; h3 T$ ~. x8 j1 a 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
+ A* A( G. j5 k 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。) h- a3 v1 b! C7 E" b3 ?- A
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。
/ n3 U* }( u- |* k 经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。" b( q+ ]% U; U- h- ]/ i+ ^7 H
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
8 B1 H: B% k1 M: W9 [) [ 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,7 |+ m" ]5 k8 f O. k
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。% o" [3 v% e8 K3 l5 k7 o' N$ o
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,: B4 u4 h1 ^. f, r/ |! Q( N
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。# T7 }" d5 }$ J7 `, y+ R
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
9 n1 H& g6 h$ W+ J! z 这样,弗法就可以较为严格的证明了。
6 v; t2 j: a- ?! n =========================================. U" A& [+ {2 Y# E% g7 x
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
& Q( u$ F) D$ ?4 m 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。- [. h6 x" B5 P
=========================================9 A0 w6 c9 N v$ M
2 F) m$ F% C! R& u( {9 J3 X
! L. l: v- p1 u Z3 D
zan