1、复杂度T h eM a x i m a lC a p a c i t yo fD i r e c t e dP a t hA l g o r i t h mo nM a x i m u mF l o wN e t w o r kz H E N GG u i-;u nZ H A N GW e i【A b s t r a c t】AF l e wa l g o r i t h m t h em a x i m a lc a p a c i t yo fd i r e c t e dp a t ha l g o r i t h ma i m i n ga ts i n g l es o u r c
2、ea n ds i n g l es i n kn e t w o r ka b o u tm a x i m u mf l o wp r o b l e mi sg i v e n T h ec o r ei d e ao ft h em a x i m a lc a p a c i t yo fd i r e c t e dp a t ha l g o r i t h mi st of i n dt h em a x i m a lc a p a c i t yo fd i r e c t e dp a t hw i t hs p e c i a lr e g u l a t i o ni
3、 ni n c r e m e n t a ln e t w o r ku s i n gd e l a m i n a t i o np r i n c i p l ef r o ms o u r c et os i n ku pt on o t h i n g T h ec o m p l e x i t yo ft h i sn e wa l g o r i t h ma l s oh a sb e e ns t u d i e dt h a ti sO(m n)T h ec o m p a r i s i o no nc o m p l e x i t ya n de x a m p
4、l e sw i t hb e i n gp r o v i d e dw i t ht w or e p r e s e n t a t i v ea l g o r i t h m s F o r d f u l k e r s o na l g o r i t h ma n dD i n i ca l g o r i t h mh a sb e e nd o n e T h ee f f e c to ft h en e wa l g o r i t h mi sb e t t e rt h a nt h ee f f e c to fF o r d f u l k e r s o na
5、 l g o r i t h ma n dn o tl o w e rt h a nt h ee f f e c to fD i n i ca l g o r i t h m T h ea l g o r i t h mc o u l db ea c h i e v e db yp r o g r a m m i n ge n t i r e l y E m l u a t o re x p e r i m e n ti n d i c a t e st h ee f f e c to ft h en e wa l g o r i t h mb e t t e r【l(e yw o r d s
6、】d e l a m i n a t i o np r i n c i p l e;i n c r e m e n t a ln e t w o r k;t h em a x i m a lc a p a c i t yo fd i r e c t e dp a t ha l g o r i t h m;d i r e c t e dp a t h;c o m p l e x i t y 中图分类号 T P 3 0 1 6 文献标识码 A 文章编号 1 6 7 4 3 2 2 9(2 0 0 9)0 6 0 0 2 2 0 3最大流问题是网络流的调度问题,是指对“源节点来到汇节点去”的网络中的
7、流量进行合理分配,运用网络流理论及其算法得出流量的最优分配方案,使整个系统处于某一准则下的流的最优分布状态。网络最大流问题从提出到现在已有4 0 多年的发展历史。在此期间出现了一些最大流算法,如何提高算法效率减少网络最大流算法的计算量一直是最大流问题研究的一个主要方向。特别在2 0 世纪7 0 年代后,围绕着提高算法效率所作的减少网络最大流算法的计算量相继出现许多改进方法,但都不能完全令人满意。1 基础知识定义1 1 给定有向图D=(V,A)后,通常要对图的每一条弧a 赋予一个实数c(a),称为弧a 的权。赋权的有向图称为网络,记为N=(V,A,W)。如果一个网络的每条弧a 的权c(a)O,那
8、么又称为弧的容量,表示该弧的最大通过量,这时的N 称为容量网络,记为N=(V,A,c(a)。定义1 2 在讨论网络问题时,我们经常在网络中指定两个特定的点s 和t,s 往往没有人弧,s 称为网络的源;t 往往没有出弧,t 称为网络的汇。网络中其余的点称为中间点。定义1 3 在增量网络N(f)中,用广探法找出从源点s 到任意一点v EV 的最短路的长度h(v),即由s 到v 的弧数最少的路的弧数,并把长度相同的节点称为同一层的节点(第零层只有一个节点s,因为h(s)=0)。把所有节点分层后,N(f)中所有弧 收稿E t 期 2 0 0 9 1 I 一0 5 作者简介】郑桂君(1 9 8 1 一)
9、,女,湛江师范学院基础教育学院教师,硕士,主要从事最优化理论及其应用研究。2 2 万方数据第9 卷第6 期郑桂君等:网络最大流的最大容茸有向路算法2 0 0 9 年1 2 月可以分成以下三类:从第i 层节点指向第i+l 层节点的弧叫做第一类;从第i 层节点指向同一层节点的弧叫做第二类;从第i 层节点指向第j 层节点的弧(其中j 1)的弧。定义1 4 指定了从起点到终点或者从终点到起点的方向的路称为有向路。定义1 5 按由低层至高层的顺序依次给网络各层内节点从上至下(或从下至上)由小到大编号,从小标号指向大标号的弧称为正向弧。反之从大标号到小标号的弧为反向弧。定理1 1(流量一容量)增量网络N(
10、f)中从s到t 的有向路与N 中f 的增广路一一对应,且可以增广的流值恰好等于有向路的容量。定理1 2(有向路定理)网络N 达到最大流当且仅当N 的增量网络N(f)没有从s 到t 的有向路。证明由定理1 1 显然可以看出,当增广路可以增广的流值为O 时,N(f)中所对应的s t 有向路的容量就为0。此时网络N 中没有增广路,增量网络N(f)中也就没有s t 有向路。那么由增广路定理可知,这时网络N 已达到最大流。反之亦然。2 最大容量有向路算法最大容量有向路算法的基本思想是首先找出网络关于当前可行流的增量网络,对增量网络分层、标号,然后按广探法和深探法在增量网络中寻找“容量最大”的从源点到汇点
11、的有向路,再由有向路得到新的可行流及其增量网络。如此下去,直至找不到增量网络中从源点到汇点的有向路。初始可行流的流量与找到的所有有向路的容量之和即是网络的最大流量。根据上述基本思想,我们给出网络最大流的最大容量有向路算法。2 1算法(网络最大流的最大容量有向路算法)已知网络N,节点数为n,源点记为v o,汇点记为v。,初始可行流毛(通常取为f=0 )及其流量v(厶),置i=0。S t e p l:求出关于当前流的增量网路N(f i)。S t e p 2:按定义1 3 对增量网络N(f i)分层,按定义1 5 标号。S t e p 3:用广探法和深探法寻找增量网路N()中从v 0 至v 川的有向
12、路:首先寻找与v o 相连接的容量最大的弧的节点v k,即c o k(f)m-m a xc o J(f)(j 0)。若不存在容量最大的弧,则表明当前流是最大流,转S t e p 4;否则,若容量最大的弧不唯一,则通过在与所有容量最大的弧相连接的所有弧中再选择容量最大的以确定一个节点v。,并以此类推。以后再寻找与所找到的每一个节点v。相连接的容量最大的弧的节点v。,在与v D 的所有正向弧中寻找容量最大的弧(v,v。),即c p h(f)=m a x(f)(j p)。如果没有正向弧,则在反向弧中找容量最大的弧(v,v k),即c p h(f)=m a x c p i(f)(j P)。若不存在容量
13、最大的弧,则表明当前流f i 是最大流,转S t e D 4;重复此过程,直至汇点v 川。反向追踪,便得到一条从v 0 至v。一。的有向路。求从v o 至v 的有向路的流量v(+。)。v(f i+。)等于这条有向路上容量最小的弧的容量。置i:=i+l,转S t e p l。S t e p 4:计算最大流的流量v(f),v(f)=v(f o)+v(f 1)+v(f j),计算终止。下面举例说明最大容量有向路算法初始可行流取为零流的好处。例1 求如图l 所示的网络的最大流。图1初始可行流取为零流】,用最大容量有向路算法只找到两条最大容量有向路,即迭代两次,就达到了最大流。该题的初始可行流共有2 9
14、 种取法,其中需迭代两次以上的有1 6 种,需迭代一次的有1 3 种。这表明初始可行流取为零流的迭代次数比随意取一个初始可行流所用的迭代次数总体上要少。2 3 万方数据2 0 0 9 年1 2 月廊坊师范学院学报(自然科学版)第9 卷第6 期2 2 算法的计算复杂度设m 代表网络的弧数,n 代表网络的节点数,u代表网络的弧的最大容量。根据流量一容量定理1 1 可知,最大容量有向路算法的计算复杂度不高于D i n i c 算法的计算复杂度O(r a n)。3 算法比较3 1理论比较(1)F o r d F u l k e r s o n 算法:是最早的网络最大流算法。算法没有明确指出求增广路的方法,因为它没有指出待检查节点的选取方法;初始增广路的选取具有任意性及随意性,这使得这个算法存在这样的危险性:如果初始增广路选取不恰当,就有可能使计算量变得很大,甚至不能保证一定求到网络的最大流;该算法依赖于算法的具体执行,与网络的节点数和弧数以及弧上的容量分布有关,计算复杂度为0(m U)。(2)D i n i c 算法:引进分层增量网络的概念,使得能更有效地在增量网络中找出最短的增广路;明确指出怎样找增广路;采用
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1