1.二分图点带权最小覆盖
二分图G中选取一个点集,所有边都连接了这个点集,最小化这个点权和。
这个可以说是最小割模板了
首先假设只有一对点,一条边
要选出较小值,建边(s->1,v1),(1->2,INF),(2->t,v2)
显然割开最小值。
对于多个点边,求最大流(最小割)即可。
例题:poj2125
求二分图点带权最小覆盖并输出方案。
对于一个二分图点带权最小覆盖的残余网络,只需跑一遍与s连通的点即可,若连通的是原图与t有连边的点,那么该边一定被割掉。同样,若不连通的是原图与s有连边的点,该边也一定割掉。
2.二分图最大点权独立集
求一个二分图G的点集,该点集满足两两不连通,最大化点集权值。
引理:二分图独立集与最小点覆盖互补。
因为点权和一定,此时二分图点带权覆盖达到最小值。求二分图点带权最小覆盖即可。
3.最大权闭合子图
求图G的一个点集,该点集满足所有边都连向点集内的边,求点集的最大值。(允许点权带负)。
从最小割的原理出发:首先假设一条边的两个点集都属于一个集合,之后要把两个点分开,一个连s,一个连t。
原问题等价于给定一些二元组,选了 a 就必须选择
其次,将原问题转化为最小割问题,原图的边转化为正无穷,那么这条边不可能被割掉,保证了解法的正确性。
考虑先将所有点看做一个集合,因为存在负数,那么就转负为正,并将所有负点连向t点,表示选取该点要付出的代价,同样,对于每个正值点,连向s点,表示舍弃该点损失的价值。先将正权值相加,要最小化总的权值,即求该图最小割(即最少需要减去多少)。