信息学奥赛_网络流算法介绍与分析.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息学奥赛_网络流算法介绍与分析

网络流;一些符号和定义;v1;网络流的三个性质;最大流问题;残量网络;例1;例1;后向弧;为什么要建立后向弧;为什么要建立后向弧;增广路;增广路算法;将f,c,r的定义域扩展为点集;结论1;最大流最小割定理; 1、f是最大流 2、残量网络中找不到增广路径 3、|f| = c(S,T) ;割的定义;结论2(点集总流量为零);结论3;结论4;2 - 3证明: 定义S = s ∪ {v | 在残量网络中s到v有一条路径} ; T = V- S. 则 (S,T) 是一个割. |f| = f(S,T) (由辅助定理3) 而且,r(S,T) = 0. 假设不为0,则在残量网络中, 两个集合间必定有边相连,设在S的一端为v,在T的一端为u. 那么,s就可以通过v到达u,那么根据S的定义,u就应该在S中.矛盾. 所以,|f| = f(S,T) = c(S,T) – r(S,T) = c(S,T) ;3 - 1证明: |f| = c(S,T) (辅助定理4) 因为我们已经有|f| = c(S,T),如果最大流的流量是|f|+d (d0),那么|f|+d肯定不能满足上面的条件.;增广路算法的正确性;增广路算法的效率;f*;f*的理论上界;k的上界;预流推进算法;一个直观的想法;v1;v1;;引导机制;高度标号的引导作用;重标号操作;重标号操作;高度函数;高度函数的条件的实质;两个关键操作;推进操作;推进操作 伪代码;重标号操作;预流初始化(Init-Preflow);结论5;一般的预流推进算法;预流推进算法的正确性;结论6(结点高度永不下降);结论7;结论7;结论8(预流中无增广路);结论8(预流中无增广路);预流推进算法的正确性;更好的预流推进算法;Relabel-to-front;一些定义;结论9,10;结论11;当前弧;检查操作;当前弧的正确性;当前弧的正确性;Relabel-to-front;图例 (初始状态.结点下方数字为赢余,N显示的是邻居列表,N中红色的是当前弧指针所在的位置.);图例:x被检查并重标号,并被提到L的首部(等于没提).注意当前弧的指针移到了t. x的所有赢余推给了y和t.;图例 :y正在被检查.将8单位的赢余推给z之后还是有剩余.;图例 :一次必须把赢余全部推光.所以y被重标号,当前弧指针从头开始查找,找到(y,x)这条可行弧之后进行推进.实际上是把多推的赢余还给了x.因为h(u)=h(v)+1的保证,它没有把赢余错推给s.;图例:y还是有赢余.当当前弧移动到另局列表的尾部时,y再一次被重标号,并把赢余还给s.检查结束,y被提到L列表的首部.;图例:检查x.注意x的当前弧指针已经指在t上了. x把赢余推给t. u指针直接后移.(因为x没有被重标号);图例:z被检查并被提到列表首部.;图例:u指针从y开始向后移动,直到队尾也没有发现可以检查的结点(只有溢出的结点才能被检查).算法结束.;relabel-to-front的正确性;结论11:L始终拓扑有序;结论12;Relabel-to-front;Highest-relabel;分块的L列表;分块的L列表;分块L列表的实现;更多的改进;更多的改进;BFS预处理;如图所示的残量网络.因为我们希望h增长得尽量快,因此想象在图的底部有风在从低往高吹.;但是直接吹是吹不动的.残量网络中的每一条边都是一层限制(从高处指向低处的边才是限制.从低到高的边暂时是没有限制作用的),牢牢地将结点捆住……至多把v2和v3吹到高度为6的位置上.;如果v4向t作了一次饱和推进,导致(v4,t)消失,这时我们发现,v1,v5,v2,v3,v4都几乎属于完全自由的状态!;v1,v5,v2,v3,v4都可以上升到高度6,而不影响h的合法性和递增性.重标号操作被大大减少.(注意,(t,v4)是从低到高的边,没有限制作用);间隙优化:如果(0,s)之间的某个高度l不存在任何结点,那么处在(l,s)之间的所有结点都失去了原先的限制,可以让他们全部移到s+1的高度而不失正确性.;间隙优化;效率测试(时间单位:s)(忽略了读数据的时间)

文档评论(0)

ccx55855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档