网络流与匹配最大的_第1页
网络流与匹配最大的_第2页
网络流与匹配最大的_第3页
网络流与匹配最大的_第4页
网络流与匹配最大的_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、F。这个流称为满足供需约束的可行流。

F(e)

F(e)

F F

AXi

F(e) F(e)P(Yj [问题求解新增两个顶点x0,y0。加m条以x0为尾的边(x0,x1),(x0,x2),…,(x0,xm)每边的容量c(x0,xi)=A(xi)nx0为源点,y0nn

F 将下界“分离”0D的每一B(e)D改造为“每条边仅对应一个容量”的D’B(e)。D

S1S12T第一步:分离必要弧(红线为必要弧S12T S12T (x,yi---x---y---j其中弧(i,x),(y,j)的容量为B(e),弧(x,y)的容量为∞。S12T33S12T332233XY(x,yDD’构造成功。414414SS12T332233XYD’y到汇x2+3+3,则必要弧都饱和。D’F使得所有与源(或汇)相连的弧都饱和。DD’f1f1满足等于所有边容量下界之和D

,则f1Ff1可增大,在寻找增广路(u,t’(s’,uDD’C(e)-B(e)(t,sD1的最大流ff=

DD2D2fD的最大流。D1s’,t’f1f1(e(D2上的流量不平衡D2中的增广路径D设st[x]为以顶点x为尾的边容量下界之和,ed[y]以y为头的边容量下界之和,tflow为dinic算法。 Fori:=vstovtdofirst[i]:=-1;Fori:=1tomdo {读入第i条边(x,y,容量下界bb,上界cc} {计算以x为尾的边容量下界和,以y为头的边容量下 {求容量下界和 (x,y{对原网络D的每一个顶点添加容量 的新边(i,vt),添加容量B(e)的新边Fori:=1tondobeginadd(I,vt,st[i]);add(vs,I,ed[i]);end; dinicif {f1≠

则无解 fori:=1tondoforj:=1to2do 再次用dinic算法扩增残留网D2的流,得到最大流tempAns:=temp+st[1];{再加上流出源点流量下界之和,得原网络的最大流} (一)示每吨物资通过该公路的费用(单价。现在的问题是怎样安排,才能使得从起点到终量费用Bij≥0。上述问题的求解目标是:求一个最大流,使总的费用

Bij*(vi,vj(二)我们首先一下,当沿着一条关于可行流F的可增广路P,以δ=1调整F,得到新的可行F’V(F’)=V(F)+1B(F’)B(F)增加了多少?B(F’)-B(F)=[Bij*(F'ijFij)

Bij*(F'ijFij)B(F’)-B(F)=Bij

Bijp我们把Bij

称为这条可增广路P的“费用” V(F)的所有可行流中费用最小者,而P是关于F的所有可增广路中费Bij≥F=0F=0开始。U(F)的最小费用流。余下的问题是如何去寻找关于该流F的最小(Vj,iWij为:Vt的最短路。1)W(F(k-1))W(F(k-1))VsVt的最短路。+∞DPPF(k-1)进行改进F(k)F(k)重复上述步骤。1 {弧类型 {容量 Settype=setofN1,Node:array[1..maxn]ofinteger; Arc:array[1..maxn,1..maxn]ofarctype; W,b:array[1..maxn,1..maxn]ofinteger; 2<1>startendsmin=maxint。Proceduregetting_path(s,tot:integer;m:settype){s为待扩展结点,tot当前路径代价,m当前最佳路径结点集合}Vari:integer;Ifs=endsthenIftot<minthenElseFori:=1ton (w(s,i)<>maxint)andnot(Iinm)ThenbeginIfarc[s,i].act<arc[s,i].maxthenn1[i]:=s;Ifarc[I,s].act>0thenn1[i]:=-s;Ifi=endsthenn1[i]:=s;Functionford(vara:integer):boolean;VarI,j,m,s:integer;Fori:=1tondo {W图初始化}Forj:=1tondow[I,j]:=maxint;Fori:=1tondo {W图赋权}Forj:=1tondoWitharc[I,j]doIfmax>0thenIfact<maxthenw[I,j]:=b[I,j];Ifact=maxthenw[I,j]:=maxint;Ifact>0thenw[j,i]:=-b[I,j];Ifact=0thenw[j,i]:=maxint;End;{with} Ifmin=maxintthen Beginford:=true;exitend;M:=ends;a:=maxint; Ifnode[j]<0thenIfnode[j]>0thens:=arc[m,j].max-arc[m,j].act;Ifs<athena:=s;Untilm=start;End;{ford}Procedurefulkerson(a:integer);VarI,m,j:integer;Ifnode[j]<0th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论