在线时间 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
自我介绍 软件开发工程师
=========================================
8 s+ t: F4 O6 `1 {$ S0 Y 最短路径中的Floyd算法(弗洛伊德算法)的较为严格的冥想证明过程:
5 i) `% u; m$ t+ j5 O: Q 仍用数学归纳法," k- E! f% t3 z, ?1 J% v3 z
假设N<=n时,弗法正确。具体值我就不验证了。
) r V4 k; A! J 当N=n+1时,假设最新一点最后一点为K,此时K=n+1,7 Z9 \: ^: ^- U- {8 s
三重循环中,我们都把K排在循环中的最后一位。( I* A0 m; ?% w/ E# Y5 P0 Z/ X
现在我们要证明的是,加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。2 ` \3 G! G: K5 t+ r. T5 O
如果原来的n点的某两点之间最短距是与K点无关的,显然经过三重循环后,就是最短距了。
, X- {' A) X$ b' T6 u 如果原来的n点的某两点之间最短距是经过K点的,假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距。
9 b4 w- {$ L6 R 那么由弗法知,P1,P2,P3,,,Pk-1与PK+1,,,,Pm已是连通的最短路了。且Pk-1Pk与PKPK+1是原始实边,不是虚边。" y, ^' Q$ S5 U4 J7 P
经过最外层最后一次循环的松驰操作,必能连通P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm。/ ]4 e+ y5 e. }" l" I) u
所以得证:加上新点K点后,经过弗法的三重循环,原来的n点之间仍是最短距离,但是n点与K点之间的短离是不是最短的就不知的。) e# {* w2 v* d* ]
由于对称性,将K点置入内部,把P1点放到最后一点,原来的循环结果不会变的,3 |" ]1 p6 J* n- }$ i9 U w( Y
所以三重循环后,K点与原来的点(除P1外)的最短距,就可以求出来了。, [7 g* X. J+ @. m
由于对称性,将K点置入内部,把P2点放到最后一点,原来的循环结果不会变的,1 i) [1 [6 R4 E+ T- k
所以三重循环后,K点与原来的点(除P2外,但P1不除外)的最短距,就可以求出来了。, V' E. \; n0 @
所以K点与原来的n个点的最短距,也就已经求出来的了,仍是原来的三重循环也。" f2 r& L" D5 J) {" H2 B+ t
这样,弗法就可以较为严格的证明了。/ s+ L0 a% s# {% S* L- @# V7 R1 [8 ?
=========================================
f/ ~- I; g# f' v; T4 a6 A: ^# i/ Q: b 为何假设P1,P2,P3,,,Pk-1,Pk,Pk+1,,,Pm本应是实边最短距,不是虚边最短距???
7 p7 m- X; j f# b" {, c 如果是虚边最短距,也可以转化成实边最短距,然后结果一样的。
! a7 p' [' u$ S, `; E+ z8 R =========================================4 v* w+ F4 {. G F
+ H% E* O0 { {7 ^; _2 L7 i, x$ @
- d }$ F/ H y; G ]2 e
zan