二分图的相关概念
1.点覆盖、最小点覆盖
点覆盖集:一个点集,使得所有边至少有一个端点在集合里,或者说是“点” 覆盖了所有“边”.
“极小点覆盖:本身为点覆盖,其真子集都不是。
最小点覆盖:点最少的点覆盖。
点覆盖数:最小点覆盖的点数。
2.边覆盖、极小边覆盖
边覆盖集:一个边集,使得所有点都与集合里的边邻接,或者说是“边” 覆盖了所有“点”。
极小边覆盖:本身是边覆盖,其真子集都不是。
最小边覆盖:边最少的边覆盖。边覆盖数(edge covering number):最小边覆盖的边数。
3.独立集、极大独立集
独立集:一个点集,集合中任两个结点不相邻,则称V为独立集,或者说是导出的子图是零图(没有边)的点集。
极大独立集:本身为独立集,再加入任何点都不是。
最大独立集:点最多的独立集。独立数(independent number):最大独立集的点。
4.团
团:一个点集,集合中任两个结点相邻,或者说是导出的子图是完全图的点集。
极大团:本身为团,再加入任何点都不是。
最大团:点最多的团。
团数:最大团的点数。
5.边独立集、极大边独立集
边独立集:一个边集,满足边集中的任两边不邻接。
极大边独立集:本身为边独立集,再加入任何边都不是。
最大边独立集:边最多的边独立集。
边独立数:最大边独立集的边数。又称匹配,相应的有极大匹配,最大匹配,匹配数。
6.支配集、极小支配集
支配集:一个点集,使得所有其他点至少有一个相邻点在集合里,或者说是一部分的“点”支配了所有“点”。
极小支配集:本身为支配集,其真子集都不是。
最小支配集:点最少的支配集。
支配数:最小支配集的点数。
7.边支配集、极小边支配集
边支配集:一个边集,使得所有边至少有一条邻接边在集合里,或者说是一部分的“边”支配了所有“边”。
极小边支配集:本身是边支配集,其真子集都不是。
最小边支配集:边最少的边支配集。
边支配数:最小边支配集的边数。
8.最小路径覆盖
最小路径覆盖:是“路径” 覆盖“点”,即用尽量少的不相交简单路径覆盖有向无环图G的所有顶点,即每个顶点严格属于一条路径。路径的长度可能为0(单个点)。
最小路径覆盖数=G的点数-最小路径覆盖中的边数。应该使得最小路径覆盖中的边数尽量多,但是又不能让两条边在同一个顶点相交。
拆点:将每一个顶点i拆成两个顶点Xi和Yi。然后根据原图中边的信息,从X部往Y部引边。所有边的方向都是由X部到Y部。因此,所转化出的二分图的最大匹配数则是原图G中最小路径覆盖上的边数。因此由最小路径覆盖数=原图G的顶点数-二分图的最大匹配数便可以得解。
9.匹配
匹配:一个边集,满足边集中的边两两不邻接。匹配又称边独立集.在匹配中的点称为匹配点或饱和点;反之,称为未匹配点或未饱和点。
交错轨是图的一条简单路径,满足任意相邻的两条边,一条在匹配内,一条不在匹配内。
增广轨:一个始点与终点都为未匹配点的交错轨。
最大匹配:具有最多边的匹配。
匹配数:最大匹配的大小。
完美匹配:匹配了所有点的匹配。
完备匹配:匹配了二分图较小集合(二分图X,Y中小的那个)的所有点的匹配。
增广轨定理:一个匹配是最大匹配当且仅当没有增广轨。
增广轨定理:一个匹配是最大匹配当且仅当没有增广轨。这个定理适用于任意图。
10.二分图的性质
二分图中,点覆盖数是匹配数。
(1) 二分图的最大匹配数等于最小覆盖数,即求最少的点使得每条边都至少和其中的一个点相关联,很显然直接取最大匹配的一段节点即可。
(2) 二分图的独立数等于顶点数减去最大匹配数,很显然的把最大匹配两端的点都从顶点集中去掉这个时候剩余的点是独立集,这是|V|-2*|M|,同时必然可以从每条匹配边的两端取一个点加入独立集并且保持其独立集性质。
(3) DAG的最小路径覆盖,将每个点拆点后作最大匹配,结果为n-m,求具体路径的时候顺着匹配边走就可以,匹配边i→j’,j→k’,k→l’….构成一条有向路径。
(4)最大匹配数=左边匹配点+右边未匹配点。因为在最大匹配集中的任意一条边,如果他的左边没标记,右边被标记了,那么我们就可找到一条新的增广路,所以每一条边都至少被一个点覆盖。
(5)最小边覆盖=图中点的个数-最大匹配数=最大独立集。
11.二分图的判定
二分图是这样一个图: 有两顶点集且图中每条边的的两个顶点分别位于两个顶点集中,每个顶点集中没有边直接相连接!
无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。
判断二分图的常见方法是染色法: 开始对任意一未染色的顶点染色,之后判断其相邻的顶点中,若未染色则将其染上和相邻顶点不同的颜色, 若已经染色且颜色和相邻顶点的颜色相同则说明不是二分图,若颜色不同则继续判断,bfs和dfs可以搞定!
易知:任何无回路的的图均是二分图。
相关定理
定理1:最大独立集S 与 最小覆盖集T 互补
对于无向图:
最小点覆盖+最大独立集=顶点个数
最大团=补图的最大独立子集
关系1:给定图G = (V,E)无孤立点,则G的极大点独立集都是G的极小支配集。
关系2:G的点覆盖数 a与点独立集数 b满足: a + b = n。
关系3:G的边覆盖数 a与边独立集数 b满足: a + b = n。(边独立集数即匹配数)
关系3:给定图G = (V,E)无孤立点,|V | = n。M是G的匹配,W是G的边覆盖,则|M|≤|W|,等号成立时M是G的完美匹配而W是G的最小边覆盖。
对于二部图:
最小点覆盖数 = 最大匹配数
最小路径覆盖 = 顶点数 – 最大(二分)匹配数
最小边覆盖与最小路径覆盖的区别:
边覆盖集:通俗地讲,所谓边覆盖集,就是G中所有的顶点都是E*中某条边的邻接顶 点(边覆盖顶点),一条边只能覆盖2个顶点。
注意:在无向图中存在用尽量少的边去“覆盖”住所有的顶点,所以边覆盖集有极小与最小的区别。
极小边覆盖:若边覆盖E*中的任何真子集都不是边覆盖集,则称E*是极小边覆盖集。
最小边覆盖:边数最小的边覆盖称为最小边覆盖,通俗地讲,就是极小边覆盖中的最小的一个集合。
最小边覆盖在二分图中的应用:
最小边覆盖 = 最大独立集 = n - 最大匹配,这个是二分图上的一个性质。
最小路径覆盖和最小边覆盖不同,不要求给的图是二分图,而是要求是PXP的有向图,不能有环,然后根据原图构造二分图,构造方法是将点一分为二,如,i分为i1和i2然后如果i和j有边,那么就在i1和j2之间连一条边。由此构成二分图
然后最小路径覆盖是n-m,n为原图的点的个数,m为新造二分图的最大匹配。
要使用上面的最小边覆盖的公式的前提是你已经将点集分成了左右两个点集,如果只是一个无向图的话那么就可以按照下面的做法来做:
无向图G(V,E)边覆盖的求解步骤:
1.将无向图拆点,即若在无向图中存在节点i,则将节点i拆为i1,i2分别位于二分图的X部和Y部.若存在边ij,则连接二分图的i1j2,i2j1。
2.原无向图中的节点数为|V|所以在构造的二分图有2*|V|个节点。在二分图中存在公式:
2*|V| = 2*二分图的最大匹配数 + 二分图中未匹配的点。其中二分图的最大匹配数+二分图中未匹配的点即覆盖了二分图中所有的点,相对于原无向图,相当于覆盖了每个点两次,即原边覆盖的最小 值转化为二分图的最大匹配数+二分图中未匹配的点的最小值。又有公式2*|V| = 2*二分图的最大匹配数 + 二分图中未匹配的点,可得:
二分图的最大匹配数+二分图中未匹配的点 = 2*|V| - 二分图的最大匹配数,又此结果为覆盖了原图所有顶点两次,所以结果应该除以2.
所以无向图的最小边覆盖 = |V| - 二分图的最大匹配数/2.