发现不是很熟,所以整理一下。
无向图
- 在任意无向图中,最大独立集和最小点覆盖互补。(指其中一个取反得到另一个)
二分图
- König 定理:二分图最小点覆盖大小等于最大匹配大小。
构造:从每个失配点走增广路,走到的点打标记(走出来的叫交错路)。左侧的未标记点和右侧的标记点组成了最小点覆盖。
- 二分图最小边覆盖等于最大独立集大小。
:每条边至多覆盖一个独立集中的点。
构造:选出所有匹配边,然后选出非匹配点任意选个邻边。
选的边数:点数 最大匹配 点数 最小点覆盖 最大独立集。
DAG
(点不相交,选出最少路径覆盖所有点)
对于图 ,每个点复制一下,DAG 中有 就连上左侧 和右侧 ,得到二分图 .
- 的最小路径覆盖等于 的最大匹配.
最大匹配中有什么边,最小路径覆盖中的路径就选择上哪条边。每次相当于将两个路径合并,所以是互补的。
有向图
最大权闭合子图转最小割:
超源连向正权(存在表示选),负权连向超汇(存在表示不选),权值均为点权绝对值。原图边为 inf.
Dilworth 定理:最长反链长度(两两不可比的最大集合)等于最小链覆盖大小(划分成尽量少的两两可比的集合)
注意:严谨的 Dilworth 定理定义在偏序集中,或者说是一个已经传递闭包后的 DAG,那么这里链覆盖能不能经过重复点是一样的。但如果在普通 DAG 中,并不去求它的传递闭包,不可比定义为不可达,那么这里链覆盖实际上就是点可以相交的路径覆盖。
也就是:传递闭包前的 ,点可以相交;传递闭包后 无区分,都一样。所以可以传递闭包后跑上面那个 DAG 最小路径覆盖。
最长反链构造:先求出二分图 的最大独立集(最大匹配 最小点覆盖 最大独立集),然后 和 都在最大独立集中的点加入到最长反链中。
设最小点覆盖为 ,那么最大独立集()为 ,设构造出的反链长度为 ,那么一定有 ,而由于右边那个 ,所以 ,但因为 最长反链 最小路径覆盖 最大匹配 .所以 ,那么构造出来的反链长度一定是 .
这里不知道有没有循环论证,因为我不会证 Dilworth,只是提供一种理解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?