网络最大流的最大容量有向路算法_精品文档资料下载.pdf
《网络最大流的最大容量有向路算法_精品文档资料下载.pdf》由会员分享,可在线阅读,更多相关《网络最大流的最大容量有向路算法_精品文档资料下载.pdf(4页珍藏版)》请在冰豆网上搜索。
复杂度TheMaximalCapacityofDirectedPathAlgorithmonMaximumFlowNetworkzHENGGui-;
unZHANGWei【Abstract】AFlewalgorithmthemaximalcapacityofdirectedpathalgorithmaimingatsinglesourceandsinglesinknetworkaboutmaximumflowproblemisgivenThecoreideaofthemaximalcapacityofdirectedpathalgorithmistofindthemaximalcapacityofdirectedpathwithspecialregulationinincrementalnetworkusingdelaminationprinciplefromsourcetosinkuptonothingThecomplexityofthisnewalgorithmalsohasbeenstudiedthatisO(mn)ThecomparisiononcomplexityandexampleswithbeingprovidedwithtworepresentativealgorithmsFordfulkersonalgorithmandDinicalgorithmhasbeendoneTheeffectofthenewalgorithmisbetterthantheeffectofFordfulkersonalgorithmandnotlowerthantheeffectofDinicalgorithmThealgorithmcouldbeachievedbyprogrammingentirelyEmluatorexperimentindicatestheeffectofthenewalgorithmbetter【l(eywords】delaminationprinciple;
incrementalnetwork;
themaximalcapacityofdirectedpathalgorithm;
directedpath;
complexity中图分类号TP3016文献标识码A文章编号16743229(2009)06002203最大流问题是网络流的调度问题,是指对“源节点来到汇节点去”的网络中的流量进行合理分配,运用网络流理论及其算法得出流量的最优分配方案,使整个系统处于某一准则下的流的最优分布状态。
网络最大流问题从提出到现在已有40多年的发展历史。
在此期间出现了一些最大流算法,如何提高算法效率减少网络最大流算法的计算量一直是最大流问题研究的一个主要方向。
特别在20世纪70年代后,围绕着提高算法效率所作的减少网络最大流算法的计算量相继出现许多改进方法,但都不能完全令人满意。
1基础知识定义11给定有向图D=(V,A)后,通常要对图的每一条弧a赋予一个实数c(a),称为弧a的权。
赋权的有向图称为网络,记为N=(V,A,W)。
如果一个网络的每条弧a的权c(a)O,那么又称为弧的容量,表示该弧的最大通过量,这时的N称为容量网络,记为N=(V,A,c(a)。
定义12在讨论网络问题时,我们经常在网络中指定两个特定的点s和t,s往往没有人弧,s称为网络的源;
t往往没有出弧,t称为网络的汇。
网络中其余的点称为中间点。
定义13在增量网络N(f)中,用广探法找出从源点s到任意一点vEV的最短路的长度h(v),即由s到v的弧数最少的路的弧数,并把长度相同的节点称为同一层的节点(第零层只有一个节点s,因为h(s)=0)。
把所有节点分层后,N(f)中所有弧收稿Et期20091I一05作者简介】郑桂君(1981一),女,湛江师范学院基础教育学院教师,硕士,主要从事最优化理论及其应用研究。
22万方数据第9卷第6期郑桂君等:
网络最大流的最大容茸有向路算法2009年12月可以分成以下三类:
从第i层节点指向第i+l层节点的弧叫做第一类;
从第i层节点指向同一层节点的弧叫做第二类;
从第i层节点指向第j层节点的弧(其中j1)的弧。
定义14指定了从起点到终点或者从终点到起点的方向的路称为有向路。
定义15按由低层至高层的顺序依次给网络各层内节点从上至下(或从下至上)由小到大编号,从小标号指向大标号的弧称为正向弧。
反之从大标号到小标号的弧为反向弧。
定理11(流量一容量)增量网络N(f)中从s到t的有向路与N中f的增广路一一对应,且可以增广的流值恰好等于有向路的容量。
定理12(有向路定理)网络N达到最大流当且仅当N的增量网络N(f)没有从s到t的有向路。
证明由定理11显然可以看出,当增广路可以增广的流值为O时,N(f)中所对应的st有向路的容量就为0。
此时网络N中没有增广路,增量网络N(f)中也就没有st有向路。
那么由增广路定理可知,这时网络N已达到最大流。
反之亦然。
2最大容量有向路算法最大容量有向路算法的基本思想是首先找出网络关于当前可行流的增量网络,对增量网络分层、标号,然后按广探法和深探法在增量网络中寻找“容量最大”的从源点到汇点的有向路,再由有向路得到新的可行流及其增量网络。
如此下去,直至找不到增量网络中从源点到汇点的有向路。
初始可行流的流量与找到的所有有向路的容量之和即是网络的最大流量。
根据上述基本思想,我们给出网络最大流的最大容量有向路算法。
21算法(网络最大流的最大容量有向路算法)已知网络N,节点数为n,源点记为vo,汇点记为v。
,初始可行流毛(通常取为f=0)及其流量v(厶),置i=0。
Stepl:
求出关于当前流的增量网路N(fi)。
Step2:
按定义13对增量网络N(fi)分层,按定义15标号。
Step3:
用广探法和深探法寻找增量网路N()中从v0至v川的有向路:
首先寻找与vo相连接的容量最大的弧的节点vk,即cok(f)m-maxcoJ(f)(j0)。
若不存在容量最大的弧,则表明当前流是最大流,转Step4;
否则,若容量最大的弧不唯一,则通过在与所有容量最大的弧相连接的所有弧中再选择容量最大的以确定一个节点v。
,并以此类推。
以后再寻找与所找到的每一个节点v。
相连接的容量最大的弧的节点v。
,在与vD的所有正向弧中寻找容量最大的弧(v,v。
),即cph(f)=max(f)(jp)。
如果没有正向弧,则在反向弧中找容量最大的弧(v,vk),即cph(f)=maxcpi(f)(jP)。
若不存在容量最大的弧,则表明当前流fi是最大流,转SteD4;
重复此过程,直至汇点v川。
反向追踪,便得到一条从v0至v。
一。
的有向路。
求从vo至v的有向路的流量v(+。
)。
v(fi+。
)等于这条有向路上容量最小的弧的容量。
置i:
=i+l,转Stepl。
Step4:
计算最大流的流量v(f),v(f)=v(fo)+v(f1)+v(fj),计算终止。
下面举例说明最大容量有向路算法初始可行流取为零流的好处。
例1求如图l所示的网络的最大流。
图1初始可行流取为零流】,用最大容量有向路算法只找到两条最大容量有向路,即迭代两次,就达到了最大流。
该题的初始可行流共有29种取法,其中需迭代两次以上的有16种,需迭代一次的有13种。
这表明初始可行流取为零流的迭代次数比随意取一个初始可行流所用的迭代次数总体上要少。
23万方数据2009年12月廊坊师范学院学报(自然科学版)第9卷第6期22算法的计算复杂度设m代表网络的弧数,n代表网络的节点数,u代表网络的弧的最大容量。
根据流量一容量定理11可知,最大容量有向路算法的计算复杂度不高于Dinic算法的计算复杂度O(ran)。
3算法比较31理论比较
(1)FordFulkerson算法:
是最早的网络最大流算法。
算法没有明确指出求增广路的方法,因为它没有指出待检查节点的选取方法;
初始增广路的选取具有任意性及随意性,这使得这个算法存在这样的危险性:
如果初始增广路选取不恰当,就有可能使计算量变得很大,甚至不能保证一定求到网络的最大流;
该算法依赖于算法的具体执行,与网络的节点数和弧数以及弧上的容量分布有关,计算复杂度为0(mU)。
(2)Dinic算法:
引进分层增量网络的概念,使得能更有效地在增量网络中找出最短的增广路;
明确指出怎样找增广路;
采用