码迷,mamicode.com
首页 > 其他好文 > 详细

一些简单的网络流模型

时间:2015-12-14 21:18:45      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

一、最大权闭合图

对于一个图(V, E)由点集V和一些有向边集E组成,每个点有一定权值,对于一个合法子集,若有一条有向边(u,v)并且u在子集中,则v也必须在子集中,求子集中所有元素权值和最大的子集

 

分析:考虑每个点有两种状况,选和不选,所以考虑最小割,但是要求最大费用;

先假设取了所有正权点,从原点向所有正权点连边,从所有负权点向汇点连边,容量为权值的绝对值,

对于一个割[S,T](S内的点表示选择了的点),

正权点在S内,表示选了这个点,与S相连的边没有被割,若在T内,表示这个点被割则被割,此时权值应减去这条割边,

同理,对于负权点,一开始没有选他,若在S内,则到T的连边被割,权值减去费用,若在T内,仍然没有被选,与T的连边没有被割,则权值不变

 

考虑限制

按照上面的方式选出来的S内的点在原图中是不能与T中的点有边的,换一种说法,与T中连边的代价是INF,那么对于原图中的有向边连一条起点终点相同容量为INF的边,若起点属于S终点属于T则这条边在割中,代价为INF,这样最小割中必然不包含这条边,也就是说,最小割分得的S集所在的点一定没有与T中的点的连边。

实际上是很好理解这种一一对应关系的,严格的证明可以参见《最小割模型在信息学竞赛中的应用》——胡伯涛

 

另外 为什么要说与T中连边的代价是INF呢?

因为这里可以灵活一下,可以不是INF,比如bzoj1391 [Ceoi2008]order这道题把INF改成租借的费用就可以啦。

 

二、二分图的最小点权覆盖集

对于一个图(V, E)由点集V和一些无向边集E组成,每个点有一定权值,对于一个合法子集,若有一条无向边(u,v)则u,v至少有一个点在子集中,求子集中所有元素权值和最小的子集

设二分图的两边为X和Y,并且下面提到的(u,v)u属于X,v属于y

对于一条边(u,v),从s到u连一条容量为val(u)的边,从v到t连一条容量为val(v)的边对于一个割[S,T],从u到v也连一条边,由于割的性质是不存在一条从S到T的路径,所以这三条边至少有一条被割,我们不希望u到v的边在最小割中被割,所以给流量为INF

若Y中的点在S内,则与T的连边必然被割(代表选了这个点),在T内则没有被割(代表没选这个点),

若X中的点在T内,则与S的连边必然被割(代表选了这个点),在S内则没有被割(代表没选这个点)。

将所有的X在T中的点和T在S中的点选出来,一定是一个覆盖集,因为s->u和u->t两条边至少有一条被割

那么最小割就是答案啦

 

特别地,如果每个点权都是1的话,我们发现建的图和二分图最大匹配建的图是一样的,这也是二分图最大匹配数=最小点覆盖的原因。

 

三、二分图最大权独立集

容易证明每一个覆盖集的补集都是一个独立集,每个独立集的补集也是一个覆盖集,所以用总的权值减去最小覆盖集就行啦。。

特别地,这也是为什么二分图最大匹配数=n-最大独立集的原因。

一些简单的网络流模型

标签:

原文地址:http://www.cnblogs.com/showson/p/5046436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!