二分图

所谓的二分图,就是指图中的全部顶点能够分为两个集合A和B,而且图中的每条边的两个顶点都是一个在A,一个在B,则该图是一个二分图。html

下面咱们来解释几个关于二分图的一些相关概念。算法

(1)最大匹配spa

在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。选择这样的边数最大的子集称为图的最大匹配问题,最大匹配的边数称为最大匹配数.若是一个匹配中,图中的每一个顶点都和图中某条边相关联,则称此匹配为彻底匹配,也称做完备匹配。.net

(2)最优匹配htm

最优匹配又称为带权最大匹配,是指在带有权值边的二分图中,求一个匹配使得匹配边上的权值和最大。通常A和B集合顶点个数相同,最优匹配也是一个完备匹配,即每一个顶点都被匹配。若是个数不相等,能够经过补点加0边实现转化。通常使用KM算法解决该问题。blog

(3)最小覆盖get

二分图的最小覆盖分为最小顶点覆盖和最小路径覆盖:im

①最小顶点覆盖是指最少的顶点数使得二分图G中的每条边都至少与其中一个点相关联,二分图的最小顶点覆盖数=二分图的最大匹配数d3

②最小路径覆盖也称为最小边覆盖,是指用尽可能少的不相交简单路径覆盖二分图中的全部顶点。二分图的最小路径覆盖数=|V|-二分图的最大匹配数img

(4)最大独立集

 最大独立集是指寻找一个点集,使得其中任意两点在图中无对应边。对于通常图来讲,最大独立集是一个NP彻底问题,对于二分图来讲最大独立集=|V|-二分图的最大匹配数。以下图中黑色点即为一个最大独立集:

咱们能够看到二分图的一些性质。

(1)二分图中的全部回路的边数都是偶数。

(2)二分图的独立数等于顶点数减去最大匹配数

(3)DAG的最小路径覆盖,将每一个点拆点后做最大匹配,结果为n-m,求具体路径的时候顺着匹配边走就能够,匹配边i→j',j→k',k→l'....构成一条有向路径。

(4)最大匹配数=左边匹配点+右边未匹配点。由于在最大匹配集中的任意一条边,若是他的左边没标记,右边被标记了,那么咱们就可找到一条新的增广路,因此每一条边都至少被一个点覆盖。

(5)最小边覆盖=图中点的个数-最大匹配数=最大独立集。

关于二分图求最大匹配(匈牙利算法)详见https://blog.csdn.net/thundermrbird/article/details/52231639

相关文章
相关标签/搜索