在线时间 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
自我介绍 软件开发工程师
=========================================- |1 H9 m+ H$ c% D: j- R
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:7 D6 X8 b6 g( v. h
仍用数学归纳法,+ h. [+ v4 N+ \7 t4 m: }
假设N<=n时,弗法正确。具体值我就不验证了。( H9 o9 r2 H' F1 X0 o8 y
当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
1 ?5 {1 u x! n! W 三重循环中,我们都把K排在循环中的最后一位。
$ h9 G$ O! m, ^) M3 c V, Y 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
9 Q7 ^# }4 n' w$ d4 P 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。! v) x& I" ~, r; e) D8 p) u. G% b
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。8 D, H$ |# a, O7 t
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。: [0 Y5 t4 ~0 Q" ]4 x/ @4 D2 P
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
7 Z% C; ?5 X( k0 \- B& r 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。5 u5 \, w, v. v1 r8 m4 G$ }
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,0 C9 T1 ~. q& V1 C F+ a! |+ s
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
: [: Y7 F# K( D4 u 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的," u/ n" z& X4 b0 _' Q
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。
+ @$ h8 X- @1 { 所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。+ S/ w! m1 v* {: Y% G1 O- h/ B, z
这样,弗法就可以较为严格的证明了。5 A: X. Y. U% t) P) B4 f
=========================================' A3 h% h5 g' z5 Z4 C- b2 L/ v
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???% m) t8 P8 f, ]# m
如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。8 {4 j$ K( S8 l# j" b
=========================================0 ?; c1 N' ^+ J c7 _/ `# F' B
% ]) b0 S7 V! T7 F8 ]7 W( G
7 V, _' J4 ]9 s4 \5 e! W8 [
zan