在线时间 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
自我介绍 软件开发工程师
=========================================
$ R! z0 y3 B9 o. i2 q X2 h y" O 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
/ D1 Y4 |. F1 g% l! W9 Y7 H 仍用数学归纳法,
: w7 H" X1 Y; K! f8 W 假设N<=n时,弗法正确。具体值我就不验证了。
1 u0 q2 A. c+ O2 ~7 p, I1 g& m 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
) d I8 Q3 j+ X9 e- f0 m# E! Q 三重循环中,我们都把K排在循环中的最后一位。
3 i3 b2 `* f7 K) `6 A( l 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。5 j! \0 t6 Q: r" J2 K' W M
如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。/ ?( J/ X. A* r1 [. ~1 }* U
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
, p! f3 p" b; b 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。- n* m" ]/ D h+ \+ m
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
( V) M8 L' L1 u7 J 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。0 k6 r: `! @! j$ k3 o1 V, W$ u
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,7 R v0 Y; a; }. V( r* D
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。$ w3 H5 G; w& U# m7 r& r* q5 R
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,
* x& q, J2 F. H" U8 u 所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。
7 |- q# X- M+ c k2 T* Z3 S2 x 所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。
6 ?! c- Z: N7 P& P0 L( G2 l& h 这样,弗法就可以较为严格的证明了。5 o: u8 X2 L' c% U* L, w( N4 { M
=========================================1 b) ]/ S. ^, P! A( _6 Y0 T2 C
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
2 g A, R2 P3 H/ J9 }; Z 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
* K( z' [& u/ y( U =========================================
& J7 p" U# Z7 \5 o+ u $ c, y* x* N9 R% X3 |
( b4 V6 U) g4 k8 Z |. T) u* x V
zan