博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些简单的网络流模型
阅读量:5323 次
发布时间:2019-06-14

本文共 1253 字,大约阅读时间需要 4 分钟。

一、最大权闭合图

对于一个图(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中的点和Y在S中的点选出来,一定是一个覆盖集,因为s->u和u->t两条边至少有一条被割

那么最小割就是答案啦

 

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

 

三、二分图最大权独立集

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

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

转载于:https://www.cnblogs.com/showson/p/5046436.html

你可能感兴趣的文章
[Kali_BT]通过低版本SerialPort蓝牙渗透功能手机
查看>>
C语言学习总结(三) 复杂类型
查看>>
HNOI2018
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
省市县,循环组装,整合大数组
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>
like tp
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
spring-使用MyEcilpse创建demo
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
深入理解基于selenium的二次开发
查看>>
较快的maven的settings.xml文件
查看>>