在线时间 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
自我介绍 软件开发工程师
=========================================
' C: Y' y0 v# J/ L9 t! W 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
/ O N$ n( ]0 c6 f7 k6 @ 仍用数学归纳法,
- D/ H6 s6 q# h1 `7 h9 {; |7 H 假设N<=n时,弗法正确。具体值我就不验证了。
5 J! E7 o r) T" ]/ h3 S4 T6 |$ h8 o 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,+ ?9 M! O9 i+ U) X+ F7 u; [' l5 }
三重循环中,我们都把K排在循环中的最后一位。
/ k7 z9 J/ v" F( K: R3 a, j 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
; ]; G9 C* s K' e5 w" s& f+ B 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
7 W2 x4 u- _$ K: w, x; D( V 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。+ }7 @+ M. b" @% i/ C
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。
5 E8 e3 }, t2 U3 @8 y6 t' h6 S 经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
$ u6 `- F" F; j2 Z0 o& F4 u9 l 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
# ?# F2 A- g% T3 l. _5 l+ ~ 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,
# T5 u) a4 C% m$ q* C0 p4 _ 所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
N' x9 ]; Y1 F; i) q 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,6 ~6 e% g5 ^7 G) \5 ^
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。+ f% K3 w5 j6 {; Y0 H" X! [
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。2 q, C; u) g# b. J% M- b
这样,弗法就可以较为严格的证明了。. g! ]. l7 T; I# ~) n2 k5 n
=========================================6 @* [+ T6 X2 w2 O2 F
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
5 @. O2 L. |0 G# o! m8 p" n& A 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
) U: t% ], V# G4 E% s =========================================% g* J8 e1 \- b+ p& ^2 i, ?, s+ c) _
) q3 A* V9 k- D5 Q3 G5 R
1 E; u E, U, e- F8 y. G* q4 H7 f7 b$ Y
zan