在线时间 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 Y; ]# N( D/ _: i' e9 l6 ^! [( A
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:( _1 J- H" f" N6 ~& L+ D+ x: D
仍用数学归纳法,
7 e4 J+ f* M8 Y7 S 假设N<=n时,弗法正确。具体值我就不验证了。
) x; S: I% A0 W* T! e# B9 m# a 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,$ U+ x0 G/ D; {: f9 j, @7 _% x
三重循环中,我们都把K排在循环中的最后一位。
' \8 i3 e$ l: R: X 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
8 b3 j- _8 o* l* `! O 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。' G: Z( A9 `! E+ O: B
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
6 G/ P/ m: }% j' t# n7 [ 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。& K& _. c+ g% R2 ^! a* k
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
) v0 P( V* L5 c- B# |/ R- _ 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
7 _% O/ N$ ?) n: n 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,
) g# i6 {2 \7 O0 G+ ]* D( I0 k% J, c 所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。; V6 @# \& q x* `6 Z* O
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,1 [0 D7 N2 l# n, I, K5 I6 @# G
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。2 }3 o) H' Z# f9 w3 n
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
& H: f+ f+ n+ i* b' Y, m$ m" c 这样,弗法就可以较为严格的证明了。1 C' y6 h6 t) B8 s; [# Y( Z9 B. D
=========================================: B( n8 ~3 O8 ?0 G+ g# ^" C" Z
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???1 [4 R$ t! F* P- g4 w
如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。* |6 `* Q F4 H5 ?
=========================================
+ ^% C& W; H4 a& Y8 a
% v9 i& P* s2 k2 ^6 C; S2 \
& P9 q9 b+ P1 x! [, D- T/ Y5 Z* W
zan