让我来抄一抄洛谷日报和命题人讲座!内容偏 MO 向,但只要知道集合和集族的基本概念就行了!
1. 引入
以下给出 Dilworth 定理的一个叙述:当集族 分拆为互不相交的链时,所拆出的链的最小条数 等于 中元素最多的 Sperner 族的元数 。
以下对链以及 Sperner 族做一些讨论。
2. Sperner 族
若集族 中任意两个子集 互不包含,则称 为 Sperner 族。
2.1 Sperner 定理
考虑这样一个问题:对于 元集 的子集族 是 Sperner 族,那么 中最多能够有多少个元素?一个简单的想法是,对于 中所有 元集组成的集族 ,其显然是一个 Sperner 族,它的大小为 ,显然当 时取最大值。
而事实上这个结论是正确的:
Sperner 定理:若 元集 的子集族 是 Sperner 族,则 的元素至多有 个,且 时当且仅当所有元素为所有 元集合时取等; 时当且仅当所有元素为所有 元集合或所有 元集合时取等。
考虑 的全排列,显然其总数为 。另一方面,考虑 中的某个集合 ,设 ,那么前 个元素恰好组成 的排列个数为 。而 为 Sperner 族,那么容易证明对于 内的所有集合,它们所对应的排列都互不相同。设 中有 个 使得 ,则 。又因为当 时 取最大值,则
当 由全部 元集组成时上式取等。当 时由 可知当 全部由 元集组成时上式也取等。
以下给出 Sperner 定理的另一个证明:
设 ,设这些集合中元数最小的集合是 元集,共有 个。我们尝试向 元集中添加一个 中的元素,由于添加的方案数为 ,所以添加后至少有 个 元集,由 Sperner 族的定义我们知道这些集合与 均不相同。当 时 ,此时总子集个数增加,所以可得 。运用类似的方法,可以得到元数最大值 能取到最大值,因此可得当 时取最大值 。
2.2 Sperner 定理的推广
设 为 元集 的子集,满足当且仅当 时 ,令 ,,则有
类似 Sperner 定理的证明,考虑 的全排列, 中元素全部在 中元素前面的排列个数为
考察集合之间的相对位置,容易证明在每一个排列中至多有一个 在 之前,对 求和就得到了结论。取 ( 表示 的补集),此时原式变为 ,由 就得到了 Sperner 定理。
3. 链
狭义的链:对于 的子集族 ,若其满足 ,则称 为一条长度为 的链。
3.1 链的性质
例 :设 是 的 条链,满足任意两条链之间不存在包含关系。若每条链的长度均为 ,则
设 条链 满足条件,对 Sperner 定理的推广形式取 ,,则 ,,因此 。显然 ,若有 使得 ,那么 ,矛盾。因此 满足条件。故
另一方面,设 为 的 元子集,这样的子集共有 个。而链 恰好满足条件,这就完成了证明。
3.2 对称链
若一条链 满足 ,则称 为一条对称链。显然每条对称链都包含 的一个 元集。
例 : 的全体子集可以拆分成 条互不相交的对称链。
对 归纳, 时显然。设命题对于 成立,设 为 时的任意一条链,考虑链 和链 ,显然上述两条链都是 的对称链。
设 ,如果 ,那么 一定恰好在一条形如 或 的链中,并且不在任意一条 中。如果 ,那么 恰好在一条 中,当他等于 时 恰在一条 中,否则 恰在一条 中。所以 的全部子集被拆分成了若干条不相交的对称链,而每条对称链恰好含有一个 元子集,所以链条数为 。
3.3 广义的链
考虑将链中的 关系推广到任意一种偏序关系。即对于某种关系 ,满足对某个集合 中的某个元素,这些元素满足 , 时有 ,即这种关系具有传递性。则 中具有这样广义的链:。
常见的偏序关系:大于/小于,包含,整除,OI 中图论里的有向边等等。
例 :证明:对于 , 的所有正因数可分为互不相交的对称链(定义偏序关系为整除)。
考虑归纳,设 为素数集,当 时, 的所有因数可以组成 一条对称链。
设命题对不同素因子个数 的 成立,考虑 ,并且 的素因子个数 ,将 的所有因数分解成若干条不相交的对称链,设 是其中一条。作表:
其中每一层均为一条对称链,以最外层为例: 构成对称链。容易知道 的所有因子都在表中出现过,因此命题成立。
3.4 分拆链
设 均为 的分拆,若 仅有一个集合 , 由 组成,且其中某两个集合合并后可以组成 ,那么 是一个长为 的分拆链。容易对其计数。
4. Dilworth 定理
回到最开始给出的叙述:
例 :试证明 Dilworth 定理:当集族 分拆为互不相交的链时,所拆出的链的最小条数 等于 中元素最多的 Sperner 族的元数 。
首先可以做一个简单的观察,由于 Sperner 族中 个元素互不包含,因此每条链中至多包含一个这样的元素,因此 。
接下来只需证明 。考虑对 归纳,当 时显然成立。假设结论对 的情况成立,考虑此时的 ,对 中任一元数 的 Sperner 集 ,不在 中的元 必与 中的某个元 有包含关系,否则与 的最大性矛盾。将满足 的 归入 一族,满足 的 归入 一族,如果 均非空,令 ,。
我们称集合 是族 的最小元当且仅当 不包含族 中的其他元。称集合 是族 的最大元当且仅当 不被族 中的其他元包含。由归纳假设, 均可以分拆为 条链,而 为 Sperner 族,所以在 中, 的元都是最小元,从而 的 条链终端正是 的 个元;同理, 的 条链的始端正是 的 个元(作为最大元)。因此可以将 的链与 的链逐对连接起来形成 的链,因此有 。
如果对 中任意元数为 的 Sperner 族 , 至少有一个为空,那么 中至多有两个元数为 的 Sperner 族,即 的最大元所成的族 和 的最小元所成的族 。于是有以下三种情况:
综上,Dilworth 定理得证。值得一提的是,将集族改为任意偏序集, 改成任意偏序关系 ,定理仍然成立。
例 :设 为偏序集。证明:若 不含长为 的链,则 可以表为至多 个 Sperner 族的并。
考虑归纳:当 时结论显然。设命题对 成立。设 的最大元组成 Sperner 族 ,那么 中不含长为 的链。由归纳假设, 可表为至多 个 Sperner 族的并,加上 即为 个 Sperner 族。
事实上,例 是 Dilworth 定理的对偶。
例 :证明:实数数列 中一定能够找出一个 项的递增子列,或能够找出一个 项的递减子列。
若 ,则称 。如果原数列中递增的子序列至多 项,那么由 可知原数列至少能分为 条链。从而有 项组成 Sperner 族,即有一个 项的递增子序列。
例 :LG4928 [CTSC2008]祭祀
给定一个 个点, 条边的 DAG,求其最大 Sperner 族,并构造方案。
别忘了自己还是个 OIer!Dilworth 定理在 OI 中一般表述成这样的形式:最小链覆盖数 = 最长反链长度(即最大 Sperner 族大小),然后就可以使用最大流等方法求解了。这题也可以当做是 OI 中 Dilworth 定理的板子题。
5. 总结
MO 相关的东西咱也不敢乱说......不过 Dilworth 定理在 OI 中的应用形式似乎是比较简单的,也很难见到相关的题,学着就图一乐(大雾)。不过咱也不懂为啥这点东西能搞一天,可能 MO 水平太低就是这样的吧!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】