一种网络最大流的并行求解方法

文档序号:6385501阅读:257来源:国知局
专利名称:一种网络最大流的并行求解方法
技术领域
本发明涉及一种网络流的优化方法,尤其涉及一种网络最大流的并行求解方法。
背景技术
作为ー个经典的组合优化问题,网络最大流旨在解决在有容量限制的网络中,供应点(源点)能够传输到需求点(汇点)的最大流量问题,其在交通、电力、通讯、计算机网络等工程领域和物理、化学等科学领域有着广泛的应用,如研究交通网络中的运输能力、供电网络中的供电能力、信息网络中的信息传输能力等等(R K Ahuja等,1993)。求解网络最大流问题能充分发挥网络的设备能力及明确如何改造网络来提升网络传输能力。张宪超和陈国良等(2003)在《网络最大流问题研究进展》中提到,虽然网络最大流问题已有很多年的研究历史,人们建立了较为完善的理论,开发了大量的算法,但目前算法的实际性能还不能满足许多应用问题的要求。近年来,计算机硬件的不断发展,并行计算技术的不断推广,使得基于多核及集群架构下的并行计算成为解决传统串行计算效率不高及内存受限的有效方法。然而正如BHong(2011)和M Eleyat (2012)所述,研究网络最大流问题的并行求解方法具有很大的挑战性,许多网络最大流并行求解方法的研究都集中在共享内存模式下,随着核数及全局内存的增加,内部通讯与同步开销也随之加大,导致计算效率下降。同样,在网络最大流的分布式求解方法(如:T.L.Pham, 2005)中,各计算单元需要通过消息传递来实现计算,频繁的消息传递会増加过多额外的时间开销,限制了其应用。參考文献:[I]R K Ahuja, T L Magnanti, J B Orlin.Network Flows:Theory, Algorithmsand Applications.New Jersey:Prentice-Hall,1993.
[2]张宪超,陈国良,万颖瑜,网络最大流问题研究进展,计算机研究与发展,2003,40(9):1281-1292.
[3]Mujahed Eleyat,Dag Haugland,et al,Parallel Algorithm for the MaximumFlow Problem withMinimum Lot Sizes.0perations Research Proceedings 2011,Zurich, Switzerland, August 30-September 2, 2011.
[4]Bo Hong, Zhengyu He,An Asynchronous Multithreaded Algorithm for theMaximum NetworkFlow Problem with Nonblocking Global Relabeling Heuristic.1EEETransaction on parallel andDistributed Systems,2011,22(6):1025-1033.
[5]T.L.Pham, Ivan Lavall 丨 ee,Marc Bui and S.H.D0.A DistributedAlgorithm for the MaximumFlow Problem.1n Proceedings of IEEE ISDPC “The 4thInternational Symposium on Parallel andDistributed Computing,,,pages 131-138,2005.三、发明内容
(一)解决的技术方案本发明的主要目的在于克服现有技术中的缺陷,公开一种高效的网络最大流问题的并行求解方法,加快求解速度。该方法能充分利用单机多核、多机多核及集群的计算硬件与网络资源进行高性能计算,解决传统串行算法计算效率低下、计算资源利用不足等瓶颈问题。(ニ)技术方案为便于后文阐述,现对相关术语解释如下:边界弧:连接各子网络的有向弧,边界弧是其起始点的边界的出弧,是其末端点的边界的入弧。边界顶点:包括边界弧的起始点和末端点、源点和汇点。剩余容量:弧的容量与流量之差。盈余流:顶点的流入总量与流出总量之差。活跃顶点:盈余流大于0的顶点。子网络与汇点的距离:汇点t到达子网络Nk中任意顶点所经过的最少弧数,记为d(t, Nk)。汇点的远邻顶点和近邻顶点:若顶点Vi所在子网络N(Vi)与顶点Vj所在子网络N(Vj)满足d (t, N(Vi))彡d (t, N(Vj)),则对Vj来说,Vi是汇点的远邻顶点,否则,为汇点的近邻顶点。`顶点与源点的距离:顶点Vi将盈余流回退至源点的最短路径长度,记为d(Vl,s),初始时,(Kvi, s) =°°。源点的远邻顶点和近邻顶点:若(!(Vi, s) > (Kvi, s),则对Vj来说,Vi为源点的远邻顶点,否则,为源点的近邻顶点。增广路径:源点将盈余流推向汇点的有向路径。本发明公开了ー种网络最大流的并行求解方法(如图1所述),主要包括以下几个步骤:1.某一个计算単元将网络分割成若干子网络,并将子网络和边界(包括边界弧和边界顶点)信息分发给各计算单元。2.在各子网络中,用3个等级(ー级,ニ级和三级)来标记边界顶点,具体是 初始时,标记源点为三级边界顶点,其它所有边界顶点(包括汇点)为ー级边界顶点;迭代过程中,源点和汇点的等级保持不变,而对子网络其它任意边界顶点Vi按下列方法进行标级:A.若存在边界的出弧(Vi, Vj)满足条件:I)剩余容量大于0,2) (Kt7N(Vi))彡d(t,N(Vj) ),3) Vj为非三级顶点,则标记Vi为ー级顶点;否则转至B ;B.若存在边界的出弧(VijVk)满足条件:1)剩余容量大于0,2) d(t,N(V1)) <d(t,N (vk) ),3) vk为非三级顶点,则标记Vi为ニ级顶点;否则转至C ;C.标记Vi为三级顶点。3.优先推进盈余流至高等级(一级>ニ级>三级)边界顶点并更新边界顶点等级,具体实现方法如下:A.捜索能将盈余流推到一级边界顶点的所有顶点,捜索到的活跃顶点将盈余流推向ー级边界顶点;更新此次搜索到的ニ级或三级边界顶点为ー级顶点。
B.捜索除ー级边界顶点外,能将盈余流推到ニ级边界顶点的其它所有顶点,捜索到的活跃顶点将盈余流推向ニ级边界顶点;更新此次搜索到的三级边界顶点为ニ级顶点。C.将子网络中不在一级和ニ级边界顶点上的盈余流推向三级边界顶点。4.跨子网络推进边界顶点盈余流。3个等级的边界顶点分别采取以下方式通过边界弧将盈余流推至相邻子网络:A.对于ー级边界顶点Vil,将其盈余流沿着边界的出弧(vn, Vj1)推进,其中(vn,Vjl)满足:1)剩余容量大于0,2) dhNh))非三级顶点;B.对于ニ级边界顶点Vi2,将其盈余流沿着边界的出弧(vi2, Vj2)推进,其中(vi2,vJ2)满足:1)剩余容量大于0,2)d(t,N(Vj.2))彡d(t,N(Vi2)), 3)む为非三级顶点;C.对于三级边界顶点Vi3,首先,将其盈余流沿着边界的入弧(vj3,vi3)推向相邻子网络中源点的近邻顶点Vj3,其中(vj3,vi3)流量大于0;若vi3还有盈余流剰余,则将其剰余的盈余流通过非边界的入弧(\4,vi3)推向相同子网络中源点的近邻顶点'4。5.若子网络中存在活跃顶点(除源点和汇点外),且其与源点的距离大于其所有入弧(流量大于0)的起始点与源点的距离,则重新计算各顶点与源点的距离。6.迭代运行步骤2-5,直至所有子网络中的盈余流都被推到汇点或回退至源点。7.通过寻找增广路径来判断是否达到最大流。若不存在增广路径,则表示已达到最大流,结束计算;否则,未达到最大流,某一个计算単元回收所有其它计算単元的计算结果和子网络(包括边界)信息,合并所有子网络成一个网络,并在合并后的网络上完成剰余计算,求得最大流。(ニ)有益效果1、利用本发明,能充分利用多核及集群的硬件资源进行高性能网络计算,解决传统串行算法计算效率低下、计算资源利用不足等瓶颈问题。2、本发明将子网络的边界顶点分为3个等级,优先推进盈余流至高等级(一级>ニ级>三级)的边界顶点,保证了盈余流推进效率,減少了通讯次数,可提升软件并行计算效率,并行效率最高可达80%,通过网络最大流的再优化保证了其正确性,可满足快速求解大規模复杂地理网络最大流的软件开发需求。


图1并行求解网络最大流的流程2为ー个有容量限制网络的实例图3为网络分割示意4为网络推进流时的状态I图5为网络推进流时的状态2图6为网络推进流时的状态3图7为求得网络最大流的结果
具体实施方式
以图2、图3、图4、图5、图6和图7(其中,图2-7中括号内的数字分别表示容量和流量,图3-7中虚线为网络分割线,与网络分割线相交的弧为子网络的边界弧,实线为子网络内部的弧,图4-6中顶点上方或下方的数字为顶点的级别,图7中虚线圆为标记顶点,实线圆为未标记顶点)为例,详细说明本发明的实现过程,其具体实施方式
如下:步骤1:设共有3个计算単元(分别为I号、2号及3号计算单元),I号计算单元将图2所述的网络分割成3个子网络N1, N2和N3(如图3所示),其中d(t,N3) > d(t,N2)>d UjN1), (KsjVi) =- (Vi为除s外的任意顶点),然后将3个子网络及边界信息分发给3个计算单元(N1给I号计算单元,N2给2号计算单元,N3给3号计算单元)。步骤2:初始时标记源点s为三级边界顶点,各子网络中所有其它边界顶点(包括汇点t)为ー级顶点;在迭代过程中,s和t的等级保持不变,对于子网络中的其它任意边界顶点Vi按下列方法进行标级:A.若存在边界的出弧(Vi7Vj1)满足条件:1)剩余容量大于0,2) (Kt7N(Vi))彡d(t,N(Vj1)), 3) Vj1为非三级顶点,则标记Vi为ー级顶点,记h (V1) = I ;否则,转至B ;B.若存在边界的出弧(VyVj2)满足条件:1)剩余容量大于0,2) (Ktj(Vi)) < d(t,N(Vj2)), 3) Vj2为非三级顶点,则标记Vi为ニ级顶点,记h (V1) = 2 ;否则,转至C ;C.标记Vi为三级顶点,记Ii(Vi) =3。如图4,边界顶点V6有边界的出弧(v6, V8)满足剩余容量大于0, d(t, N1) < d(t,N2)且h(v8) = I,故标记h(v6) = I ;边界顶点V8的边界弧中无满足上述条件的出弧,但存在边界的出弧(V8, V5)满足剩余容量大于0,d(t,N2) >Jih(V5) = I,故标记h(v8)=2;边界顶点V4无满足上述条件的边界弧, 故标记h (V4) =3。对图4所述状态的网络边界顶点进行标级的结果如图5所示。步骤3:优先推进盈余流至高等级边界顶点并更新边界顶点等级,具体实现方法如下:A.捜索能将盈余流推向一级边界顶点的其它顶点,捜索到的活跃顶点将盈余流推到ー级边界顶点(如图4所述,顶点V4和V5将盈余流推向顶点V9),若捜索到ニ级或三级边界顶点,则将它们更新为ー级顶点(如图5所述的顶点V11需要被更新为h(vn) = I);B.捜索除ー级边界顶点外,能将盈余流推向ニ级边界顶点的其它顶点,此次搜索到的活跃顶点将盈余流推到ニ级边界顶点,若捜索到三级边界顶点,则将它们更新为ニ级顶点(如图5所述的顶点Vltl的等级被更新为二等级,将盈余流推向V8);C.将不在一级和ニ级边界顶点上的盈余流推到三级边界顶点。步骤4:跨子网络推进边界顶点盈余流。对于不同等级的边界顶点,分别采取以下方式处理盈余流:A.对于ー级边界顶点Vil,将其盈余流沿着边界的出弧(VinVj1)(其中(VinVj1)满足:I)剩余容量大于0,2) d(t,N (Vjl)) < d(t,N(Vil)),3)Vjl为非三级顶点)将其盈余流推向相邻子网络(如图4所述,顶点V9将盈余流沿边界的出弧(v9,v12)推向顶点V12);B.对于ニ级边界顶点Vi2,将其盈余流沿着边界的出弧(vi2, Vj2)(其中(vi2, Vj2)满足:I)剩余容量大于0,2)(1(扒“'2))彡(1(扒“\2)),3)'2为非三级顶点)将其盈余流推至相邻子网络(如图6所述,顶点V8将盈余流推向V5);C.三级边界顶点沿着边界的入弧(流量大于0)将盈余流推向相邻子网络中源点的近邻顶点(如图5所述,顶点V5沿着(v2, V5)和(v3, V5)反向推进盈余流至V2和V3,结果如图6所示),若不能完全通过边界的入弧将盈余流推至相邻子网络,则将其剰余的盈余流通过非边界的入弧推至相同子网络中源点的近邻顶点(如图5所述,顶点V5将剩余的盈余流推向v4,结果如图6所示)。步骤5:若子网络中存在活跃顶点(除源点和汇点外),且其与源点的距离大于其所有入弧(流量大于0)的起始点与源点的距离,则重新计算各顶点与源点的距离(如图5和图6所示的顶点V5,高度从d(v5, s) =2变成(1(¥5,8) =3)。步骤6:迭代执行步骤2-5,直至所有子网络中除了源点和汇点外无其它活跃顶点,即表明网络中的盈余流全被推向汇点或回退至源点了。步骤7:通过寻找增广路径来判断是否达到最大流。具体步骤是:A.从新标记的边界顶点(初始化只有汇点t为新标记的顶点)开始,搜索并标记同子网络中的顶点Vi (要求Vi能将盈余流推向已标记顶点且自身未被标记);B.新标记的边界顶点通过剩余容量大于0的边界出弧或流量大于0的边界入弧,捜索并标记相邻子网络中未被标记的边界顶点;C.重复上述步骤1)_2),直至所有子网络中无新增标记顶点或源点被标记,得到顶点的标记情况。若源点被标记,则表示未达到最大流,I号计算单元回收其它计算单元的计算结果和子网络(包括边界)信息,合 井子网络成一个网络,并完成剰余计算(如采用预流推进算法);否则,结束计算。如图7所示,源点未被标记,表明已经求得最大流。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进ー步详细说明,所应理解的是, 以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种网络最大流的并行求解方法,其特征在于,主要包括以下步骤: 1)并行迭代推进网络盈余流,具体是: 首先将网络分割成若干子网络并将子网络分发给各计算单元;然后各计算单元采用基于等级优先的子网络盈余流的迭代推进方法将各子网络中的盈余流尽可能多地推向汇点,不能推向汇点的盈余流回退至源点; 2)采用合井子网络的方式优化网络流,具体是: 判断步骤I)求得的网络流是否为最大流,若不是,则采用合井子网络的方式优化网络流,得到最大流;否则结束计算。
2.根据权利要求1所述的网络最大流的并行求解方法,其特征在于,步骤I)所述的基于等级优先的子网络盈余流的迭代推进方法具体包括以下步骤: a)对各子网络的边界顶点进行标级; b)优先推进子网络中的盈余流至高等级边界顶点并更新边界顶点等级; c)跨子网络推进边界顶点盈余流; d)迭代执行步骤a)-c),直至所有子网络中的盈余流都被推到汇点或回退至源点。
3.根据权利要求1所述的网络最大流的并行求解方法,其特征在于,步骤2)所述的优化网络流是通过以下方式实现的:某ー个计算单元首先回收所有其它计算単元的计算结果和子网络(包括边界)信息,合并成ー个网络,然后在合并后的网络中完成剰余计算,求得最大流。
4.根据权利要求2所述的网络最大流的并行求解方法,其特征在于,步骤a)是通过以下方式实现的:将边界顶点分为3级,初始时,标记源点为三级边界顶点,其它所有边界顶点(包括汇点)为ー级边界顶点;迭代时,源点和汇点的等级保持不变,而对子网络其它任意边界顶点Vi按下列方法进行标级: a)若Vi可沿着边界的出弧将盈余流推向汇点的非三级近邻顶点,则标记Vi为ー级顶点;否则,转至b); b)若Vi可沿着边界的出弧将盈余流推向汇点的非三级远邻顶点,则标记Vi为ニ级顶点;否则,转至c); C)标记Vi为三级顶点。
5.根据权利要求2所述的网络最大流的并行求解方法,其特征在于,步骤b)是通过以下方式实现的: 采用优先推进盈余流至高等级(一级>ニ级>三级)顶点的方式实现子网络内部盈余流的推进,具体为:先将子网络中的盈余流优先推向ー级边界顶点,其次推向ニ级边界顶点,最后推向三级边界顶点。
更新边界顶点等级:先将能把盈余流推向一级边界顶点的ニ级或三级边界顶点更新为ー级顶点,再将能把盈余流推向ニ级边界顶点的三级边界顶点更新为ニ级顶点。
6.根据权利要求2所述的网络最大流的并行求解方法,其特征在于,步骤c)是通过以下方式实现的: 对于ー级边界顶点,将其盈余流沿着边界的出弧推向汇点的ー级或ニ级近邻顶点; 对于ニ级边界顶点,将其盈余流沿着边界的出弧推向汇点的ー级或ニ级远邻顶点; 对于三级边界顶点,将其盈余流沿着边界的入弧推向源点的近邻顶点,若不能完全将盈余流推至相邻子 网络,则将其剰余的盈余流沿着非边界的入弧推向相同子网络中源点的近邻顶点。
全文摘要
本发明公开了一种网络最大流的并行求解方法,步骤包括1)并行迭代推进网络盈余流;2)采用合并子网络的方式优化网络流。本发明的步骤1)将网络分割成若干子网络并分发给各计算单元,然后各计算单元根据其子网络边界弧和边界顶点状态的不同,将边界顶点标记为3个不同级别;不同级别的边界顶点对盈余流分别采用不同的推进方法,保证了盈余流的推进效率,有效地解决了通讯问题,加快了本并行方法的求解速度,同时通过步骤2)保证了结果的正确性。
文档编号G06Q10/04GK103093281SQ201210574528
公开日2013年5月8日 申请日期2012年12月27日 优先权日2012年12月27日
发明者吴立新, 江锦成 申请人:吴立新, 江锦成
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1