最大流问题(数学建模资料).ppt
《最大流问题(数学建模资料).ppt》由会员分享,可在线阅读,更多相关《最大流问题(数学建模资料).ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网网 络络 优优 化化 Network Optimizationhttp:/ 谢金星办公室:理科楼1308#(电话:62787812)Email: http:/ 6章章 最大流问题最大流问题 (Maximum Flow Problem)第第1讲讲1 许多实际问题都可以转化为最大流问题 S ST T最大流问题的例子公路交通网络:车流流量2定义定义6.1 在有向图在有向图G=(V,A)上定义如下的权函数:上定义如下的权函数:(1)L:AR为弧上的权函数,弧为弧上的权函数,弧(i,j)对应的权对应的权 L(i,j)记记为为lij,称为弧,称为弧(i,j)的的容量下界容量下界(lower bound)
2、;(2)U:A R为弧上的权函数,弧为弧上的权函数,弧(i,j)对应的权对应的权U(i,j)记为记为uij,称为弧,称为弧(i,j)的的容量上界容量上界,或直接称为,或直接称为容量容量(capacity);(3)D:V R为顶点上的权函数,节点为顶点上的权函数,节点i对应的权对应的权D(i)记为记为di,称为顶点称为顶点i的的供需量供需量(supply/demand);此时网络可称为此时网络可称为流网络流网络(Flow Network,一般仍简称为一般仍简称为网络网络),),记为记为 N=(V,A,L,U,D).6.1.16.1.1网络中的流网络中的流 di 0:供应点供应点(supply n
3、ode)(supply node)或源或源(source)(source)、起始点或发货点、起始点或发货点 di 0.在一个无源无汇的流网络中,一个可行流称为可行在一个无源无汇的流网络中,一个可行流称为可行循环流循环流。推论推论 一个可行循环流一定可以表示为至多一个可行循环流一定可以表示为至多m个非零圈流之和个非零圈流之和.如果i1是一个汇点,则找到了从源点指向汇点的一条有向路.否则从i1出发重复上述过程,直到找到一个汇点或再次遇到前面经过的某个顶点时为止,即直到下列两种情况之一出现为止:9当找到一个路流时当找到一个路流时,重新定义使得某个节点的供需量从非零成重新定义使得某个节点的供需量从非零
4、成为零为零,或者使得某条弧的流量从非零成为零或者使得某条弧的流量从非零成为零.当找到一个圈流当找到一个圈流时时,重新定义使得某条弧的流量从非零成为零重新定义使得某条弧的流量从非零成为零.对新网络对新网络,重复上述过程重复上述过程,直到所有顶点变成为转运点直到所有顶点变成为转运点(平衡点平衡点).然然后后,找找到到一一个个至至少少有有一一条条出出弧弧上上的的流流量量为为正正的的顶顶点点,继继续续重重复复上上述述过过程程,这这时时只只有有情情形形(b)(b)会会出出现现,即即一一定定获获得得一一个个非非零零圈圈流流.重复上述过程重复上述过程,直到重新定义的流直到重新定义的流x x成为零流为止成为零
5、流为止.(b)(b)找到一个有向圈W.此时,定义(a)(a)找到一条从一个源点找到一条从一个源点i i0 0指向一个汇点指向一个汇点i ik k的有向路的有向路P P.定义定义 上述过程找到路流和圈流的次数之和不会多于上述过程找到路流和圈流的次数之和不会多于m m+n n次,且其中找次,且其中找到圈流的次数不会多于到圈流的次数不会多于m m次次.10单源单汇的网络,可行流单源单汇的网络,可行流x的的流量流量(或(或流值流值)为)为v=v(x)=ds=-dt如果我们并不给定如果我们并不给定ds 和和dt,则网络一般记为则网络一般记为N=(s,t,V,A,U),),容量可行且容量可行且转运点流量守
6、恒的流称为转运点流量守恒的流称为s-t可行流可行流,有时为了方便也称为,有时为了方便也称为可行流可行流.最大流问题最大流问题(Maximum Flow Problem)就是在就是在N=(s,t,V,A,U)中找到流值最大中找到流值最大的的s-t可行流可行流(即即最大流最大流).6.1.2 最大流问题的数学描述最大流问题的数学描述 定理定理6.2(6.2(整流定理整流定理)最大流问题所对应的约束矩阵是全么模最大流问题所对应的约束矩阵是全么模矩阵矩阵.若所有弧容量均为正整数若所有弧容量均为正整数,则问题存在最优整数解则问题存在最优整数解.11引理引理6.1 6.1 任意一个任意一个s-ts-t可行
7、流流值不超过任意一个可行流流值不超过任意一个s-ts-t割容量割容量.6.1.3 增广路定理增广路定理 定定义义6.5 设S,T是网络N=(s,t,V,A,U)中给定的一个割,且sS,t T,则称割S,T为s-t割.s-t割S,T中的弧(i,j)(iS,jT)称为割的前向弧,弧(i,j)(jS,iT)称为割的反向弧.s-t割S,T的容量定义为前向弧的容量之和,记为一个网络中容量最小的s-t割称为最小割.12增广路增广路引理引理6.2 6.2 如果对于一个可行流存在增广路,则该可行流不是最大流如果对于一个可行流存在增广路,则该可行流不是最大流.定定义义6.6 6.6 设设x x是是流流网网络络N
8、=N=(s s,t t,V V,A A,U U)中中给给定定的的可可行行流流,P P是是一一条条s-ts-t路路,则则P P中中满足下列两个条件之一的弧(满足下列两个条件之一的弧(i i,j j)称为)称为增广弧增广弧(augmenting arc)(augmenting arc):(1 1)弧()弧(i i,j j)是)是P P的前向弧且为不饱和弧;或的前向弧且为不饱和弧;或(2 2)弧()弧(i i,j j)是)是P P的反向弧且为非空弧的反向弧且为非空弧.如如果果P P中中的的弧弧都都是是增增广广弧弧,则则称称P P为为关关于于流流x x的的增增广广路路,简简称称增增广广路路(augme
9、nting path).(augmenting path).这一过程称为这一过程称为x 关于关于P的的增广增广(augmentation)13证明证明 必要性可以由前面的引理直接得到必要性可以由前面的引理直接得到.下面证明充分性下面证明充分性.定定理理6.3 (增广路定理)一个可行流为最大流的充要条件是不存在增广路.增广路定理增广路定理 假设流网络假设流网络N=N=(s s,t t,V V,A A,U U)中不存在关于可行流中不存在关于可行流x x的增广路的增广路,记记网络中从网络中从s s出发沿增广弧可以到达的节点集合为出发沿增广弧可以到达的节点集合为S S,令令T T=VSVS,则则s s
10、S S,t tT T,即,即S,TS,T为为s-ts-t割割.并且并且,对于对于A A中的任意弧中的任意弧(i,ji,j),),如果它是该如果它是该s-ts-t割的前向弧割的前向弧,则则;如果它是该如果它是该s-ts-t割的后向割的后向弧弧,则则=0.=0.引理引理6.16.1证明中的中间结果证明中的中间结果 因此因此,S,TS,T 为最小割为最小割,x x为最大流为最大流.定理定理6.4 (最大流最小割定理)最大流的流值等于最小割的容量.146.2 6.2 增广路算法增广路算法 6.2.1 Ford-Fulkerson6.2.1 Ford-Fulkerson标号算法标号算法 ()()基基本本
11、思思想想:从从任任何何一一个个可可行行流流开开始始,沿沿增增广广路路对对流流进进行行增广增广,直到网络中不存在增广路为止直到网络中不存在增广路为止.问问题题的的关关键键在在于于如如何何有有效效地地找找到到增增广广路路,并并保保证证算算法法在在有限次增广后一定终止有限次增广后一定终止.基本思想:标号过程来寻找网络中的增广路基本思想:标号过程来寻找网络中的增广路predpred(j j):节点):节点j j 在可能的增广路中的前一个节点在可能的增广路中的前一个节点;maxfmaxf(j j):沿沿该该可可能能的的增增广广路路到到该该节节点点为为止止可可以以增增广广的最大流量的最大流量.LIST:L
12、IST:记录可能的增广路上的节点记录可能的增广路上的节点15STEP5.STEP5.转转STEP3.STEP3.STEP3.如果如果LIST 且且maxf(t)=0,继续下一步继续下一步;否则否则:(3a)如如果果 t 已已经经有有标标号号(即即maxf(t)0),则则找找到到了了一一条条增增广广路路,沿沿该该增增广广路路对对流流 x 进进行行增增广广(增增广广的的流流量量为为maxf(t),增增广广路路可可以以根根据据pred回回溯溯方方便便地地得得到到),转转STEP1.(3b)如果如果 t 没有标号没有标号(即即LIST=且且maxf(t)=0),转转STEP1.STEP4.从从LIST
13、中移走一个节点中移走一个节点i;寻找从节点;寻找从节点i出发的所有可能的增广弧:出发的所有可能的增广弧:(4a)对对非非饱饱和和前前向向弧弧(i,j),若若节节点点 j 没没有有标标号号(即即pred(j)=0),则则对对j进进行标号,即令行标号,即令maxf(j)=minmaxf(i),uij-xij,pred(j)=i,并将并将j加入加入LIST中中.(4b)对对非非空空反反向向弧弧(j,i),若若节节点点 j 没没有有标标号号(即即pred(j)=0),则则对对j进进行行标标号,令号,令maxf(j)=minmaxf(i),xji,pred(j)=i,并将并将j加入加入LIST中中.ST
14、EP1.若若maxf(t)0,继续下一步继续下一步;否则结束否则结束.STEP0.置置初初始始可可行行流流 x(如如零零流流);对对节节点点 t 标标号号,即即令令maxf(t)=任任意意正正值值(如(如1).STEP2.取取消消所所有有节节点点 j V 的的标标号号,即即令令maxf(j)=0,pred(j)=0;令令LIST=s;对节点对节点 s 标号,即令标号,即令maxf(s)=充分大的正值充分大的正值.16最大流流值为最大流流值为4 4 Ford-FulkersonFord-Fulkerson标号算法标号算法,例:例:(uij,xij)S 15 t2341,11,11,11,01,0
15、2,13,13,0S 15 t2341,11,11,11,01,02,23,13,1S 15 t2341,11,11,11,01,12,23,03,217最大流流值为最大流流值为2*2*106Ford-FulkersonFord-Fulkerson标号算法标号算法,例:例:(uij,xij)S 15 t4106,11,1106,0106,1106,05 t24106,01,0106,0106,0106,0S 15 t4106,11,0106,1106,1106,1S 118该算法是否一定在有限步内终止呢?该算法是否一定在有限步内终止呢?如如果果弧弧上上的的容容量量可可以以是是无无理理数数,可可
16、以以举举出出例例子子说说明明标标号号算算法法不不一一定定在在有有限限步步内内终终止止;并并且且,这这一一增增广广路路算算法法的的极极限限过过程程得得到到的的流流的流值即使收敛,也不一定收敛到最大流的流值即使收敛,也不一定收敛到最大流 Ford-FulkersonFord-Fulkerson标号算法标号算法标号算法终止时,网络中一定不再含有增广路标号算法终止时,网络中一定不再含有增广路.如如果果所所有有弧弧上上的的容容量量都都是是正正整整数数,根根据据整整流流定定理理,最最大大流流v也也是是整整数数.实实际际上上,由由于于割割s,Vs中中前前向向弧弧的的条条数数最最多多为为n条条,因此最大流因此
17、最大流v的上界为的上界为nU(U表示网络中弧上的最大容量)表示网络中弧上的最大容量).由由于于每每次次增增广广至至少少使使得得流流值值增增加加1个个单单位位,因因此此增增广广的的次次数数不不会超过会超过v次,算法一定在有限步内终止次,算法一定在有限步内终止.此此外外,由由于于每每次次增增广广最最多多需需要要对对所所有有弧弧检检查查一一遍遍,因因此此算算法法的的复杂度为复杂度为O(mv),),或表示为或表示为O(mnU).伪多项式时间算法,而不是多项式时间算法伪多项式时间算法,而不是多项式时间算法.19定定义义6.7 对对网网络络N=(s,t,V,A,U)中中给给定定的的s-t可可行行流流x,网
18、网络络N关关于于流流x的的残残量量网网络络N(x)=(s,t,V,A(x),U(x),其其中中A(x),U(x)定定义义如如下下:(residual network,又常称为增量网络或辅助网络,又常称为增量网络或辅助网络)6.2.2 6.2.2 残量网络残量网络 讨讨论论算算法法复复杂杂度度时时,假假定定:弧弧(i,j)A时时,弧弧(j,i)A;并并假假定定在在残残量量网网络络中中A(x)=A,也也就就是是说说弧弧的的条条数数和和弧弧集集合合都都不变不变.这只要允许容量为这只要允许容量为0的弧仍然保留在网络中就可以了的弧仍然保留在网络中就可以了.命题:若命题:若v*是原网络的最大流,则残量网络
19、是原网络的最大流,则残量网络N(x)中最大流为中最大流为 v*-v(x).其中称其中称,uij(x)为弧为弧(i,j)上的上的残留容量残留容量(residual capacity).20残量网络残量网络,例:例:(uij,xij)N(x)中的中的s-t有向路有向路P,对应于原网络对应于原网络N中的一条增广路中的一条增广路;直接称残量网络中的直接称残量网络中的s-t有向路为增广路有向路为增广路.沿沿P可以增广的最大流量称为可以增广的最大流量称为P的的残留容量残留容量.4,14,12,12,12,02,02,22,22,22,21,01,01,11,12,22,22,12,1s st t1 13
20、31 11 12 22 21 11 12 21 11 12 2t ts s21Ford-Fulkerson标标号号算算法法每每次次只只是是在在所所有有增增广广路路中中随随便便地地找找一一条条进行增广进行增广,因此增广的次数可能很多因此增广的次数可能很多.一一个个自自然然的的想想法法是是:如如果果每每次次都都找找一一条条增增广广容容量量最最大大的的增增广广路路,则总的增广次数应当减少则总的增广次数应当减少.这样的算法称为这样的算法称为最大容量增广路算法最大容量增广路算法.6.2.3 6.2.3 最大容量增广路算法最大容量增广路算法S 15 t24106,01,0106,0106,0106,0S
21、15 t4106,11,1106,0106,1106,022最大容量增广路算法最大容量增广路算法 复杂性分析复杂性分析证证明明:根根据据流流的的分分解解定定理理,N(x)中中可可以以找找到到不不超超过过m条条从从源源点点到汇点的有向路(增广路),使得其残留容量之和为到汇点的有向路(增广路),使得其残留容量之和为v*-v(x).现在考虑从可行流现在考虑从可行流x开始的连续开始的连续2m次最大容量增广:次最大容量增广:(1)如如果果每每次次增增广广的的流流量量都都不不小小于于(v*-v(x)/2m,则则2m次次增增广广后后一一定定已已经经达达到了最大流;到了最大流;(2)某某次次增增广广的的流流量
22、量小小于于(v*-v(x)/2m,即即每每经经过过连连续续2m次次最最大大容容量量增增广广,残残量网络中的最大容量增广路的残留容量至少下降一半量网络中的最大容量增广路的残留容量至少下降一半.命题:命题:N(x)中最大容量增广路的残留容量不小于中最大容量增广路的残留容量不小于(v*-v(x)/m.可可见见,最最大大容容量量增增广广路路算算法法将将总总的的增增广广次次数数从从Ford-Fulkerson标标号号算算法法的的O(nU)降为了)降为了O(mlogU)次)次,因此是一种多项式时间算法,因此是一种多项式时间算法.由由于于最最大大容容量量增增广广路路算算法法每每次次需需要要在在残残量量网网络
23、络中中寻寻找找最最大大容容量量增增广广路路(可可以以用最短路算法),因此每次增用最短路算法),因此每次增广的时间花费增加了广的时间花费增加了.由由于于任任何何增增广广路路的的残残留留容容量量不不会会超超过过U(U表表示示网网络络中中弧弧上上的的最最大大容容量量)且且至至少少为为1(这这里里假假设设只只考考虑虑整整数数容容量量网网络络),因因此此最最多多经经过过O(2mlogU)=O(mlogU)次最大容量增广,一定已经达到了最大流)次最大容量增广,一定已经达到了最大流.23 (Capacity-Scaling Algorithm)(Capacity-Scaling Algorithm)6.2.
24、4 容量变尺度算法 STEP3.若若N(x,)不不存存在在s-t 路路,继继续续下下一一步步;否否则则从从N(x,)找找到到一条一条s-t 路路P,沿沿P对当前流进行增广对当前流进行增广,并重复并重复STEP3.STEP1.若若 1,结束结束,已经得到最优解已经得到最优解;否则进行下一步否则进行下一步.STEP2.构造构造 -残量网络残量网络 N(x,).STEP0.置初始可行流置初始可行流 x(如零流)(如零流);=.STEP4.=/2;转;转STEP1.定定义义:对对N=(s,t,V,A,U)中中给给定定的的s-t可可行行流流x,网网络络N关关于于流流x的的 -残残量量网网络络N(x,)是
25、是其其残残量量网网络络N(x)的的子子网网络络,它它由由残残留留容容量量不不小于小于 的弧组成的弧组成.整数容量网络,整数容量网络,N(x,1)=N(x).容容量量变变尺尺度度算算法法每每次次都都找找一一条条增增广广容容量量“充充分分大大”的的增增广广路路,但但不一定最大不一定最大.24容量变尺度算法算法 复杂性分析复杂性分析 的值总共有的值总共有O(logU)种取法)种取法.我们下面说明在给定的我们下面说明在给定的 下,最多执行下,最多执行2m次增广次增广:由由于于在在2-残残量量网网络络中中已已经经没没有有增增广广路路,因因此此在在-残残量量网网络络中中的的最最大大流流不不会会超超过过2m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最大 问题 数学 建模 资料
限制150内