do_while_true

一言(ヒトコト)

点覆盖 边覆盖 独立集 最大匹配 链划分 对应及构造

发现不是很熟,所以整理一下。

无向图

  • 在任意无向图中,最大独立集和最小点覆盖互补。(指其中一个取反得到另一个)

二分图

  • 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,只是提供一种理解。

posted @ 2023-03-09 09:40  do_while_true  阅读(91)  评论(0编辑  收藏  举报