pku3308 【论】如何将二分图顶点覆盖问题转化为最小割
2010-10-02 18:47
369 查看
转自http://www.cnblogs.com/ylfdrib/archive/2010/08/15/1800119.html
在二分图中,有一个问题是,顶点覆盖问题。
图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----------求二分图的最小顶点覆盖问题
- 最小权顶点覆盖问题
- 二分图的最大匹配和最小点覆盖问题
- poj-3041【二分图最小顶点覆盖】
- LA 2038 Strategic game(二分图最小顶点覆盖 /树形DP)
- poj 3041 Asteroids( 最小顶点覆盖,二分图)
- poj3041 二分图最小顶点覆盖
- HDU ACM 1054 Strategic Game 二分图最小顶点覆盖?树形DP
- 关于二分图的最大匹配(最小点覆盖)问题的资料整理
- 二分图中对最小顶点覆盖、最小边覆盖、最大独立集的理解
- hdu 1054 Strategic Game 最小顶点覆盖(二分图最大匹配)
- HDU1150-- Machine Schedule( 二分图最小顶点覆盖)
- 二分图及二分图最小顶点覆盖 最大独立集
- POJ3692——Kindergarten (二分图求最小顶点覆盖 (即最大匹配))
- poj 3041 二分图最小顶点覆盖 小行星删行或列
- hdu 1498(二分图最小顶点覆盖)
- [poj3041]Asteroids(二分图的最小顶点覆盖)
- HDU 2063 过山车(匈牙利算法 二分图的最小顶点覆盖 二分图最大匹配)
- hdu 1150二分图最小顶点覆盖