在线时间 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
自我介绍 软件开发工程师
=========================================# h0 }& W6 D7 ~ d
最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:% z! J5 o5 s3 ]* W5 y
仍用数学归纳法,) j/ i6 y# _) G0 \" J
假设N<=n时,弗法正确。具体值我就不验证了。
8 }5 l0 X5 H+ ^1 X 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,
3 D; [! P5 e4 G- P4 W2 t$ y 三重循环中,我们都把K排在循环中的最后一位。
) f: s k9 ~( t2 a! b# } 现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。7 M6 h! w# P3 e: y# [
如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。) q- S x O1 ?! C% b. v. e
如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。) K/ C6 h) _, l( K! Q0 x
那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。
' w6 l* B$ O: ?5 a; m9 V+ @$ A9 B 经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。
: g; m% S% k; E 所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。
) F3 \, s, V# \( F; q* |2 u7 I F 由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,& B, c2 \! r$ W6 N( f- g
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。
. O8 ~0 r$ A, j* n0 ? 由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,7 Z% g9 `! C% y/ {- G0 {7 Q% @
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。' m) B; I' x" M. Z& L x. X
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。1 w1 v0 N1 d# Y. G
这样,弗法就可以较为严格的证明了。: M: @5 g3 J+ {% g0 [
=========================================0 _. A7 _0 {" a3 o0 z/ E; ^
为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???4 e1 o! O& X) y( | a$ ^
如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
8 c" H* I1 u3 v A+ p4 d; W =========================================
6 X3 G _/ z, c5 P5 u
8 `7 I1 q+ S! v$ e: b 8 p/ D$ V% k! H, J& U( \0 ^) {
zan