点覆盖 边覆盖 独立集 最大匹配 链划分 对应及构造
发现不是很熟,所以整理一下。
无向图
- 在任意无向图中,最大独立集和最小点覆盖互补。(指其中一个取反得到另一个)
二分图
- König 定理:二分图最小点覆盖大小等于最大匹配大小。
构造:从每个失配点走增广路,走到的点打标记(走出来的叫交错路)。左侧的未标记点和右侧的标记点组成了最小点覆盖。
- 二分图最小边覆盖等于最大独立集大小。
\(\geq\):每条边至多覆盖一个独立集中的点。
构造:选出所有匹配边,然后选出非匹配点任意选个邻边。
选的边数:点数 \(-\) 最大匹配 \(\Rightarrow\) 点数 \(-\) 最小点覆盖 \(\Rightarrow\) 最大独立集。
DAG
(点不相交,选出最少路径覆盖所有点)
对于图 \(G\),每个点复制一下,DAG 中有 \((u,v)\) 就连上左侧 \(u\) 和右侧 \(v\),得到二分图 \(H\).
- \(G\) 的最小路径覆盖等于 \(n\) \(-\) \(H\) 的最大匹配.
最大匹配中有什么边,最小路径覆盖中的路径就选择上哪条边。每次相当于将两个路径合并,所以是互补的。
有向图
最大权闭合子图转最小割:
超源连向正权(存在表示选),负权连向超汇(存在表示不选),权值均为点权绝对值。原图边为 inf.
Dilworth 定理:最长反链长度(两两不可比的最大集合)等于最小链覆盖大小(划分成尽量少的两两可比的集合)
注意:严谨的 Dilworth 定理定义在偏序集中,或者说是一个已经传递闭包后的 DAG,那么这里链覆盖能不能经过重复点是一样的。但如果在普通 DAG 中,并不去求它的传递闭包,不可比定义为不可达,那么这里链覆盖实际上就是点可以相交的路径覆盖。
也就是:传递闭包前的 \(G\),点可以相交;传递闭包后 \(G"\) 无区分,都一样。所以可以传递闭包后跑上面那个 DAG 最小路径覆盖。
最长反链构造:先求出二分图 \(H\) 的最大独立集(最大匹配 \(\to\) 最小点覆盖 \(\to\) 最大独立集),然后 \(x\) 和 \(x'\) 都在最大独立集中的点加入到最长反链中。
设最小点覆盖为 \(m\),那么最大独立集(\(S\))为 \(2n-m\),设构造出的反链长度为 \(t\),那么一定有 \(t+\sum_x [(x\in S)\or (x'\in S)]=2n-m\),而由于右边那个 \(\sum\leq n\),所以 \(t\geq n-m\),但因为 \(G\) 最长反链 \(=\) \(G'\) 最小路径覆盖 \(=\) \(n\) \(-\) \(H\) 最大匹配 \(=n-m\).所以 \(t\leq n-m\),那么构造出来的反链长度一定是 \(n-m\).
这里不知道有没有循环论证,因为我不会证 Dilworth,只是提供一种理解。