pku3308 【论】如何将二分图顶点覆盖问题转化为最小割
2010-08-15 17:34
309 查看
在二分图中,有一个问题是,顶点覆盖问题。
图G的一个顶点覆盖是由一些顶点构成的集合Q包含于V(G), Q包含每条边上的至少一个端点。Q的所有顶点覆盖边集E(G)。
如果覆盖每个顶点需要付出不同的代价,也可以说是不同的花费,或称为点权,问题可以描述成,在保证覆盖所有边的情况下,如何使得权和最小。
这里只讲二分图。
我们可以建源点 S 和汇点 T,假设二分图两个点集分别为 X 和 Y。X和Y原来的边容量设为INF,将S到X里每个点x连一条边,边权为x的点权,也可以看做覆盖点x的所有出边的花费(W-),将Y里每个点y到T连一条边,边权为y的点权,也可以看做覆盖点y的所有入边的花费(W+)。这样求得最小割容量,即为原问题的解。
可以这样理解:X到Y的边权为INF,自然不会成为最小割中的边,那就只有可能是S到X和Y到T中的边,而:S到X中点x的边e1, 权为点x的点权,点x和Y中的所有临边e2,都需要受到e1的流量的限制,同样,X到Y中点y的所有边也会受到点y到T的容量限制。这样求得割就能保证覆盖掉所有的边。
我们可以用反证法证明一下:假设有边<x, y>没有被覆盖掉,则边<S, x>流量为0且边<y, T>流量为0,而<x, y>流量为INF,自然可以找到一条S到T的增流路径<S, x, y, T>,与以求得流为最大流相矛盾,则可以说明,在最大流的情况下,所有的边都已经被覆盖掉。
而最小割问题可以用最大流来解决,问题就变得简单了。
Paratroopers
这道题就是一个很好的例子。
题意:一次火星和地球的大战,火星要进攻地球,将在一块m * n 的地方降落伞兵,地球上的指挥官得到这一消息,要在某几行或某几列打造一种武器,只需要一件武器,就可以干掉整行或整列敌人。问如何安排才能消灭所有敌人,不同的武器代价不同,这整个防御系统的建造等于各个武器的cost之积。
分析:把伞兵看成边,行列看成节点,行看做X集合,列看做Y集合,如果a行b列有敌人,则把节点a和节点b相连。这题求得是cost之积最大,可以用log对每条边求一次对数,则可以转化成求和问题,求得结果用exp函数在换回来,转化成最小割,在转化成最大流,这样就可以用上述方法求解了。
数据量小,用邻接矩阵 + EK 就能过。
图G的一个顶点覆盖是由一些顶点构成的集合Q包含于V(G), Q包含每条边上的至少一个端点。Q的所有顶点覆盖边集E(G)。
如果覆盖每个顶点需要付出不同的代价,也可以说是不同的花费,或称为点权,问题可以描述成,在保证覆盖所有边的情况下,如何使得权和最小。
这里只讲二分图。
我们可以建源点 S 和汇点 T,假设二分图两个点集分别为 X 和 Y。X和Y原来的边容量设为INF,将S到X里每个点x连一条边,边权为x的点权,也可以看做覆盖点x的所有出边的花费(W-),将Y里每个点y到T连一条边,边权为y的点权,也可以看做覆盖点y的所有入边的花费(W+)。这样求得最小割容量,即为原问题的解。
可以这样理解:X到Y的边权为INF,自然不会成为最小割中的边,那就只有可能是S到X和Y到T中的边,而:S到X中点x的边e1, 权为点x的点权,点x和Y中的所有临边e2,都需要受到e1的流量的限制,同样,X到Y中点y的所有边也会受到点y到T的容量限制。这样求得割就能保证覆盖掉所有的边。
我们可以用反证法证明一下:假设有边<x, y>没有被覆盖掉,则边<S, x>流量为0且边<y, T>流量为0,而<x, y>流量为INF,自然可以找到一条S到T的增流路径<S, x, y, T>,与以求得流为最大流相矛盾,则可以说明,在最大流的情况下,所有的边都已经被覆盖掉。
而最小割问题可以用最大流来解决,问题就变得简单了。
Paratroopers
这道题就是一个很好的例子。
题意:一次火星和地球的大战,火星要进攻地球,将在一块m * n 的地方降落伞兵,地球上的指挥官得到这一消息,要在某几行或某几列打造一种武器,只需要一件武器,就可以干掉整行或整列敌人。问如何安排才能消灭所有敌人,不同的武器代价不同,这整个防御系统的建造等于各个武器的cost之积。
分析:把伞兵看成边,行列看成节点,行看做X集合,列看做Y集合,如果a行b列有敌人,则把节点a和节点b相连。这题求得是cost之积最大,可以用log对每条边求一次对数,则可以转化成求和问题,求得结果用exp函数在换回来,转化成最小割,在转化成最大流,这样就可以用上述方法求解了。
数据量小,用邻接矩阵 + EK 就能过。
相关文章推荐
- pku3308 【论】如何将二分图顶点覆盖问题转化为最小割
- Asteroids----------求二分图的最小顶点覆盖问题
- pku 3308 Paratroopers(带权二分图最小点覆盖)
- 关于二分图的最大匹配(最小点覆盖)问题的资料整理
- 魔术球问题 二分图的最小路径覆盖+输出解
- hud1150二分图最小顶点覆盖
- poj3041-Asteroids , 二分图的最小顶点覆盖数 = 最大匹配数
- PKU 3041 Asteroids - 行列的二分图模型 最小点覆盖
- poj_3308 Paratroopers(二分图最小点权覆盖集+dinic+化乘为加)
- HDU 1054 Strategic Game(二分图 最小顶点覆盖)
- uva1201 DAG 最小路径覆盖,转化为 二分图
- 关于一个应用分枝界限法解决最小顶点覆盖问题的程序说明
- UVA 1292 - Strategic game(最小顶点覆盖问题,覆盖所有边,自己版本待解)
- Asteroids-二分图最小顶点覆盖
- LA 2038 Strategic game(二分图最小顶点覆盖 /树形DP)
- hdu1498二分图最小顶点覆盖
- CUGB图论专场2:B - Asteroids 二分图:最小顶点覆盖=最大匹配数
- poj 1325 二分图最小顶点覆盖(机器重启)
- POJ2226 Muddy Fields——最小点覆盖问题——Pku2226
- 二分图:最大独立集&最大匹配&最小顶点覆盖