二分图是这样的一个图, 他的顶点可以分成两个集合 X 和 Y。 所有的边关联的两个顶点中一个属于X, 一个属于Y。
给定一个二分图G, M为二分图G边集的一个子集, 如果M满足当中的任意一条边都不依附于同一个顶点, 那么层M是G的一个匹配。
·
·
·
二分图G的众多匹配子图M1, M2, …………Mn中, 包含边数最多为M’, 那么M’是二分图G的最大匹配。
·
·
·
如果二分图G中的所有点都在子集M’的边上, 则称最大匹配M’是二分图G的完美匹配。
·
·
·
对于具有二部划分( V1, V2 )的加权完全二分图。
其中 V1= { x1, x2, x3, … , xn }, V2= { y1, y2, y3, … , yn },边< xi, yj >具有权值 Wi,j 。
该带权二分图中一个总权值最大的完美匹配,称之为最佳匹配。
·
·
·
若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径
(举例来说,有A、B集合,增广路由A中一个点通向B中一个点,再由B中这个点通向A中一个点……交替进行)。
·
·
·
1-P的路径长度必定为奇数,第一条边和最后一条边都不属于M。
2-不断寻找增广路可以得到一个更大的匹配M’,直到找不到更多的增广路。
3-M为G的最大匹配当且仅当不存在M的增广路径。
4-最大匹配数M+最大独立数N=总的结点数
5 – 二分图的最小路径覆盖数 = 原图点数 - 最大匹配数
·
·
·
最小覆盖要求用最少的点(X, Y 集合的都行), 让每条边至少和其中的一个点相关联。
这里有一个结论可以证明:最少的点 == 最大匹配数M;
证明略;
·
·
·
这里有点跑题但是提一下:
用尽量小的不想交简单路, 覆盖有向无环图G的所有顶点, 这就是DAG图的最小路径的覆盖问题。
对于解决这类问题要点就是转化成二分图问题:把所有的顶点I拆成两个 在X中的I;在Y中的I’。
如果有一条I -> J的边那么在二分图中引入 I -> J’ , 设二分图的最大匹配为m 那么最小路径覆盖就是 n - m;
简单的:DAG图的最小路径覆盖数 = 节点数 - 最大匹配数;
·
·
·
在二分图G中选取出n个点, 使得n个点两两之间没有边相连, 其中最大的n就是图G的最大独立集
二分图的最大独立集数 = 节点数 - 最大匹配数
·
·
·
设有一条边(x, y) 权值为Wxy
可行顶标:
L是一个关于节点的函数, L(x)是顶点x对应的顶标值。 可行定标对于图中的每一条边(x, y)都有
L(x)+ L(y) <= Wxy;
相等子图:
只包含L(x)+ L(y) = Wxy的子图
·
·
·
如果一个相等子图中包含完备匹配, 那么这个匹配就是最优匹配;