在线时间 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
自我介绍 软件开发工程师
=========================================
% I! p5 U) r% _3 V0 z+ N 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:5 W, f1 O- \2 _* `- Y. ?5 A
仍用数学归纳法,
! P6 G4 g0 |$ i5 n; V% }/ S 假设N<=n时,弗法正确。具体值我就不验证了。
* Z( O, s6 H" j) i( n3 z 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
- _# H4 _* x) A- r" h5 z8 B, u 三重循环中,我们都把K排在循环中的最后一位。% [7 P- _& v5 H8 s& ]& Y9 v
现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
4 K9 ?, X6 w; l+ h9 g 如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
. O7 `9 R) v5 a2 b3 ^) p 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。7 U0 O9 ~! o8 Y2 S% M m
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。; o: S# Z3 \4 \9 r" g" ^
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
5 s- g" _7 s% A8 h: S 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。/ [( ~, ]$ }& \" T! x6 p
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,7 U$ [( \/ Z4 @ Z; ?
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
! \( Y! f8 B/ p: ? 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,
6 V& R' \9 o6 e& {* Z" t8 i* z. y 所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。
* c2 G; B+ i" g6 [/ I5 S# ^$ b 所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。* I% `8 U' A; H4 e! J2 G$ L9 w! a6 f
这样,弗法就可以较为严格的证明了。
/ J1 y$ a' o N9 R6 Q. w/ i. p =========================================
3 S. M% x7 N5 l: G% l; L$ g 为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???; ~, ~7 L3 s% e; r
如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
% R" f5 v7 M1 n =========================================+ L k9 a6 a5 `% z# U% u9 B
( k$ ?% u! k7 O7 u0 D
: H& m6 ~, n0 O& ?, N& M4 c
zan