二分图的概念汇总

来源:互联网 发布:c语言less 编辑:程序博客网 时间:2024/06/05 01:19
二分图概念汇总--


二分图:是这样一个图,其顶点可分为两集合X和Y,所有的边关联的两顶点中,恰一个属于X,另一个属于Y。同一集合的结点不相邻。

匹配:图的一个匹配是一些边的集合,任意两条边没有公共点。

最大匹配:包含边数最多的匹配。 (匈牙利算法)

完美匹配:所有点都在匹配边上的匹配。

完备匹配:在二分图中,X集合中的所有点都有对应的匹配或者是Y集合中的所有点都有对应的匹配。

最佳匹配:如果G为加权二分图,则权值和最大(最小)的完备匹配称为最佳匹配。 (KM算法)

带权匹配:二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值之和最大或最小。

最小点覆盖:用最少的点(X集合或Y集合的)让每条边都至少和其中一个点关联。即覆盖边。最少点数(即覆盖数)= 最大匹配数

最小路径覆盖:用尽量少的不相互交叉简单路径覆盖有向无环图G的所有结点(不交叉指的是原图,而非后来构造的二分图)。即覆盖点。建立一个二分图模型,把所有顶点i拆成两个:X集中的i和Y集中的i',如果有边i->j,则在二分图中引入边i->j',结果就是最小路径覆盖 = N - 最大匹配数。(N为原图中结点数)

最大独立集:在N个点的图中选出m个点,使这m个点两两之间没有边.求m最大值.如果是二分图,则.最大独立集 = N - 最大匹配数。

完全子图:任意两点都相连的顶点的集合

最大完全数:最大完全子图中顶点的个数   最大完全数=原图的补图的最大独立数(补图中的独立集不正是相互都没有连边么,反过来说,它们在原图中不正是两两都有连边么)


最佳匹配和带权匹配的区分:二分图的带权匹配是不考虑是不是完备匹配,只要求最大或最小权匹配。而二分图的最佳匹配一定为完备匹配,在此基础上,才要求匹配的边权值之和最大或最小,即最佳匹配必须在完备匹配的基础上找最大或最小权匹配。


KM算法的拓展:

KM算法是求最大权完备匹配,如果要求最小权完备匹配怎么办?方法很简单,只需将所有的边权值取其相反数,然后进行求最大权完备匹配,匹配的值再取相反数即可。

KM算法的运行要求是必须存在一个完备匹配,如果想要求一个最大带权匹配(不一定完备)该如何办?依然很简单,把不存在的边权值赋为0,再进行求最大权完备匹配即可。

KM算法求得的最大权匹配是边权值和最大,如果我想要边权之积最大,又怎样转化?还是不难办到,每条边权取自然对数,然后再求最大权和匹配,求得的结果ans再算出e^ans就是最大积匹配(在C++中e可以通过cmath头文件中的exp(1)来表示出来,同样此处的结果就是exp(ans))。但至于精度问题则没有更好的办法了。

kuangbin博客最后还提到:"KM算法用来解决最大权匹配问题:在一个二分图内,左顶点集合为X,右顶点集合为Y,现对于每组左右连接X(i)Y(j)有权W(i,j),求一种匹配使得所有W(i,j)的和最大。
也就是最大权匹配一定是完备匹配。如果两边的点数相等则是完美匹配。
如果点数不相等,其实可以虚拟一些点,使得点数相等,也成为了完美匹配。"

点数不相等的话可以虚拟一些点,使之成为完美匹配,还没遇到过。有待学习。



参考博文:

http://www.cnblogs.com/Dario67/archive/2011/04/19/2020621.html

http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646535.html

原创粉丝点击