在线时间 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
自我介绍 软件开发工程师
=========================================) u% ^( T0 m$ N( X( z. h% p
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
9 O5 x6 `6 b W" e6 c; v 仍用数学归纳法,# E' z+ v# a7 X' ] l. p
假设N<=n时,弗法正确。具体值我就不验证了。* `# @7 b. w/ w m
当N=n+1时,假设最新一点最后一点为K,此时K=n+1,) z4 ]4 ^$ A$ A# [6 e0 t7 D
三重循环中,我们都把K排在循环中的最后一位。: W4 J, i2 a+ W, p3 ^; i5 _
现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。+ X* X1 u. ~0 z, |" @3 O- T& Z
如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。5 _& L0 W" p6 [. a8 n% ?& [
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。9 o0 ?% q% k$ n: ?# |% v
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。
s1 b7 G( t0 J$ }- e 经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。" R O4 i- S. D0 @- k
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
% v# A% [% ^( I* `$ d! i7 D7 | 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,
1 n& a: z* v3 ? 所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
" ^; X# G! a J. ~ 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,' f' U2 m* K& B
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。) P$ P9 J0 q* a
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
4 Q$ D! z, \/ t+ n 这样,弗法就可以较为严格的证明了。
7 M$ A( ^, \# P( D% ~) l! N' X =========================================. O0 s* p! l$ s- J' Q
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
+ l) H' Q: x9 N 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。$ _4 R# S* F/ L8 e) Z1 q6 B
=========================================) f- n `% w- B7 ~
5 z( H( P2 i7 m " K+ C( I- B* {; J! t( j7 M8 p4 T
zan