- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络流 一些符号和定义 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|的最大值。 弧的分类 若给定一个可行流F=(Fij),我们把网络中Fij=Cij的弧称作饱和弧, FijCij的弧称作非饱和弧, Fij=0的弧称作零流弧, Fij0的弧称作非零流弧 若P是网络中联结源点s和汇点t的的一条路(不用管边的有向性),我们定义路的方向是从Vs到Vt,则路上的弧被分为两类:一类与路的方向一致,称为前向弧;另一类和路的方向相反,称为后向弧 残量网络 为了更方便算法的实现,一般根据原网络定义一个残量网络。其中r(u,v)为残量网络的容量。 r(u,v) = c(u,v) – f(u,v) 通俗地讲:就是对于某一条边(也称弧),还能再有多少流量经过。 Gf残量网络,Ef表示残量网络的边集. (a,b) 表示 (流量f,容量c) 从残量网络中可以清楚地看到: 因为存在边(s,v2) = 3,我们知道从S到v2还可以再增加3单位的流量; 因为存在边(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找一条可改进路,然后沿着这条路径修改流量值(实际修改的是残量网络的边权),使得总流量变得更大,修正的方法是: 1、不属于可改进路P的弧一概不变 2、对于可改进路P上的所有前向弧加上a,后向弧减去a,这里a是一个可改进量。a既要尽量大,又要保证变化后0=Fij=Cij (满足容量限制和平衡条件) 。因此a=min(min(C前向弧ij-F前向弧ij),min(F后向弧ij))。 如果不存在Vs到Vt的可改进路,算法停止,此时的流就是最大流。 截集的定义 一个截集(S,T)由两个点集S,T组成. S+T = V s 属于 S. t 属于 T. 一种定义S的方法: 一旦Vt进入S集合,就表明找到一条可改进路;如果S集合扩展不下去而Vt又尚未进入S集合,则说明不存在可改进路,此时,除S外的顶点进入T集合。 最大流最小截定理 截集间的流量和: f(S,T) = 即:S中的任意一点与T中的任意一点组成的所有边上的流量之和.(边的方向为从S中的节点到T中的节点) c,r等函数都有类似的定义.(截集的容量和、截集的残量网络容量和) 任一个网络D中从Vs到Vt的最大流的流量等于分离Vs和Vt的最小截集的容量。 最大流等价条件 最大流的三个等价条件(在同一个时刻): 1、f是最大流 2、残量网络中找不到增广路径 3、|f| = c(S,T) 结论 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) 5.不包含s和t的点集,与它相关联的边上的流量之和为0.(点集总流量为零) 6.任意割的流量等于整个网络的流量 7.网络的流量小于等于任意一个割的容量 标号法寻求可改进路(Ford-Fulkerson算法) 标号法寻求可改进路(Ford-Fulkerson算法) 调整过程: 采用“倒向追踪”的方法,从Vt开始,利用第一个标号找出可改进路P,并以Vt的第二个标号L (Vt)作为改进量a,改进P上的流量。 例如:设Vt的第一个
文档评论(0)