https://winguse.com/blog/tag/%E6%9C%80%E5%A4%A7%E7%8B%AC%E7%AB%8B%E9%9B%86/
基本概念
二分图
顶点可以分成两个不相交的集使得在同一个集内的顶点不相邻(没有共同边)的图。
最大匹配
这个没啥说的,就是两个集合中的元素两两配对,使配对的数量最多。
独立集
从所有点中,选出一些点,这些点两两之间都没有边相连。
最大独立集
所有独立集中,元素最多的那个。(不一定唯一)
最小点覆盖
选出一些点,使到所有的边至少都有一个端点在这个点集里面。
最少边覆盖
用最少边,使所有顶点都在选中的这些边上至少出现一次。
最少路径覆盖*
用最少的连通路径,走完所有的顶点。在一个DAG(有向无环图)中,建立一个与之对应的二分图:将原来的顶点拆成两个集合:v1,v2..vn和u1,u2..un。若原图中i和j是有边的,则在二分图中连上vi->ui。对于此二分图,求最大匹配,n减去则得到最小路径覆盖。(如果将这个i、j关系映射会原图,你会发现,就是让你在原图中找出最多匹配的i、j集合脸上边,而连边的限制恰恰是,i、j只能唯一相连,而没多连这样的关系,构成的子路径就会减少。初始的时候,最少的路径数是点数n,而没连一次,就少走一个路径,于是……)
补图
原来的图中,有边的变没边,没边的边有边。
最大团
集合中的某个子集,这个子集内部所有的顶点都互相相连,在所有这种集合中,顶点数最大的那个。
一些公式
最大匹配数=最小点覆盖
最少路径覆盖*=最少边覆盖=最大独立集=点数-最大匹配数
最大团=补图的最大独立集