/**
前面提到了匈牙利算法解决二分图匹配问题,但是基于二分图还有几个经常
见的扩展问题如下:
1、最大独立集点数
2、最小顶点覆盖数
3、最小路径覆盖数
**********************************************************************
最大独立集点数:
有5个同学,小明,小强,小壮,小雨,小丽,现在要做游戏,可是小雨
小丽都不喜欢小明,问最多能挑出多少学生使他们在一起玩???
显然答案为4,直接把小明赶走即可,因为如果小明在,小雨和小丽两个女女
就不干了。。
*最大独立集点数 = N - 最大匹配数
如下建图
小雨 * * *小明
*
小丽 * 小强
小壮
最大匹配为 1,有 5 个点,所以最大独立集点数为 5 - 1 = 4;
**********************************************************************
最小顶点覆盖数:
即在二分图中用最少的点关联所有的边,如上图:最小顶点覆盖数为 1
即小明一个人就关联了仅存的两条边。。
最小顶点覆盖数 = 最大匹配数
Konig定理:二分图的最小顶点覆盖数等于最大匹配数。
网上有关于这个定理的证明。。。
后面还会遇到树的最小支配集,即最少的点关联所有的点或边。。。
树的最小支配集用贪心和树形DP 解决,后面会提到
**********************************************************************
最小路径覆盖
路径覆盖就是在*无环有向图*中找一些路径,使之覆盖了图中所有顶点,且
任何一个顶点有且只有一条路径与之关联。
最小路径覆盖 = N - 最大匹配数
**********************************************************************
二分图匹配和网络流一样,都在于建图,应该说几乎所有的图论题都在于建图
建图的技巧和难度,决定了这道题的质量和难度,所以会套模板是基础,建图才是
王道……
注意:上面3个只适用于有向无环图,当为无向图时可以通过拆点转换为有向图,但
算出的最大匹配得除二。。 但不能有环
拆点:N个点 则把 X 点拆成 2N+X 则 2N+X 完全等价X 去添边,即无向边ab,
可拆成 a->2N+b b->2N+a。。用匈牙利算法算出最大匹配除二即为匹配
*/