1、二分图:
①把一个图的点集划为两个不相交的集合U,V,使得每一条边都连接U,V中的节点。
②(等价定义,更方便看)不含边数为奇数的环的图
2、匹配(matching):
边集,每一条边所连顶点互不相同
3、最大匹配:
所含边数最大的匹配
4、完美匹配:
所有顶点都被匹配,完美匹配一定是最大匹配。
5、交替路:
从一个非匹配点出发,依次走非匹配边,匹配边,非匹配边....交替走,形成交替路
6、增广路:
从一个非匹配点出发,走交替路,经过另一个非匹配点,则这条路径叫做增广路
增广路特性:非匹配边比匹配边多1
意义:改进匹配。把增广路匹配边与非匹配边交换位置即可,不会破坏原来的性质,且边数多一条
匈牙利算法便是不断寻找增广路,直到找不到为止
增广路性质:
1、有奇数条边
2、起点‘终点不在二分图的同一侧
3、整条路径上没有重复的点
4、起点和终点是非匹配点,路径上其余点均是匹配点
5、路径上所有第奇数条边都不在原匹配上,所有第偶数条边都在原匹配上
7、匈牙利树
从未匹配点出发,走交替路,一直到无法扩展为止,形成一颗匈牙利树
8、增广路定理
一个匹配是最大匹配当且仅当没有增广路
9、匈牙利算法
算法流程:
令M为图G上的任一匹配,初始时M为空:
1、从一个未匹配点开始,走交替路,直到遇到非匹配点位置,并将
2、交换增广路上的匹配点、非匹配边,两个非匹配点标记为匹配点
3、重复步骤1、2,直到找不到一条增广路为止
时间复杂度:O(nm)
10、完备匹配
匹配了二分图两个点集中较小集合的匹配
11、点覆盖相关概念
点覆盖集是一个点集,使图中的边都与点集向邻接
极小点覆盖是真子集不是点覆盖的点覆盖
最小点覆盖是点数最小的点覆盖
点覆盖数是最小点覆盖的点数
12、边覆盖相关概念
边覆盖是一个边集,使所有的点都与边集中的点相邻接
极小边覆盖是真子集不是边覆盖的边覆盖
最小边覆盖是边数最小的边覆盖
最小边覆盖是边数最小的边覆盖
边覆盖数是最小边覆盖的边数
13、独立集相关概念
独立集是一个点集。集合中任意两点不相邻,称为点集V的独立集。或者说导出子图(图G(V,E),若V‘是’V的一个子集,则V与其所连点构成的图G‘叫做V‘的导出子图;若E‘是E的一个子集,则E‘与其所连点构成的图G‘叫做E‘的导出子图)是零图的点集
极大独立集是再加入其他点将不再是独立集的独立集
最大独立集是点数最多的独立集
独立数是最大独立集的点数
14、团
团是一个点集。集合中任意两个点相连,或者说导出子图是完全图的点集。
极大团是加入任何一个点都不是团的团
最大团是点数最多的团
团数是最大团的点数
15、边独立集
边独立集是一个边集。集合中任意两条边不邻接
极大边独立集是再加入任何边都不是独立集的独立集
最大边独立集是边数最多的边独立集
边独立数是最大边独立集的边数
边独立集又称匹配,相应得有极大匹配、最大匹配、匹配数
16、支配集
支配集是一个点集。使得所有点至少有一个相邻点在这个点集中。或者说是一部分点支配了另一部分点
极小支配集是真子集不是支配集的支配集
最小支配集是点数最少的支配集
支配数是最小支配集的点数
17、边支配集
边支配集是一个边集。使得所有边至少有一个邻接边在这个边集中。或者说是一部分边支配了另一部分边。
极小边支配集是真子集不是边支配集的边支配集
最小边支配集是点数最少的边支配集
边支配数是最小边支配集的边数
18、边覆盖集
最小路径覆盖,即用最少的不相交的简单路径,覆盖DAG上的所有点,即每个点严格属于一条路径。路径长度可能为0(一个点)
边覆盖集:边覆盖集是图中所有顶点均是集合中边的邻接点且一条边只能覆盖2个顶点
极小边覆盖:真子集不是边覆盖集的边覆盖集
最小边覆盖:边数最小的边覆盖集
边覆盖数:最小边覆盖的边数
19、最小边覆盖
最小路径覆盖,即用最少的不相交的简单路径,覆盖DAG上的所有点,即每个点严格属于一条路径。路径长度可能为0(一个点)
最小边覆盖数:最小边覆盖的路径条数
20、一些性质
1、最小边覆盖数 = 独立数 = 节点数 - 匹配数
2、DAG上最小边覆盖的求法:把一个点拆分成两个点i,i‘,最小边覆盖数即为原图节点数 - 拆分后匹配数。符合要求的一条路径:i -> j‘, j -> k‘, k -> q‘。。。。
3、匹配数 = 二分图一边的非匹配点数 + 另一边的匹配点数
(还有很多东西有待补充。基础学习先到这里为止吧。绝大多数内容改(抄)编(录)于博客http://dsqiu.iteye.com/blog/1689505)
【巨坑】 二分图学习笔记 [2017年6月计划 学习二分图]
原文:http://www.cnblogs.com/huibixiaoxing/p/7078251.html