网络优化7最小费用流问题.ppt
《网络优化7最小费用流问题.ppt》由会员分享,可在线阅读,更多相关《网络优化7最小费用流问题.ppt(76页珍藏版)》请在三一办公上搜索。
1、1,网 络 优 化,Network Optimizationhttp:/,清华大学数学科学系 谢金星办公室:理科楼2206#(电话:62787812)Email:http:/,清华大学课号:70420133(研),第7章 最小费用流问题(Minimum Cost Flow Problem)第1讲,2,许多实际问题都可以转化为最小费用流问题,S,T,最小费用流问题的例子,公路交通网络:车辆路线确定,最短路问题,最小费用流问题,1辆车,多辆车:车流,3,定义7.1 在流网络N=(V,A,L,U,D)上增加如下的权函数:C:A R为弧上的权函数,弧(i,j)对应的权 C(i,j)记为cij,称为弧(
2、i,j)的单位流量的成本或费用(cost);此时网络可称为容量-费用网络(一般仍可简称为网络),记为 N=(V,A,C,L,U,D).,7.1.1 最小费用流问题,di 0:供应点(supply node)或源(source)、起始点或发货点 di 0:需求点(demand node)或汇(sink)、终止点或吸收点 di 0:转运点(transshipment node)或平衡点、中间点,可以把L 0的网络转化为L=0的网络进行研究(思考?)除非特别说明,假设L=0,网络简记为N=(V,A,C,U,D).,4,定义7.2(容量-费用网络中的流(flow)的定义同前一章)流x的(总)费用定义为
3、,通常又称为转运问题(transshipment problem)或容量受限的转运问题(capacitated transshipment problem).,最小费用流问题就是在网络中寻找总费用最小的可行流.,最小费用流问题,引理7.1 最小费用流问题存在可行流的必要条件,经典的最小费用流问题:单源单汇(起点s,终点t),寻找从s流到t的给定流量(或最大流量、最小流量等)的最小费用流.,线性费用网络,思考:经典问题与一般问题有什么关系?是否等价?,5,例 7.1 最短路问题,在有向网络中,令所有弧上容量下界为0,容量(上界)为1,并令图中节点s的供需量为1,节点t的供需量为-1,则:从s到t
4、的一条有向路正好对应于网络中的一个可行流x(弧(i,j)位于s-t路上:xij=1;弧(i,j)不在s-t路上:xij=0).如果再令所有弧上的(单位流量)的费用为“弧长”,则此时的最小费用流问题就是第五章讨论过的最短路问题.在第五章我们正是用这样的方式对最短路问题进行建模的,7.1.2 最小费用流模型的特例及扩展,6,例-最大流问题,设s为起点,t为终点,增加弧(t,s),令,7.1.2 最小费用流模型的特例及扩展,而令所有其他弧上的费用为0,所有顶点上的供需量(外部流量)全为0.,7,例-运输问题(transportation Problem)又称Hitchcock问题(Hitchcock
5、,1941年),完全二部图只有源和汇没有中间转运点,7.1.2 最小费用流模型的特例及扩展,如果每条弧上还有容量(上下限)的限制,则称为容量受限的运输问题(capacitated transportation problem).,有解的必要条件,可以不失一般性,指派问题(assignment problem),8,7.1.2 最小费用流模型的特例及扩展,(1)当一定的流量流过一条弧时,该弧上导致的总费用与流量大小成线性正比关系,这样的流网络一般称为线性费用网络.如果当一定的流量流过一条弧时,该弧上导致的总费用不一定与流量大小成线性正比关系,而是流量大小的一个凹(或凸)函数,则这样的网络称为凹(
6、或凸)费用网络,相应的最小费用流问题称为凹(凸)费用网络上的最小费用流问题.,(2)当流量流过一条弧时,流出该弧的流量(即流入该弧终点的流量)与进入该弧的流量(即流出该弧起点的流量)相等.如果当流量流过一条弧时,流出该弧的流量是进入该弧的流量的一个线性函数,即流出该弧的流量是对进入该弧的流量按一定比例进行放大或缩小的结果,则这样的流网络一般称为带增益(或盈亏)的流网络(flow with gain network).增益除了可以发生在弧上,类似地可以考虑增益发生在节点上,9,7.1.2 最小费用流模型的特例及扩展,最 小 费 用 流 问 题,狭义模型,广义模型,10,单源单汇网络可行流x的流量
7、(或流值)为v=v(x)=ds=-dt如果我们并不给定ds 和dt,则网络一般记为N=(s,t,V,A,C,U)容量可行且转运点流量守恒的流称为s-t可行流,有时为了方便也称为可行流.最小费用流问题就是在网络N=(s,t,V,A,C,U)中计算流值为v的最小费用流x 或者当不给定流值时,计算流值最大的最小费用流x(此时流x称为最小费用最大流).,7.2 消圈算法与最小费用路算法,最小费用最小流?,11,7.2 消圈算法与最小费用路算法,定义7.3 对网络N=(s,t,V,A,C,U)中给定的s-t可行流x,网络N关于流x的残量网络N(x)=(s,t,V,A(x),C(x),U(x),其中A(x
8、),C(x),U(x)定义如下:(residual network,或增量网络或辅助网络),讨论算法复杂度时,假定:弧(i,j)A时,弧(j,i)A;c ij=-cjiA(x)=A(允许容量为0的弧仍然保留在网络中就可以了),其中称,uij(x)为弧(i,j)上的残留容量(residual capacity).,12,定义W的费用为,对于N(x)中的任何一个有向圈W,它一定对应于原网络N中的一个增广圈(增广弧构成的圈);通过沿W对当前流x进行增广,可以获得流值相等的s-t可行流y.,消圈算法的思想,则当增广的流量为时,只要N中存在费用为负数的增广圈W,即C(W)0,则可以通过沿W 对当前流 x
9、 进行增广,获得流值相等但费用更小的s-t可行流y.,13,设x0为不同于的可行流,但费用低于x的费用,即,7.2.1 消圈算法(cycle-canceling algorithm),定理7.1 可行流x为最小费用流的充要条件是N(x)中不存在负费用增广圈.,令 x1=x0-x,则,即令x1为网络N中的循环流.,一个循环流一定可以表示为至多m个非零圈流之和,所以可以将x1表示为r个非零圈流之和()。设对应的有向圈为Wk,,至少存在一个费用为负的增广圈.矛盾,必要性是显然的.反证法证明充分性:,14,N(x)中找负圈可用最短路算法(如Bellman-Ford算法,O(m n)则该算法的复杂度为O
10、(n m 2CU),不是多项式时间算法.,STEP 2.沿找到的负圈增广流量,转STEP 1.,Step0可借用最大流算法,复杂度为O(n2m),STEP 0.在网络N=(s,t,V,A,C,U)中计算流值为v的可行流 x.,7.2.1 消圈算法:Klein(1967)等,STEP 1.在残量网络N(x)中判别负圈.若无负圈,则已经找到了最小费用流,结束;否则转STEP 2.,如按一些特定次序消圈,可得到一些多项式时间算法,复杂度?,任何可行流的费用不可能超过mCU设数据是整数,每次消去一个负圈至少使费用下降一个单位设数据是整数,消去负圈的STEP12最多执行O(mCU)次,15,略,7.2.
11、1 消圈算法,例:,16,能否首先在网络N=(s,t,V,A,C,U)中计算流值为v且费用最小的s-t可行流(v v),然后对它沿增广路增广以增加流值呢?,7.2.2 最小费用路算法,为了获得最小费用流,我们希望沿费用最小的增广路对当前流x进行增广,以最小的费用增加获得流值更大的s-t可行流y,对于N(x)中的一条从s到t的有向路P,它一定对应于原网络N中的一条增广路,即可以通过沿P对当前流x进行增广,获得流值更大的s-t可行流y.定义P的费用为,则当增广的流量为时,17,7.2.2 最小费用路算法,定理7.2 设x为流值为v的最小费用流,P为关于x的从s到t的一条最小费用增广路,且沿P所能增
12、广的流量为,则增广后得到流值为v+的最小费用流y.,只需证明网络中不存在关于y的负费用增广圈.用反证法,假设增广后存在关于y的负费用增广圈W.由于除P以外的弧及其流量在增广前后没有发生改变,于是P和W至少有一条公共弧.不妨假设P和W只有一条公共弧,记为(i,j),如果(i,j)在P中是正向弧,则在W中是反向弧;反之,如果(i,j)在P中是反向弧,则在W中是正向弧,也是网络中关于x的增广路,且,18,7.2.2 最小费用路算法,也称为连续最短路算法,即Successive Shortest Path Algorithm),Jewell(1958),Iri(1960),Busacker&Gowen
13、(1961)独立提出的,STEP 0.取x为任一s-t可行流、且在同一流值的流中费用最小的流(如x=0).,STEP 1.若x的流值达到v,结束;否则在残量网络N(x)中判别最小费用路.若无这样的路,则流值不可达到v,结束;否则STEP 2.,STEP 2.沿该最小费用增广路增广流量(增广后的流值不超过v),转STEP 1.,STEP1可用最短路算法:记最短路算法的复杂度为S(n,m,C),STEP12最多执行O(v)次,复杂度?,最大流流值不超过nU,本算法复杂度为 O(nUS(n,m,C),采用特定的变尺度技术,可以得到一些多项式时间算法,19,略,7.2.2 最小费用路算法,例:,20,
14、7.3.1对偶问题及互补松弛条件,仍然考虑传统的单源单汇网络的最小费用流问题,两类约束分别引入对偶变量和z,则这一问题的对偶问题为,7.3 原始-对偶算法,21,互补松弛条件 设x和(,z)分别为原问题和对偶问题的可行解:,下面我们说明在一定的“约定”下,这一条件可以等价地写成当 时,=0;(7.19)当 时,=;(7.20)当 时,.(7.21),约定:存在对偶可行的变量z,使得上式成立.,定理7.3 设x为原问题的可行解,则x为最小费用流的充要条件是:存在节点的势(),满足条件(7.19)(7.21).,7.3.1对偶问题及互补松弛条件,记“相对费用”(Reduced Cost),22,7
15、.3.1对偶问题及互补松弛条件,引理7.2 最优性条件(7.19)(7.21)等价于,对于N(x)中任意的(i,j)弧,0,当 时,即 0,所以=-()=-0,因此(j,i)弧不属于残量网络N(x).所以=0.,当 时,即 0,(i,j)弧不属于残量网络N(x),=,当 时,(i,j),(j,i)弧均属于残量网络N(x).所以,所以,23,思路:从流值不一定达到v的s-t可行流开始,迭代中始终保持最优性条件(7.19)(7.21)成立,直到流值达到v为止.迭代包括两个方面:对弧上流的增广;对节点上势的修改,当N0(x)中找不到增广路且流值小于v时,必须进行下一个过程,修改节点上的势.,原始-对
16、偶算法就是在允许网络N0(x)中寻找增广路并进行增广(最大流),为保证流的增广过程中始终保持最优性条件(7.19)(7.21),原始-对偶算法只沿满足 的弧增广流量.,N(x)中满足 的弧组成的子网络称为允许网络(Admissible Network),记为N0(x)=,7.3.2原始-对偶算法 基本思想,N0(x)中的弧就是N(x)中满足=0的弧,24,7.3.2原始-对偶算法 基本思想,当N0(x)中找不到增广路且流值小于v时,必须修改节点上的势.保持最优性条件(7.19)(7.21),并且希望修改后N0(x)中可以找到增广路,可以证明,修改后最优性条件(7.19)(7.21)仍然成立,且
17、将会有新的弧增加到N0(x)中.,希望把N(x)中一些不满足=0的弧也纳入N0(x)中.,以 为弧长在N(x)中计算从节点s到所有节点i的最短路路长d(i).,25,7.3.2原始-对偶算法:Ford和Forkerson(1957,1962),STEP 0.取x为任一s-t可行流(如x=0),令初始势=0.,STEP 1.若x的流值达到v,计算结束;否则在残量网络N(x)中,以相对费用为弧长,计算从节点s到所有节点i的最短路路长d(i),并令i=i-d(i),继续STEP 2.,STEP 2.在允许网络N0(x)中判别从s到t的最大流(如可用第6章介绍的算法).若该最大流流值为0,则原网络中流
18、的流值不可达到v,计算结束;否则沿该最大流确定的增广路增广流量(增广后的流值不超过v),转STEP 1.,26,7.3.2原始-对偶算法 正确性,引理7.3 在算法运行过程中,最优性条件(7.19)(7.21)成立.,证明 算法开始时,最优性条件(7.19)(7.21)显然成立.只需证明:如i满足(7.19)(7.21),则改为i=i-d(i)后,仍满足(7.19)(7.21).,即,由引理7.2,对于N(x)中任意的(i,j)弧,一定有 0,且只需证明,根据最短路方程,d(j)-d(i)=,即 cij-(i-d(i)+(j-d(j)0,27,7.3.2原始-对偶算法 正确性,上面几个引理和讨
19、论说明,前面介绍的算法是正确的.,即,讨论 这一引理说明,只要N(x)中从s到t存在有向路(增广路),则修改为后,将会有新的弧增加到N0(x)中,N0(x)中从s到t存在有向路(增广路),即可以对当前流进行增广。,证明 对于最短路上的弧(i,j)有 d(j)-d(i)=,即 cij-(i-d(i)+(j-d(j)=0,引理7.4 对于N(x)中一条弧(i,j),如果它位于从起点 s 到某一节点的最短路上(以 为(p,q)弧的弧长),则,28,7.3.2原始-对偶算法-讨论,原始-对偶算法的特点 在运行中始终保持对偶变量为对偶问题的可行解,并始终保持互补松弛条件,但原始变量x在算法终止前通常不是
20、原问题的可行解(即只是伪流,而不是流值为v的可行流).,最小费用路算法是一种特殊的原始-对偶算法 虽然没有显示地引入对偶变量,但我们也可以与本节介绍的算法一样引入对偶变量,可以认为也是保持对偶可行和互补松弛条件的;特殊性在于要求增广流量时每次沿“一条”最小费用路增广.,下面引理说明:本节介绍的原始-对偶算法实际上也是沿最小费用路增广流值,只是可能每次沿“多条”最小费用路同时增广(即最小费用路最大流增广).,29,7.3.2原始-对偶算法-讨论,引理7.5 对于N(x)中从任一节点p到另一节点q的一条有向路P,,讨论 对于N(x)中从s到t的一条有向路(增广路)P,一定有 即,直接应用 的定义就
21、可以得到上述结果.,对于给定的对偶变量,由于N(x)中 0,所以满足=0的弧(即允许网络N0(x)中的弧)组成的增广路是N(x)中的最小费用路.,30,N(x)=N,例7.4 用原始-对偶算法计算如图7.5(a)网络中的最小费用流(图中弧上的前一个数字表示弧上的容量,后一个数字表示弧上的单位费用;节点上的数字表示节点的供需量).,7.3.2原始-对偶算法,例:,x=0,=0,计算得到 d=(0,0,0,1,2,1),修改得到=(0,0,0,-1,-2,-1),(uij,cij),31,7.3.2原始-对偶算法,例,计算得到 d=(0,0,0,1,0,1),修改得到=(0,0,0,-2,-2,-
22、2),最大流流值为2,增广,32,7.3.2原始-对偶算法,例,x的流值达到4得到最小费用流,最大流流值为2,增广,33,7.3.2原始-对偶算法 复杂性分析,算法每次循环迭代修改弧上的流值和节点上的势各一次.由于流值不可能超过nU,且任何节点上的势不可能低于-nC,因此总迭代次数不会超过minnU,nC.,记求解非负弧长网络的最短路算法的复杂度为S(n,m,C),最大流算法的复杂度为M(n,m,U)本算法复杂度为O(minnU,nCS(n,m,nC)+M(n,m,U)这一算法仍然不是多项式时间算法,与最小费用路算法相比,可能会以每次迭代调用一次最大流算法为代价,希望减少一些迭代次数.,34,
23、布 置 作 业,目的,掌握最小费用流问题的基本概念和建模方法;掌握消圈算法与最小费用路算法及其复杂度;掌握原始-对偶算法的基本思想。,内容,网络优化第245-251页3;6;15;(第1讲),思考,4;5;(不交),35,网 络 优 化,Network Optimizationhttp:/,清华大学数学科学系 谢金星办公室:理科楼2206#(电话:62787812)Email:http:/,清华大学课号:70420133(研),第7章 最小费用流问题(Minimum Cost Flow Problem)第2讲,36,(Out-Of-Kilter Algorithm),瑕疵算法(也翻译为“状态算
24、法”)在迭代过程中则对这些条件更为放宽:只要求满足节点上的流量守恒条件,而不要求x为伪流(即可能不满足容量约束),并且也不一定保持互补松弛条件.,最小费用路算法和原始-对偶算法的特点:对偶变量为对偶问题的可行解,并始终保持互补松弛条件;但原始变量x在算法终止前通常不是原问题的可行解(即只是伪流,而不一定满足节点上的流量守恒条件,即不是流值为v的可行流).,7.4瑕疵算法,37,(Out-Of-Kilter Algorithm),想一想,非循环流的情况是否都可以转化为循环流的情况?,算法的思想:通过一定步骤,使非最优的“程度”不断降低,最后达到最优.可以认为,瑕疵算法是原始-对偶算法的一种变形.
25、,瑕疵算法的考察对象:循环流(Circulation):流值为0的可行流(没有所谓源点和汇点,网络中的所有节点都是转运点)网络中容量下限 L 不一定为0;,7.4瑕疵算法,38,-Kilter条件,7.4瑕疵算法,L0,L=0,最小费用循环流模型,当 0 时,=0;(7.19)当 0 时,=;(7.20)当 时,=0.(7.21),当 0 时,=;(7.23)当 0 时,=;(7.24)当 时,=0.(7.25),互补松弛条件,Kilter条件(或译为瑕疵条件、状态条件等),满足该条件的弧为无瑕的(In-Kilter),否则称为有瑕的(Out-Of-Kilter).,39,-Kilter图;K
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 优化 最小 费用 问题
链接地址:https://www.31ppt.com/p-5444251.html