欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    网络流算法专题优秀PPT.ppt

    • 资源ID:86757809       资源大小:411KB        全文页数:52页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络流算法专题优秀PPT.ppt

    图论算法图论算法 -最大流问题最大流问题长沙市雅礼中学朱 全 民 运输网络现在想将一些物资从S运抵T,必需经过一些中转站。连接中转站的是马路,每条马路都有最大运载量。每条弧代表一条马路,弧上的数表示该马路的最大运载量。最多能将多少货物从S运抵T?4248473 621STV1V2V3V4公路运输图公路运输图基本概念这是一个典型的网络流模型。为了解答此题,我们先了解网络流的有关定义和概念。若有向图G=(V,E)满足下列条件:有且仅有一个顶点S,它的入度为零,即d-(S)=0,这个顶点S便称为源点,或称为发点。有且仅有一个顶点T,它的出度为零,即d+(T)=0,这个顶点T便称为汇点,或称为收点。每一条弧都有非负数,叫做该边的容量。边(vi,vj)的容量用cij表示。则称之为网络流图,记为G=(V,E,C)可行流可行流对于网络流图G,每一条弧(i,j)都给定一个非负数fij,这一组数满足下列三条件时称为这网络的可行流,用f表示它。1.每一条弧(i,j)有fijCij2.流量平衡除源点S和汇点T以外的全部的点vi,恒有:j(fij)=k(fjk)该等式说明中间点vi的流量守恒,输入与输出量相等。3.对于源点S和汇点T有,i(fSi)=j(fjT)=V(f)可增广路 给定一个可行流f=fij。若fij=Cij,称为饱和弧;否则称为非饱和弧。若fij=0,称为零流弧;否则称为非零流弧。定义一条道路P,起点是S、终点是T。把P上全部与P方向一样的弧定义为正向弧,正向弧的全体记为P+;把P上全部与P方向相悖的弧定义为反向弧,反向弧的全体记为P-。譬如在图中,P=(S,V1,V2,V3,V4,T),那么P+=,P-=给定一个可行流f,P是从S到T的一条道路,假如满足:fij是非饱和流,并且 P+,fij是非零流,并且 P-那么就称P是f的一条可增广路。之所以称作“可增广”,是因为可改进路上弧的流量通过确定的规则修改,可以令整个流量放大。剩余图(残余网络)剩余图G=(V,E)流量网络G=(V,E)中,对于随意一条边(a,b),若flow(a,b)0则(a,b)E可以沿着a-b方向增广l剩余图中,从源点到汇点的每一条路径都对应一条增广路Capacity=5Capacity=6Capacity=2Flow=2Flow=2Flow=2有向图32224剩余图l剩余图中,每条边都可以沿其方向增广剩余图的权值代表能沿边增广的大小G=(V,E,C)是已知的网络流图,设U是V的一个子集,W=VU,满足S U,TW。即U、W把V分成两个不相交的集合,且源点和汇点分属不同的集合。对于弧尾在U,弧头在W的弧所构成的集合称之为割切,用(U,W)表示。把割切(U,W)中全部弧的容量之和叫做此割切的容量,记为C(U,W),即:割切 割切示例v上例中,令U=S,V1,则W=V2,V3,V4,T,那么,vC(U,W)=+=8+4+4+1=17流量算法的基本理论定理定理1:对于已知的网络流图,设随意一可行流为:对于已知的网络流图,设随意一可行流为f,随意一割切为随意一割切为(U,W),必有:,必有:V(f)C(U,W)。定理定理2:可行流:可行流f是最大流的充分必要条件是:是最大流的充分必要条件是:f中不中不存在可改进路。存在可改进路。定理定理3:整流定理。:整流定理。假如网络中全部的弧的容量是整数,则存在整数假如网络中全部的弧的容量是整数,则存在整数值的最大流。值的最大流。定理定理4:最大流最小割定理。:最大流最小割定理。最大流等于最小割,即最大流等于最小割,即max V(f)=min C(U,W)。最大流算法第1步,令x=(xij)是随意整数可行流,可能是零流,给s一个永久标号(-,)。第2步(找增广路),假如全部标号都已经被检查,转到第4步。找到一个标号但未检查的点i,并做如下检查,对每一个弧(i,j),假如xij0,且j未标号,则给j一个标号(-i,(j),其中,(j)=minxji,(i)第3步(增广),由点t起先,运用指示标号构造一个增广路,指示标号的正负则表示通过增加还是削减弧流量来增加还是削减弧流量来增大流量,抹去s点以外的全部标号,转其次步接着找增广轨。第4步(构造最小割),这时现行流是最大的,若把全部标号的集合记为S,全部未标号点的集合记为T,便得到最小割(S,T)。实例困难度分析设图中弧数为m,每找一条增广轨最多须要进行2m次弧的检查。假如全部弧的容量为整数,则最多须要v(其中v为最大流)次增广,因此总的计算量为O(mv)。procedure maxflow;最大流最大流var i,j,delta,x:integer;last:tline;可改进路中的前趋可改进路中的前趋 check:array0.maxn of boolean;检查数组检查数组begin repeat fillchar(last,sizeof(last),0);fillchar(check,sizeof(check),false);last1:=maxint;repeat i:=0;repeat inc(i)until(i n)or(lasti 0)and not checki;找到一个已检查而未标号的点找到一个已检查而未标号的点 if i n then break;for j:=1 to n do if lastj=0 then if flowi,j 0 then lastj:=-i;反向弧反向弧 checki:=true;until lastn 0;if lastn=0 then break;delta:=maxint;i:=n;repeat j:=i;i:=abs(lastj);if lastj 0 then x:=limiti,j-flowi,j else x:=flowj,i;if x 0 then inc(flowi,j,delta)else dec(flowj,i,delta);until i=1;放大网络流放大网络流 until false;end;利用找增广路的其他流量算法增广路的思想在于每次从源点搜寻出一条前往汇点的增广路,并变更路上的边权,直到无法再进行增广:一般增广路方法:在剩余图中,每次随意找一条增广路径增广。O(nmU)容量缩放增广路方法:在剩余图中,每次随意找一条最大可增广容量和的增广路径增广。O(nm*logU)最短增广路方法(MPLA):在剩余图中,每次随意找一条含结点数最少的增广路径增广。O(nm2)连续最短增广路方法(DINIC):在剩余图中,每次BFS找增广路径增广路径时,记录每个点的距离标号。在距离标号最短路图上,不断dfs找增广路,即一次标号,多次增广。O(n2m)DINIC算法演示:算法演示:源点汇点422532汇点32对增广路进行增广,增广后退回到源点1汇点232汇点1找到增广路路线,(红色路线)找到增广路路线,(红色路线)对增广路进行增广,增广后退回到源点,再无增广路线3用预流推动方法求网络流预流推动算法给每一个顶点一个标号h(v),表示该点到t的最短路(在残量网络中)。第一步hights()过程,就是BFS出初始最短路,计算出每一个顶点的h(v)。预流推动算法的特征是运用了预流来加快运算。预流说明图中的节点(除s,t),仅须要满足流入量=流出量。其中流入量流出量的结点,我们称之为活动节点。我们的算法就是不断地将活动结点,变为非活动结点,使得预流成为可行流。预流推动算法流程算法过程prepare(),即首先将与s相连的边设为满流,并将这时产生的活动结点加入队列Q。这是算法的起先。以后便重复以下过程直到Q为空:(1).选出Q的一个活动顶点u。并依次推断残量网络G中每条边(u,v),若h(u)=h(v)+1,则顺着这里条边推流,直到Q变成非活动结点(不存在多余流量)。(Push推流过程)(2).假如u还是活动结点。则须要对u进行重新标号:h(u)=minh(v)+1,其中边(u,v)存在于G 中。然后再将u加入队列。(relable过程)可以证明,通过以上算法得到的结果就是最大流。预流推动算法示例顶点u的通过量g(u):剩余图中,找入边权和与出边权和的较小值l增广时,每次找一个通过量最小的点v,从点v向源点“推”大小为g(v)的流量向汇点“拉”大小为g(v)的流量尽量使剩余图中的边饱和34578g(u)=12用预流推动方法的一些网络流算法预流推动的算法核心思想是以边为单元进行推流操作:一般的预流推动算法:在剩余图中,维护一个预流,不断对活跃点执行push操作,或者relable操作来重新调整这个预流,直到不能操作。O(nm2)先进先出预流推动算法:在剩余图中,以先进先出队列维护活跃点。O(n3)最高标号预流推动算法:在剩余图中,每次检查最高标号的活跃点,须要用到优先队列。O(n2m1/2)费用流流最重要的应用是尽可能多的分流物资,这也就是我们已经探讨过的最大流问题。然而实际生活中,最大配置方案确定不止一种,一旦有了选择的余地,费用的因素就自然参与到决策中来。右图是一个最简洁的例子:弧上标的两个数字第一个是容量,其次个是费用。这里的费用是单位流量的花费,譬如fs1=4,所需花费为3*4=12。简洁看出,此图的最大流(流量是8)为:fs1=f1t=5,fs2=f2t=3。所以它的费用是:3*5+4*5+7*3+2*3=62。(6,3)(5,4)(3,7)(8,2)STV1V2费用流问题费用流定义设有带费用的网络流图G=(V,E,C,W),每条弧对应两个非负整数Cij、Wij,表示该弧的容量和费用。若流f满足:流量V(f)最大。满足a的前提下,流的费用Cost(f)=E(fij*Wij)最小。就称f是网络流图G的最小费用最大流。最小费用可改进路设P是流f的可改进路,定义P+Wij-P-Wij 为P的费用(为什么如此定义?)假如P是关于f的可改进路中费用最小的,就称P是f的最小费用可改进路。费用流算法求最小费用最大流的基本思想是贪心法。即:对于流f,每次选择最小费用可改进路进行改进,直到不存在可改进路为止。这样的得到的最大流必定是费用最小的。算法可描述为:第1步.令f为零流。第2步.若无最小费用可改进路,转第5步;否则找到最小费用可改进路,设为P。第3步.依据P求delta(改进量)。第4步.放大f。转第2步。第5步.算法结束。此时的f即最小费用最大流。如何求最小费用可改进路 设带费用的网络流图G=(V,E,C,W),它的一个可行流是f。我们构造带权有向图B=(V,E),其中:V=V。若E,fijCij,那么E,权为Wij。若E,fij0,那么E,权为-Wij。明显,B中从S到T的每一条道路都对应关于f的一条可改进路;反之,关于f的每条可改进路也能对应B中从S到T的一条路径。即两者存在一一映射的逻辑关系。故若B中不存在从S到T的路径,则f必定没有可改进路;不然,B中从S到T的最短路径即为f的最小费用可改进路。现在的问题变成:给定带权有向图B=(V,E),求从S到T的一条最短路径。迭代法求最短路经考虑到图中存在权值为负数的弧,不能接受Dijkstra算法;Floyd算法的效率又不尽如人意所以,这里接受一种折衷的算法:迭代法(bellman算法)。设Shorti表示从S到i顶点的最短路径长度;从S到顶点i的最短路径中,顶点i的前趋记为Lasti。那么迭代算法描述如下:(为了便于描述,令n=|V|,S的编号为0,T的编号为n+1)step 1.令Shorti +(1in+1),Short0 0。step 2.遍历每一条弧。若Shorti+Shortj,则令Shortj Shorti+,同时Lastj i。重复做step 2直到不存在任何任何弧满足此条件为止。step 3.算法结束。若Shortn+1=+,则不存在从S到T的路径;否则可以依据Last记录的有关信息得到最短路径。一次迭代算法的时间困难度为O(kn2),其中k是一个不大于n的变量。在费用流的求解过程中,k大部分状况下都远小于n。procedure costflow;求最小费用最大流求最小费用最大流var i,j,x,delta:integer;best,last:tline;best:最短路长度;:最短路长度;last:可改进路中的前趋顶点:可改进路中的前趋顶点 more:boolean;begin repeat fillword(best,sizeof(best)shr 1,maxint);fillchar(last,sizeof(last),0);last1:=maxint;best1:=0;赋初值赋初值 repeat more:=false;for i:=1 to n do if besti maxint then for j:=1 to n do begin if(flowi,j limiti,j)and (besti+costi,j 0)and (besti-costj,i 0 then x:=limiti,j-flowi,j else x:=flowj,i;if x 0 then inc(flowi,j,delta)else dec(flowj,i,delta);until i=1;until false;根据改进量放大流根据改进量放大流end;思维发散与探究 可改进路费用:“递增!递增?”设f从零流到最大流共被改进了k次,每i次选择的可改进路的费用为pi,那么会不会有p1p2p3pk呢?迭代法:“当心死循环!嘿嘿”迭代法会出现死循环吗?也就是说,构造的带权有向图B中会存在负回路吗?费用:“你在乎我是负数吗?”容量:“我管的可不仅是弧。”网络流图中的“容量”都是对弧而言的,但若是给每个顶点也加上一个容量限制:即通过此顶点的流量的上限;任务仍旧是求从S到T的最小费用最大流。你能解决吗?有上下界的最大流 上面探讨的网络流都只对每条弧都限定了上界(其实其下界可以看成0),现在给每条弧加上一个下界限制Aij(即必需满足Aijfij)。弧上数字对第一个是上界,其次个是下界。若是撇开下界不看,此图的最大流如图所示,流量是6;但若是加入了下界的限制,它的最大流量就只有5了。(3,0)(3,0)(3,0)(3,0)(10,1)原问题原问题33330(a)32231(b)增广增广怎样找可行流一种自然的想法是去掉下界,将其转化为只含上界的网络流图。这种奇妙的愿望是可以实现的。具体方法如下:设原网络流图为G=(V,E,C,A),构造不含下界的网络流图G=(V,E,C):V=VS,T对每个顶点x,令h-(x)=E AiX,若h-(x)0,就添加一条弧,其上界为h-(x)。对每个顶点x,令h+(x)=E AXi,若h+(x)0,就添加一条弧,其上界为h+(x)。对于任何E,都有E,其上界Cij=Cij Aij。新增E,其上界CTS=+。在G中以S为源点、T为汇点求得最大流f。若f中从S发出的随意一条弧是非饱和弧,则原网络流图没有可行流。否则可得原图的一个可行流f=f+A,即全部的fij=f ij+Aij。然后再求可改进路(反向弧必需满足fijAij,而非fij0),不断放大f,直到求出最大流。另外一种构图方法C(u,v)=C(u,v)-B(u,v)设假如M(i)非负,那么设一附加源S0,则可以令C(S0,i)=M(i)。假如M(i)非负,那么设一附加汇T0,则可以令C(S0,i)=-M(i)。在这样一个加入附加源和附加汇的流网络C中,假如随意g(S0,i)或g(i,T0)都达到满载,那么C中的这一个可行流g确定对应原网络G中的一个可行流f;反之G中的随意一个可行流f都可以对应C中的一个g(S0,i)或g(i,T0)都满载的流。思索?在一个容量有上下界的流网络G中,怎样尽快求源点s到汇点t的一个可行的最大流?在一个容量有上下界的流网络G中,怎样尽快求源点s到汇点t的一个可行的最小流?多源点、多汇点的最大流已知网络流图有n个源点S1、S2、Sn,m个汇点T1、T2、Tm,求该图的最大流。这样的问题称为多源点、多汇点最大流。它的解决很简洁:增设一个“超级源”S,对每个源点Si,新增弧,容量为无穷大。增设一个“超级汇”T,对每个汇点Ti,新增弧,容量为无穷大。以S为源点、T为汇点求最大流f。将f中的S和T去掉,即为原图的最大流。顶点有容量限制的最大流对除源点和汇点之外的每个顶点i拆分成两个顶点i和i。新增一条弧,其容量为点i的流量限制。对于原图中的弧,我们将其变换成。对变换后的图求最大流即可。这里我们运用到了化归的思想:将未知的“点限制”问题转化为已知的“边限制”问题。网络流与二部图的匹配设二部图为G=(X,Y,E)。增设点S,对于全部iX,新增弧,容量为1;增设点T,对于全部iY,新增一条弧,容量也为1。原图中全部的弧予以保留,容量均为+。对新构造出来的网络流图以S为源点、T为汇点求最大流:流量即为最大匹配数;若弧(iX,jY)的流量非零,它就是一条匹配边。二部图最大匹配问题解决。那么二部图的最佳匹配问题又如何?仍旧依据上述方法构图。同时令原图中弧的费用保持不变;新增弧的费用置为0。然后以S为源点、T为汇点求最小费用最大流即可。最大流的费用即为原二部图最佳匹配的费用。思索题1:餐巾问题某软件公司正在规划一项n天的软件开发支配,依据开发支配第i天须要ni个软件开发人员,为了提高工作效率,公司给软件人员供应了很多的服务,其中一项服务就是要为每个开发人员每天供应一块消毒毛巾,这种毛巾运用一天后必需再做消毒处理后才能运用。消毒方式有两种,A种方式的消毒时间须要a天时间,B中方式的消毒须要b天时间(ba),A种消毒方式的费用为每块毛巾fA,B种消毒方式的费用为每块毛巾fB,而买一块新毛巾的费用为f(新毛巾是已消毒的,当天可以运用);而且ffAfB。公司经理正在规划在这n天中,每天买多少块新毛巾、每天送多少块毛巾进行A种消毒和每天送多少块毛巾进行B种消毒。当然,公司经理希望费用最低。你的任务就是:求出供应毛巾服务的最低总费用。输入文件:第1行为n,a,b,f,fA,fB.第2行为n1,n2,nn(注:1f,fA,fB60,1n1000)输出文件:最少费用input.txt output.txt4 1 2 3 2 1 38 8 2 1 6分析公司第i天须要ni 块毛巾,可以把这ni 块毛巾的来源列举如下:新买的毛巾。第i a 1天之前通过A种方式消毒的毛巾。第i b 1天之前通过B种方式消毒的毛巾。我们构造带费用的网络流图G=(V,E,C)。V=S,V1,V2,Vn,V1,V2,Vn,T,其中S是源点、T是汇点。E中包含如下几类弧:(1in),容量为ni,费用为0。表示第i天须要ni块毛巾。(1in),容量为正无穷大,费用为f。该弧的流量表示第i天通过方式a得到的毛巾数量。(a+2in),容量为正无穷大,费用为fA。该弧的流量表示第i天通过方式b得到的毛巾数量。(b+2in),容量为正无穷大,费用为fB。该弧的流量表示第i天通过方式c得到的毛巾数量。(2in),容量为正无穷大,费用为0。由于题目中没有说消毒完的毛巾要立刻运用,所以第3天就消毒好的毛巾可以暂且留着,到第7天、第8天再运用也可以。因此这里增设此弧。(1in),容量为ni,费用为0。然后对这个网络流图以S为源点、T为汇点的求最小费用最大流即可。求得的最大流费用就是原问题的答案。思索题2:Agent有有n名双重间谍潜藏在敌军内部,分别编号为名双重间谍潜藏在敌军内部,分别编号为1,2,3,n。在给定的时间内,随意两人之间至多只进行一次点对点的双在给定的时间内,随意两人之间至多只进行一次点对点的双人联系。人联系。数据将给你一份表格,表格中将供应随意两位间谍数据将给你一份表格,表格中将供应随意两位间谍i和和j之间之间进行联系的平安程度,用一个进行联系的平安程度,用一个0,1的实数的实数Sij表示;以及他表示;以及他们联系时,能够相互传递的消息的最大数目,用一个正整数们联系时,能够相互传递的消息的最大数目,用一个正整数表示表示Mij。(假如在表格中没有被提及,那么间谍。(假如在表格中没有被提及,那么间谍i和和j之间不之间不进行干脆联系)。进行干脆联系)。假消息从盟军总部传递到每个间谍手里的渠道也不是确定平假消息从盟军总部传递到每个间谍手里的渠道也不是确定平安的,我们用安的,我们用0,1的实数的实数ASj表示总部与间谍表示总部与间谍j之间进行联之间进行联系的平安程度,系的平安程度,AMj则表示总部和间谍则表示总部和间谍j之间进行联系时传递之间进行联系时传递的消息的最大数目。对于不和总部干脆联系的间谍,他的的消息的最大数目。对于不和总部干脆联系的间谍,他的AMj=0(而表格中给出的他的(而表格中给出的他的ASj是没有意义的)。是没有意义的)。当然,假消息从间谍手中交到敌军的情报部官员的办公桌上的过当然,假消息从间谍手中交到敌军的情报部官员的办公桌上的过程是确定平安的,也就是说,间谍与敌军情报部门之间要么不进程是确定平安的,也就是说,间谍与敌军情报部门之间要么不进行联系,要么其联系的平安程度是行联系,要么其联系的平安程度是1(即完全牢靠)。(即完全牢靠)。现在我军司令部想利用这些间谍将现在我军司令部想利用这些间谍将k条假消息发布到敌军情报机关条假消息发布到敌军情报机关的负责人。消息先由总部一次性发给的负责人。消息先由总部一次性发给n名间谍中的一些人,再通过名间谍中的一些人,再通过它们之间的情报网传播,最终由这它们之间的情报网传播,最终由这n名间谍中某些人将情报送到敌名间谍中某些人将情报送到敌军手中。军手中。对于一条消息,只有平安的通过了全部的中转过程到达敌军情报对于一条消息,只有平安的通过了全部的中转过程到达敌军情报部,这个传递消息的过程才算平安的;因此依据乘法原理,它的部,这个传递消息的过程才算平安的;因此依据乘法原理,它的平安程度平安程度P就是从总部动身,经多次传递直到到达敌军那里,每一就是从总部动身,经多次传递直到到达敌军那里,每一次传递该消息的平安程度的乘积。次传递该消息的平安程度的乘积。而对于整个支配而言,只有当而对于整个支配而言,只有当k条消息都平安的通过情报网到达敌条消息都平安的通过情报网到达敌军手中,没有一条引起怀疑时,才算是成功的。所以支配的牢靠军手中,没有一条引起怀疑时,才算是成功的。所以支配的牢靠程度是全部消息的平安程度的乘积。程度是全部消息的平安程度的乘积。明显,支配的牢靠性取决于这些消息在情报网中的传递方法。明显,支配的牢靠性取决于这些消息在情报网中的传递方法。你的任务是:拟定一个方案,确定消息应当从那些人手中传递到你的任务是:拟定一个方案,确定消息应当从那些人手中传递到那些人手中,使得最终支配的牢靠性最大。那些人手中,使得最终支配的牢靠性最大。输入文件:输入文件:第一行第一行:两个整数两个整数N和和K,分别是间谍的总人数和支配包含的消息总数。,分别是间谍的总人数和支配包含的消息总数。其次行其次行:2n个数,前个数,前n个数实数个数实数AS1,AS2,ASn(范围在(范围在0,1以内)以内);后后n个数是整数个数是整数AM1,AM2,AMn。第三行第三行:n个整数,其中第个整数,其中第i(i=1,2,n)个整数假如为)个整数假如为0表示间谍表示间谍i与敌军情报部不进行联系,假如为与敌军情报部不进行联系,假如为1则表示间谍与敌军情报部进行联系。则表示间谍与敌军情报部进行联系。第四行起先,每行包括第四行起先,每行包括4个数,依次分别是:代表间谍编号的正整数个数,依次分别是:代表间谍编号的正整数i和和j,间谍,间谍i和和j联系的平安性参数联系的平安性参数Sij(0,1范围内的实数),以及范围内的实数),以及i、j之间之间传递的最大消息数传递的最大消息数Mij(每以行的(每以行的i均小于均小于j)。)。最终一行包含两个整数最终一行包含两个整数-1 1,表示输入数据的结束。,表示输入数据的结束。0 n 300,0 k 300。输出文件:输出文件:输出文件中只有一行。这一行中包含一个实数输出文件中只有一行。这一行中包含一个实数P,给出的是整个支配,给出的是整个支配的牢靠程度的牢靠程度P,保留,保留5位有效数字(四舍五入)。位有效数字(四舍五入)。假如情报根本不能将假如情报根本不能将K条消息传到敌军手中,那么支配的牢靠性为条消息传到敌军手中,那么支配的牢靠性为0。(你可以假定,假如支配存在,那么它的牢靠性大于(你可以假定,假如支配存在,那么它的牢靠性大于1e-12)输入输出样例输入输出样例Agent.in Agent.out6 13 0.000211840.9 0.7 0.8 0 0 0 2 6 8 0 0 00 0 0 1 0 11 4 0.5 22 3 0.9 52 5 0.8 22 6 0.8 73 5 0.8 25 6 0.8 4-1-1 分析题目中的“总部”、“敌军情报部”与“间谍”的地位是完全相等的,为了便利叙述可以将两者亦看作是间谍:“总部”编号为0、“敌军情报部”编号为n+1。那么S0i=ASi,M0i=AMi;若间谍i可以与敌军司令部干脆联系Si,n+1=1,Mi,n+1=+,否则Si,n+1=0,Mi,n+1=0。我们构造带费用的网络流图G=(V,E,M,S)。(M为容量,S位费用)第i个间谍抽象成顶点i,另外增加汇点T。全部顶点构成的集合记为V。若Mij0,则存在弧和:其容量皆为Mij;费用Sji=Sij=ln(Sij)。增设弧,其容量为k,费用为0。然后以V0为源点、T为汇点求最大费用最大流。若流量小于k,则不存在可行方案 不然则最大牢靠性为:证明设最大费用最大流的费用为Cost,那么:因为Cost达到最大,所以牢靠性也达到最大。证毕。思索题3:Plan问题 某软件公司有n个可选的程序项目,其中第i个项目须要耗费资金ai元,开发成功后可获收益bi元。当然,程序项目之间不是独立的:开发第i个项目前,必需先开发出一些其他的项目(正如开发Office前必需开发Windows)。这些项目就称为第i个项目的“前趋项目”。现在给出全部项目的ai、bi,以及前趋项目。你的任务是:帮助该公司从这n个程序项目中选择若干个进行开发,使得总收益最大。输入文件:输入文件有n+3行。第1行包含一个整数n(1n200)。第2行有n个正整数a1,a2,an。第3行有n个正整数b1,b2,bn。第i+3行(1in)包含若干正整数:ri,k1,k2,kri。第一个数ri表示第i个项目共有多少前趋项目;接下来有ri个正整数k1,k2,kri,分别表示每个前趋项目的编号。输出文件:输出文件只有一个整数max,表示最大收益。分析令di=bi ai,A=i|di 0,B=i|di 0。则di就是第i个项目的纯收益,A是全部可以获得利润的项目集合,B是全部会导致亏损的项目集合。构造网络流图G=(V,E,C)。V中包含两类顶点:源点S,汇点T。将第i个项目抽象成顶点Vi。则V1,V2,VnV。E中包含三类弧:对全部的iA,存在弧,容量为di。对全部的iB,存在弧,容量为|di|。若第i个项目的某前趋项目编号为j,则存在弧,容量为+。然后对此网络流图求最大流,设为f。依据f易得最小割切(U,W)(即最大流最小割定理)那么选择的项目集合就是U,其最大收益即:思索题4:最大获利THU集团的CS&T公司得到了一共N个可以作为通讯信号中转站的地址,建立第i个通讯中转站须要的成本为Pi(1iN)。另外公司用户群一共M个。关于第i个用户群的信息概括为Ai,Bi和Ci:这些用户会运用中转站Ai和中转站Bi进行通讯,公司可以获益Ci。(1iM,1Ai,BiN)THU集团的CS&T公司可以有选择的建立一些中转站(投入成本),为一些用户供应服务并获得收益(获益之和)。那么如何选择最终建立的中转站才能让公司的净获利最大呢?(净获利=获益之和-投入成本之和)【输入格式】输入文件中第一行有两个正整数N和M。其次行中有N个整数描述每一个通讯中转站的建立成本,依次为P1,P2,PN。以下M行,第(i+2)行的三个数Ai,Bi和Ci描述第i个用户群的信息。【输出格式】公司可以得到的最大净获利。【数据规模和约定】80%的数据中:N200,M1 000。100%的数据中:N5 000,M50 000,0Ci100,0Pi100。分析s到用户i,容量为Ci 用户i到中转站Ai和Bi,容量为 中转站i到t,容量为Pi考虑这个模型的割割边不行能是中的边,这保证了解的合法性属于的割边表示损失的利益属于的割边表示付出的代价 明显割的量越小越好,这样这道题就转换成一个最小割的问题依据最大流最小割定理,设sum=Ci,我们只要求出该网络的最大流maxflow,则sum-maxflow就是最大获利。构图模型建立一张共有n+m+2个的顶点、3*m+n条边的二分图,求网络的最大流。汇点N个点M个点源点思索题5:矩阵游戏(2006年江苏省选)题目大意:对于一个n行、m列的0-1矩阵,规定在第i行中1的个数恰为Ri个(1=i=n);在第j列中1的个数恰为Cj个(1=j=m)。每一行、每一列最多可以有一个格子指定为0。问是否存在一种满足条件的0-1矩阵。数据范围:n,m=1000 每个测试点最多10组数据。分析把第i行作为点Xi,从S至Xi连一条边,容量为Ri把第j列作为点Yj,从Yj至T连一条边,容量为Cj若第i行第j列可以放1,那么从Xi至Yj连一条边,容量为1求网络最大流,推断流量值是否等于1的总数即可边的总数达到了O(n*m)运用MPLA可以拿到60%的分数运用Dinic可以拿到80%的分数首先不考虑指定为0的格子;因为将某2行或某2列交换,不影响问题的求解,我们不妨将Ri与Ci从大到小排序;将多余的1储存起来;第三列,须要5个1,但只有4行可以供应1;深化分析结论加入这个简洁的推断后,MPLA算法仍旧只能过60%。但是Dinic通过了100%的数据。其实这题的标准方法是贪心,但运用高效的网络流算法节约了大部分的思索时间。

    注意事项

    本文(网络流算法专题优秀PPT.ppt)为本站会员(l***)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开