Dilworth 定理
Dilworth 定理
对于偏序集 ,我们有若干概念:
- 链: 中的一个子集 满足 中任意两个元素都可比,即构成全序集。
- 反链: 中的一个子集 满足 中任意两个元素都不可比,即任意非空子集都不是全序集。
- 链覆盖(链划分):若干个链的并集为 ,且两两之间并集为 。
- 反链覆盖(反链划分):若干个反链的并集为 ,且两两之间并集为 。
- 最长链:元素个数最多的链(可以有多个)。
- 偏序集高度:最长链的元素个数。
- 最长反链:元素个数最多的反链(可以有多个)。
- 偏序集宽度:最长反链的元素个数。
- 极小元: 中的一个元素 满足不存在 的元素。偏序集的所有极小元集合形成一条反链。
- 极大元: 中的一个元素 满足不存在 的元素。偏序集的所有极大元集合形成一条反链。
Dilworth 定理:
-
对于任意有限偏序集,其最长反链中元素的数目必等于最小链覆盖中链的数目。
即:最小链覆盖 = 最长反链 = 偏序集宽度。
证明:
首先显然有最小链覆盖小于等于最长反链,所以我们只需构造一组链覆盖等于最长反链即可。假设最长反链大小为 。
-
情形 1:存在一个大小为 的反链 ,它既不是 的所有极大元集合,也不是 的所有极小元集合。
那么对于 中的任意一个元素 ,它要么属于 ,要么小于 中的某个元素,要么大于 中的某个元素。因为:1. 若 上述三种情况都不满足,那么显然 加入 之后仍为一条反链且更长,矛盾;2. 若 同时满足三种情况中的任意两种情况,说明 中存在两个元素是可比的,矛盾。
那么如果我们把设 表示 , 表示 ,那么就有 且 。
显然 和 的最长反链大小都不变,仍然是 ,于是我们对它们归纳处理,可以得到 和 都能被划分成 条链,且 中的每一个元素在 和 都恰好在一条链中。于是我们把 和 各自的 条链拼接起来即可得到 的一个链划分。
-
情形 2:不存在一个大小为 的反链 ,它既不是 的所有极大元集合,也不是 的所有极小元集合。即 的可选范围只有极小元集合或极大元集合。
那么我们选取一个极小元 和一个极大元 满足 ,那么 的最长反链就一定是 ,然后对它归纳处理。于是将 的 条链和链 一起给出了将 划分成 条链的一种构造。
-
-
对于任意有限偏序集,其最长链中元素的数目必等于其最小反链覆盖中反链的数目。
即:最长链 = 最小反链覆盖 = 偏序集高度。
证明:
首先显然有最小反链覆盖大于等于最长链,所以我们只需构造一组反链覆盖等于最长链即可。假设最长链大小为 。
我们注意到:最长链一定包含恰好一个极小元;所有极小元集合形成一条反链。那么我们可以把所有极小元集合单独提出来当成一条反链,并对偏序集剩下的部分归纳处理(剩下的部分的最长链长度一定是 ),即可得证。
Dilworth 定理与 DAG
我们可以把 DAG 上的点集当成偏序集,DAG 上点的 “可达性” 当成偏序关系,那么 DAG 上的最小可重路径覆盖(要求覆盖所有点)就是这个偏序集上的最小链覆盖。
同理,我们可以把 DAG 上的边集当成偏序集,DAG 上边的 “可达性” 当成偏序关系,那么 DAG 上的最小可重路径覆盖(要求覆盖所有边)就是这个偏序集上的最小链覆盖。
对于 DAG 上的最小点不交路径覆盖问题(要求覆盖所有点),我们可以用二分图最大匹配来解决。我们知道在点不交路径覆盖中,路径的条数等于 减去所有路径的边数之和。那么我们直接对于每个点拆点,然后在入点出点的二分图上跑最大匹配即为所有路径边数之和的最大值。
对于 DAG 上的最小边不交路径覆盖问题(要求覆盖所有边),我们知道路径的条数等于 减去各条路径中拼接两条边的这样的拼接点的个数,那么答案就等于 。
对于 DAG 上的最小可重路径覆盖问题(要求覆盖所有点),我们有一种暴力解法:我们把路径上任意可达的两个点 之间都连边,即补全这个偏序图,形成 条边。然后转变为 DAG 上的最小点不交路径覆盖问题,因为对于原问题中的任意一组解,都存在一种把每个点分配给每条路径的方式,使得在新图中变成条数相同的路径,而显然对于新问题中的任意一组解,都存在对应回原问题的一组解。
对于 DAG 上的最小可重路径覆盖问题(要求覆盖所有边),暴力解法也是类似的,只不过要补全的是 条边的偏序图。
速通 Dilworth
对于偏序 ,构造二分图 ,使得 当且仅当 中存在边 。
那么 的最小链覆盖就是 (可以想象成一开始链覆盖就是每个点,然后要在这些点间连尽量多的边形成尽量少的路径)。
同时,可以证明 的最长反链是 ,原因如下:考虑对于任意 , 和 中至少有一者在最大独立集中,否则若存在 满足 都在最大独立集中,可知也会存在边 从而推导出矛盾。所以 的最大独立集相当于要使得 都在最大独立集中的点尽量多,显然这些点抽出来会形成一组反链,而任意一组反链都能对应地放到二分图上(对于不在反链上的一点 ,若 被反链到达,则选择 到独立集中;否则若 到达反链,那么选择 到独立集中)。
而二分图最大匹配等于总点数减最大独立集,从而 的最小链覆盖等于 的最长反链。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现