经典网络流教程_第1页
经典网络流教程_第2页
经典网络流教程_第3页
经典网络流教程_第4页
经典网络流教程_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络流网络流网络可以被想网络可以被想象成一些输水象成一些输水的管道的管道. .括号内括号内右边的数字表右边的数字表示管道的容量示管道的容量, ,左边的数字表左边的数字表示这条管道的示这条管道的当前流量。当前流量。最大流为最大流为5 5?一个简单的例子一个简单的例子-网络的最大流问题网络的最大流问题atsbcd(3,4)(2,2)(3,3)(2,2)(1,1)(0,2)(3,3)(3,4)一些符号和定义一些符号和定义nv表示整个图中的所有结点的集合.ne表示整个图中所有边的集合.ng = (v,e) ,表示整个图.ns表示网络的源点,t表示网络的汇点.n对于每条边(u,v),有一个容量c(u,v

2、) (c(u,v)=0)n如果c(u,v)=0,则表示(u,v)不存在于网络中。n如果原网络中不存在边(u,v),则令c(u,v)=0n对于每条边(u,v),有一个流量f(u,v).网络流的三个性质网络流的三个性质1、容量限制容量限制: fu,v=cu,v2、反对称性反对称性:fu,v = - fv,u3、流量平衡流量平衡: 对于不是源点也不是汇点的对于不是源点也不是汇点的任意结点任意结点,流入该结点的流量和等于流出该流入该结点的流量和等于流出该结点的流量和。结点的流量和。结合反对称性结合反对称性,流量平衡也可以写成流量平衡也可以写成:只要满足这三个性质只要满足这三个性质,就是一个合法的网络就

3、是一个合法的网络流流,也称为也称为可行流可行流。可行流至少有一个零流。可行流至少有一个零流。( , )0u vf v u最大流问题n定义一个网络的流量(记为定义一个网络的流量(记为|f|)=n最大流最大流问题,就是求在满足网络流性质的情况下,问题,就是求在满足网络流性质的情况下,|f|的最大值。的最大值。vvvsf),(弧的分类弧的分类n若给定一个可行流若给定一个可行流f=(fij),我们把网络中我们把网络中fij=cij的的弧称作饱和弧,弧称作饱和弧, fij0的弧称作非零流弧的弧称作非零流弧n若若p是网络中联结源点是网络中联结源点s和汇点和汇点t的的一条路的的一条路(不用不用管边的有向性管

4、边的有向性),我们定义路的方向是从,我们定义路的方向是从vs到到vt,则路上的弧被分为两类:一类与路的方向一致,则路上的弧被分为两类:一类与路的方向一致,称为前向弧;另一类和路的方向相反,称为后向称为前向弧;另一类和路的方向相反,称为后向弧弧残量网络残量网络n为了更方便算法的实现,一般根据原网络定义一为了更方便算法的实现,一般根据原网络定义一个残量网络。其中个残量网络。其中r(u,v)为残量网络的容量。为残量网络的容量。nr(u,v) = c(u,v) f(u,v)n通俗地讲:就是对于某一条边(也称弧),还能通俗地讲:就是对于某一条边(也称弧),还能再有多少流量经过。再有多少流量经过。ngf残

5、量网络残量网络,ef表示残量网络的边集表示残量网络的边集.(a,b) 表示表示 (流量流量f,容量容量c)v1tsv2(2,2)(4,4)(2,4)(0,3)(2,2)v1tsv2232422如果网络中一条边的容量为如果网络中一条边的容量为0,则认为这条边不在残量网络中。则认为这条边不在残量网络中。r(s,v1)=0,所以就不画出来了。另外举个例子:所以就不画出来了。另外举个例子:r(v1,s) = c(v1,s) f(v1,s) = 0 (-f(s,v1) = f(s,v1) = 4.图1 原网络图2 残量网络n从残量网络中可以清从残量网络中可以清楚地看到:楚地看到:n因为存在边因为存在边(

6、s,v2) = 3,我们知道从我们知道从s到到v2还可以再增加还可以再增加3单位单位的流量;的流量;n因为存在边因为存在边(v1,t) = 2,我们知道从我们知道从v1到到t还还可以再增加可以再增加2单位的单位的流量。流量。v1tsv2232422为什么要建立后向弧为什么要建立后向弧n其中像其中像(v1,s)这样的边这样的边称为后向弧称为后向弧,它表示从它表示从v1到到s还可以增加还可以增加4单位单位的流量。的流量。n但是从但是从v1到到s不是和原不是和原网络中的弧的方向相反网络中的弧的方向相反吗?显然吗?显然“从从v1到到s还还可以增加可以增加4单位流量单位流量”这条信息毫无意义。那这条信息

7、毫无意义。那么,有必要建立这些后么,有必要建立这些后向弧吗?向弧吗?v1tsv2232422为什么要建立后向弧为什么要建立后向弧n显然,例显然,例1中的画出来的不是一个最大流。中的画出来的不是一个最大流。n但是,如果我们把但是,如果我们把s - v2 - v1 - t这条路径经过的弧这条路径经过的弧的流量都增加的流量都增加2,就得到了该网络的最大流。就得到了该网络的最大流。n注意到这条路径经过了一条后向弧注意到这条路径经过了一条后向弧:(v2,v1)。n如果不设立后向弧,算法就不能发现这条路径。如果不设立后向弧,算法就不能发现这条路径。n从本质上说,后向弧为算法纠正自己所犯的错误提供了可从本质

8、上说,后向弧为算法纠正自己所犯的错误提供了可能性,它允许算法取消先前的错误的行为(让能性,它允许算法取消先前的错误的行为(让2单位的流单位的流从从v1流到流到v2)可改进路(增广路)可改进路(增广路)n可改进路定义:可改进路定义:在残在残量网络中的一条从量网络中的一条从s通通往往t的路径,其中任意的路径,其中任意一条弧一条弧(u,v),都有,都有ru,v0。(每一条(每一条前向弧都是非饱和弧,前向弧都是非饱和弧,每一条后向弧都是非每一条后向弧都是非零流弧)零流弧)n绿色的即为一条可改绿色的即为一条可改进路。进路。v1tsv2232422可改进路算法可改进路算法n可改进路算法:每次用可改进路算法

9、:每次用bfs找一条可改进路,找一条可改进路,然后沿着这条路径修改流量值(实际修改的是然后沿着这条路径修改流量值(实际修改的是残量网络的边权),使得总流量变得更大,修残量网络的边权),使得总流量变得更大,修正的方法是:正的方法是: 1、不属于可改进路、不属于可改进路p的弧一概不变的弧一概不变 2、对于可改进路、对于可改进路p上的所有前向弧加上上的所有前向弧加上a,后向,后向弧减去弧减去a,这里,这里a是一个可改进量。是一个可改进量。a既要尽量大,既要尽量大,又要保证变化后又要保证变化后0=fij 2证明证明: 显然显然.假设有增广路径假设有增广路径,由于增由于增广路径的容量至少为广路径的容量至

10、少为1,所以用这个增广路所以用这个增广路径增广过后的流的流量肯定要比径增广过后的流的流量肯定要比f的大的大,这与这与f是最大流矛盾是最大流矛盾.结论结论2(点集总流量为零点集总流量为零)n不包含不包含s和和t的点集的点集,与它相关联的边上的流量之和为与它相关联的边上的流量之和为0.n证明证明: f(x,v) = = (由流量平衡由流量平衡) = 0 ( , )x xv vf x v xx0结论结论3n任意割的流量等于整个网络的流量任意割的流量等于整个网络的流量.n证明证明: nf(s,t) = f(s,v) f(s,s) (由辅助定理由辅助定理1) = f(s,v) (由辅助定理1) = f(

11、s,v) + f(s s,v) (同上) = f(s,v) (由辅助定理2) = |f| (由|f|的定义)结论结论4n网络的流量小于等于任意一个割的网络的流量小于等于任意一个割的容量容量.(注意这个与辅助注意这个与辅助定理定理3的区别的区别.这里是容量这里是容量)n即即|f| = c(s,t)n证明证明: |f| = f(s,t) = (由定义由定义) 3证明证明: 定义定义s = s v | 在残量网络中在残量网络中s到到v有一有一条路径条路径 ; t = v- s. 则则 (s,t) 是一个割是一个割.n|f| = f(s,t) (由辅助定理由辅助定理3)n而且而且,r(s,t) = 0

12、. 假设不为假设不为0,则在残量网络中则在残量网络中, 两个集合两个集合间必定有边相连间必定有边相连,设在设在s的一端为的一端为v,在在t的一端为的一端为u. 那么那么,s就可以通过就可以通过v到达到达u,那么根据那么根据s的定义的定义,u就应该在就应该在s中中.矛盾矛盾. 所以所以,|f| = f(s,t) = c(s,t) r(s,t) = c(s,t)1、f是最大流是最大流2、残量网络中找不到增广路径、残量网络中找不到增广路径3、|f| = c(s,t)n3 - 1证明证明: |f| 0),那么那么|f|+d肯定不能满足上面肯定不能满足上面的条件的条件.1、f是最大流是最大流2、残量网络

13、中找不到增广路径、残量网络中找不到增广路径3、|f| = c(s,t)标号法寻求可改进路(标号法寻求可改进路(ford-fulkerson算法)算法),()min),ijijcfijijijjijjij(1)若在弧(v ,v )上f 0 则给v标号v ,l(v,这里l(vl(v。这时v成为标号未检查的顶点。 在在vi的全部相邻顶点都已标号后,的全部相邻顶点都已标号后, vi成为标号而已检查过的顶点。重成为标号而已检查过的顶点。重复上述步骤,一旦复上述步骤,一旦vt被标上号,表明得到一条从被标上号,表明得到一条从vs到到vt的可改进路的可改进路p,转入调整过程。转入调整过程。标号法寻求可改进路(

14、标号法寻求可改进路(ford-fulkerson算法)算法)调整过程:调整过程: 采用采用“倒向追踪倒向追踪”的方法,从的方法,从vt开始,利用第一个标号找出可改进路开始,利用第一个标号找出可改进路p,并,并以以vt的第二个标号的第二个标号l (vt)作为改进量作为改进量a,改进,改进p上的流量。上的流量。 例如:设例如:设vt的第一个标号为的第一个标号为vk(或或-vk),则弧,则弧(vk,vt)(或或(vt,vk)是是p上的上的弧,接下来再检查弧,接下来再检查vk的第一个标号,如此继续下去的第一个标号,如此继续下去.,直到查倒,直到查倒vs为止。为止。这时被找出的弧构成了这时被找出的弧构成

15、了p。 令改进量令改进量a=l(vt),即,即vt的第二个标号。的第二个标号。 去掉所有的标号,对新的可行流去掉所有的标号,对新的可行流fij,重新进入标号过程。直到标号过程无法重新进入标号过程。直到标号过程无法继续。继续。+ij-ijij (v,v )p (v,v )p (v,v )pijijijijfaffaf例例1 求如下网络的最大流求如下网络的最大流v2vtvsv1v4v3(3,3)(1,5)(3,4)(3,5)(1,1)(1,1)(2,2)(1,2)(0,3)标号法分析例标号法分析例11.标号过程标号过程(1)首先给首先给vs标上标上(0,+)(2)检查检查vs。弧。弧(vs,v2)

16、上,上,fs2=cs2=3,不满足,不满足标号条件;弧标号条件;弧(vs,v1)上,上,fs1=10,则给,则给v2记下标号为记下标号为(-v1,l(v2),其中,其中l(v2)minl(v1),f21=min4,1=1标号法分析例标号法分析例1(4)检查检查v2。弧。弧(v2,v4)上,上,f24=3c24=4,则,则给给v4标号标号(v2,l(v4),其中,其中l(v4)=minl(v2),c24-f24=min1,1=1 同理,标注同理,标注v3为为(-v2,1).(5)在在v3,v4中任选一个进行检查,如中任选一个进行检查,如v4。弧。弧(v4,vt)上,上, f4t=30时有上下界的

17、网络不一定时有上下界的网络不一定存在可行流了。存在可行流了。 那么如何判断一个有上下界的网络有无可行流呢?那么如何判断一个有上下界的网络有无可行流呢?容量有上下界的网络的最大流容量有上下界的网络的最大流 算法思路:将原网络转换为一个附加网络。算法思路:将原网络转换为一个附加网络。1.新增加两个顶点新增加两个顶点 和和 ,分别称为附加源和附加汇,分别称为附加源和附加汇2.对原网络对原网络n的每个顶点的每个顶点u加一条新弧加一条新弧 ,这条弧,这条弧的容量为以的容量为以u为尾的弧的容量下限之和。为尾的弧的容量下限之和。3.对原网络对原网络n的每个顶点的每个顶点u加一条新弧加一条新弧 ,这条弧,这条

18、弧的容量为以的容量为以u为头的弧的容量下限之和。为头的弧的容量下限之和。4.原网络的弧仍保留,弧容量修正为原网络的弧仍保留,弧容量修正为c(e) -b(e) 5.再添两条新弧再添两条新弧e=st,e=ts。其容量均为。其容量均为6.用标号法求此新网络的最大流,若结果能使流出用标号法求此新网络的最大流,若结果能使流出 的一的一切弧都满载,则原网络有可行流切弧都满载,则原网络有可行流f(e) f(e) b(e),否则无可行流。否则无可行流。7.在原网络中运用标号法将可行流放大,从而得出最大流。在原网络中运用标号法将可行流放大,从而得出最大流。steu tesus容量有上下界的网络的最大流容量有上下

19、界的网络的最大流例原网络,第一个数字为例原网络,第一个数字为b(e),第二个为,第二个为c(e)容量有上下界的网络的最大流容量有上下界的网络的最大流按照上述算法求得按照上述算法求得附加网络,并用标附加网络,并用标号法求此网络的最号法求此网络的最大流。大流。发现从发现从 流出的流流出的流都满载,所以有可都满载,所以有可行流。行流。s容量有上下界的网络的最大流容量有上下界的网络的最大流按照按照f(e) f(e) b(e)将此最大流还原为原将此最大流还原为原网络的最大流网络的最大流容量有上下界的网络的最大流容量有上下界的网络的最大流用标号法进行可行流放大,得到最大流用标号法进行可行流放大,得到最大流

20、10容量有上下界的网络的最小流容量有上下界的网络的最小流n按照前述附加网络方法求得可行流,只不过在放按照前述附加网络方法求得可行流,只不过在放大可行流时,以大可行流时,以t为源点,为源点,s为汇点进行,倒向求为汇点进行,倒向求出的最大流为从出的最大流为从s到到t到的最小流。到的最小流。最小费用最大流问题最小费用最大流问题n求运输量最大且费用最少求运输量最大且费用最少的运输方案的运输方案n求一个最大流,使得此式求一个最大流,使得此式取最小值取最小值( )*ijijb fbf最小费用最大流问题最小费用最大流问题算法思想:算法思想: 若若f是所有可行流中费用最小的,而是所有可行流中费用最小的,而p是关于是关于f的的所有可改进路中费用最小的,沿着所有可改进路中费用最小的,沿着p取调整取调整f最大,最

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论