在线时间 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
自我介绍 软件开发工程师
=========================================, D, ^% p" G; ]3 Y) A" U* M+ O
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:5 F: J$ ]) @# r$ v
仍用数学归纳法,2 V7 P3 S& a0 l* l; x
假设N<=n时,弗法正确。具体值我就不验证了。
; _+ L2 E2 r; I8 B 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,7 B6 N% p. {: K$ c- L6 t
三重循环中,我们都把K排在循环中的最后一位。
% I2 H; v3 @# o8 E: J9 E. I/ b* I 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
# [2 Q/ b: p1 M2 g 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。& D* a1 a: q) G2 J6 J
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。0 E% _' v) H8 X8 e; Q3 L" G& x
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。
- v9 |2 ~6 \3 Q5 F 经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。" J3 c: p1 I; \
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。: b& N" P% ?% n" _- U' t; g
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,
, o1 c/ J- D$ I 所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
5 f7 a8 H* t2 ?& `' v1 l 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,3 M6 ^5 `( v3 s* k- }+ x
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。4 U5 o/ z1 `& t; H
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
! Z1 d# k+ [: E0 x/ }# I9 z, ^3 J 这样,弗法就可以较为严格的证明了。
( \. ]5 B7 Y, x( L* \7 r# x =========================================& v, x- c5 ]$ E# }8 \
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
! r7 x: S6 Y( ^& d2 b0 B" C 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。* k: ?. b l0 N* G
=========================================
u3 ?% X7 C/ ]$ S
& ~* I3 s2 Y. |1 M) F
; @% Q: j) U, ]3 t! H* ?2 v
zan