网络流增广路算法和预流推进算法.pptVIP

  1. 1、本文档共92页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络流的 增广路算法和 预流推进算法 杭州学军中学 魏越闽 一些符号和定义 V表示整个图中的所有结点的集合. E表示整个图中所有边的集合. G V,E ,表示整个图. s表示网络的源点,t表示网络的汇点. 对于每条边 u,v ,有一个容量c u,v c u,v 0 如果c u,v 0,则表示 u,v 不存在在网络中。 如果原网络中不存在边 u,v ,则令c u,v 0 对于每条边 u,v ,有一个流量f u,v . 最大流问题 定义一个网络的流量(记为|f|) 最大流问题,就是求在满足网络流性质的情况下,|f|的最大值。 残量网络 为了更方便算法的实现,一般根据原网络定义一个残量网络。其中r u,v 为残量网络的容量。 r u,v c u,v – f u,v 通俗地讲:就是对于某一条边(也称弧),还能再有多少流量经过。 Gf残量网络,Ef表示残量网络的边集. 例1 例1 从残量网络中可以清楚地看到: 因为存在边 s,v2 3,我们知道从S到v2还可以再增加2单位的流量; 因为存在边 v1,t 2,我们知道从v1到t还可以再增加2单位的流量。 后向弧 其中像 v1,s 这样的边称为后向弧,它表示从v1到s还可以增加4单位的流量。 但是从v1到s不是和原网络中的弧的方向相反吗?显然“从v1到s还可以增加4单位流量”这条信息毫无意义。那么,有必要建立这些后向弧吗? 为什么要建立后向弧 显然,例1中的画出来的不是一个最大流。 但是,如果我们把s - v2 - v1 - t这条路径经过的弧的流量都增加2,就得到了该网络的最大流。 注意到这条路径经过了一条后向弧: v2,v1 。 如果不设立后向弧,算法就不能发现这条路径。 从本质上说,后向弧为算法纠正自己所犯的错误提供了可能性,它允许算法取消先前的错误的行为(让2单位的流从v1流到v2 为什么要建立后向弧 当然,可以把上面说的情况当成特殊情况来处理。但使用后向弧可以使编程简单许多. 注意,后向弧只是概念上的,在程序中后向弧与前向弧并无区别. 增广路 增广路定义:在残量网络中的一条从s通往t的路径,其中任意一条弧 u,v ,都有r[u,v] 0。 绿色的即为一条增广路。 增广路算法 增广路算法:每次用BFS找一条最短的增广路径,然后沿着这条路径修改流量值(实际修改的是残量网络的边权)。当没有增广路时,算法停止,此时的流就是最大流。 下面证明增广路算法的正确性. 将f,c,r的定义域扩展为点集 在以后的叙述中,大写字母X,Y,S,T一般均表示点集 点集间的流量和: f X,Y 即:X中的任意一点与Y中的任意一点组成的所有边上的流量之和. 边的方向为从X中的结点到Y中的结点 c,r等函数都有类似的定义. 点集间的容量和、点集间的残量网络容量和 结论1 1.f X,X 0 由流量反对称性 2. f X,Y -f Y,X 有流量反对称性 3.f X ∪ Y,Z f X,Z + f Y,Z 显然 4.f X,Y ∪ Z f X,Y + f X,Z 显然 最大流最小割定理 网络流中这三个条件等价(在同一个时刻): 1、f是最大流 2、残量网络中找不到增广路径 3、|f| c S,T 1、f是最大流 2、残量网络中找不到增广路径 3、|f| c S,T 1 - 2证明: 显然.假设有增广路径,由于增广路径的容量至少为1,所以用这个增广路径增广过后的流的流量肯定要比f的大,这与f是最大流矛盾. 割的定义 一个割 S,T 由两个点集S,T组成. S+T V s 属于 S. t 属于 T. 提出割的定义,是为后面的证明作铺垫. 结论2 点集总流量为零 不包含s和t的点集,于它相关联的边上的流量之和为0. 证明: f X,V 由流量平衡 0 结论3 任意割的流量等于整个网络的流量. 证明: f S,T f S,V – f S,S 由辅助定理1 f S,V 由辅助定理1 f S,V + f S – s,V 同上 f s,V 由辅助定理2 |f| 由|f|的定义 结论4 网络的流量小于等于任意一个割的容量. 注意这个与辅助定理3的区别.这里是容量 即|f| c S,T 证明: |f| f S,T

文档评论(0)

wwqqq + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档