[学习笔记] Dilworth 定理
让我来抄一抄洛谷日报和命题人讲座!内容偏 MO 向,但只要知道集合和集族的基本概念就行了!
1. 引入
以下给出 Dilworth 定理的一个叙述:当集族 \(\mathcal{A} = \{A_1,A_2,\cdots,A_t\}\) 分拆为互不相交的链时,所拆出的链的最小条数 \(m\) 等于 \(\mathcal{A}\) 中元素最多的 Sperner 族的元数 \(s\)。
以下对链以及 Sperner 族做一些讨论。
2. Sperner 族
若集族 \(\mathcal{A}\) 中任意两个子集 \(A_i,A_j(i \neq j)\) 互不包含,则称 \(\mathcal{A}\) 为 Sperner 族。
2.1 Sperner 定理
考虑这样一个问题:对于 \(n\) 元集 \(U = \{1,2,\cdots,n\}\) 的子集族 \(\mathcal{A}\) 是 Sperner 族,那么 \(\mathcal{A}\) 中最多能够有多少个元素?一个简单的想法是,对于 \(U\) 中所有 \(k\) 元集组成的集族 \(\mathcal{A}_k\),其显然是一个 Sperner 族,它的大小为 \(C_n^k\),显然当 \(k = \lfloor \frac{n}{2} \rfloor\) 时取最大值。
而事实上这个结论是正确的:
Sperner 定理:若 \(n\) 元集 \(U = \{1,2,\cdots,n\}\) 的子集族 \(\mathcal{A}\) 是 Sperner 族,则 \(\mathcal{A}\) 的元素至多有 \(C_n^{\lfloor \frac{n}{2} \rfloor}\) 个,且 \(n=2k\) 时当且仅当所有元素为所有 \(k\) 元集合时取等;\(n = 2k+1\) 时当且仅当所有元素为所有 \(k\) 元集合或所有 \(k+1\) 元集合时取等。
考虑 \(1 \sim n\) 的全排列,显然其总数为 \(n!\)。另一方面,考虑 \(\mathcal{A}\) 中的某个集合 \(A_i\),设 \(|A_i| = k\),那么前 \(k\) 个元素恰好组成 \(A_i\) 的排列个数为 \(k!(n-k)!\)。而 \(\mathcal{A}\) 为 Sperner 族,那么容易证明对于 \(\mathcal{A}\) 内的所有集合,它们所对应的排列都互不相同。设 \(\mathcal{A}\) 中有 \(f_k\) 个 \(A_i\) 使得 \(|A_i| = k\),则 \(\sum f_k \times k!(n-k)! \leq n!\)。又因为当 \(k = \lfloor \frac{n}{2} \rfloor\) 时 \(C_n^k\) 取最大值,则
当 \(\mathcal{A}\) 由全部 \(\lfloor \frac{n}{2} \rfloor\) 元集组成时上式取等。当 \(n = 2k+1\) 时由 \(C_n^{k} = C_n^{k+1}\) 可知当 \(\mathcal{A}\) 全部由 \(k+1\) 元集组成时上式也取等。
以下给出 Sperner 定理的另一个证明:
设 \(\mathcal{A} = \{A_1,A_2,\cdots,A_t\}\),设这些集合中元数最小的集合是 \(r\) 元集,共有 \(f_r\) 个。我们尝试向 \(r\) 元集中添加一个 \(U\) 中的元素,由于添加的方案数为 \(n-r\),所以添加后至少有 \(\frac{f_r(n-r)}{r+1}\) 个 \(r+1\) 元集,由 Sperner 族的定义我们知道这些集合与 \(A_1,A_2,\cdots,A_t\) 均不相同。当 \(r \leq \lfloor \frac{n}{2} \rfloor\) 时 \(\frac{n-r}{r+1} > 1\),此时总子集个数增加,所以可得 \(r \geq \lfloor \frac{n}{2} \rfloor\)。运用类似的方法,可以得到元数最大值 \(s \leq \lfloor \frac{n}{2} \rfloor\) 能取到最大值,因此可得当 \(s = r = \lfloor \frac{n}{2} \rfloor\) 时取最大值 \(C_n^{\lfloor \frac{n}{2} \rfloor}\)。
2.2 Sperner 定理的推广
设 \(A_1,\cdots,A_k,B_1,\cdots,B_k\) 为 \(n\) 元集 \(U\) 的子集,满足当且仅当 \(i=j\) 时 \(A_i \cap B_j = \varnothing\),令 \(a_i = |A_i|\),\(b_i = |B_i|\),则有
\[\sum_{i=1}^k \dfrac{1}{C_{a_i + b_i}^{a_i}} \leq 1 \]
类似 Sperner 定理的证明,考虑 \(1 \sim n\) 的全排列,\(A_i\) 中元素全部在 \(B_i\) 中元素前面的排列个数为
考察集合之间的相对位置,容易证明在每一个排列中至多有一个 \(A_i\) 在 \(B_i\) 之前,对 \(i\) 求和就得到了结论。取 \(B_i = A_i'\)(\(A_i'\) 表示 \(A_i\) 的补集),此时原式变为 \(\sum \frac{1}{C_n^{a_i}} \leq 1\),由 \((C_n^{\lfloor \frac{n}{2} \rfloor})_{\max}\) 就得到了 Sperner 定理。
3. 链
狭义的链:对于 \(U\) 的子集族 \(\mathcal{A} = \{A_1,A_2,\cdots,A_t\}\),若其满足 \(A_1 \subset A_2 \subset \cdots A_t\),则称 \(\mathcal{A}\) 为一条长度为 \(t\) 的链。
3.1 链的性质
例 \(1\):设 \(\mathcal{A}_1,\mathcal{A}_2,\cdots,\mathcal{A}_m\) 是 \(U\) 的 \(m\) 条链,满足任意两条链之间不存在包含关系。若每条链的长度均为 \(k+1\),则 $$m_{\max} = C_{n-k}^{\lfloor \frac{n-k}{2} \rfloor}$$
设 \(m\) 条链 \(A_{i0} \subset A_{i1} \subset \cdots \subset A_{ik}\) 满足条件,对 Sperner 定理的推广形式取 \(A_i = A_{i0}\),\(B_i = A_{ik}'\),则 \(a_i = |A_{i0}|\),\(b_i = n - |A_{ik}| \leq n - (a_i + k)\),因此 \(C_{a_i+b_i}^{a_i} \leq C_{n-k}^{\lfloor \frac{n-k}{2} \rfloor}\)。显然 \(A_i \cap B_i \subseteq A_{ik} \cap A_{ik}' = \varnothing\),若有 \(i \neq j\) 使得 \(A_i \cap B_j = \varnothing\),那么 \(A_{i0} \subset A_{jk}\),矛盾。因此 \(A_i,B_i\) 满足条件。故
另一方面,设 \(M_i\) 为 \(\{k+1,k+2,\cdots,n\}\) 的 \(\lfloor \frac{n-k}{2} \rfloor\) 元子集,这样的子集共有 \(C_{n-k}^{\lfloor \frac{n-k}{2} \rfloor}\) 个。而链 \(M_i \subset M_i \cup \{1\} \subset M_i \cup \{1,2\} \subset \cdots \subset M_i \cup \{1,2,\cdots,k\}(1 \leq i \leq C_{n-k}^{\lfloor \frac{n-k}{2} \rfloor})\) 恰好满足条件,这就完成了证明。
3.2 对称链
若一条链 \(\mathcal{A}\) 满足 \(|A_{i+1}| = |A_i| + 1,|A_1| + |A_t| = n\),则称 \(\mathcal{A}\) 为一条对称链。显然每条对称链都包含 \(U\) 的一个 \(\lfloor \frac{n}{2} \rfloor\) 元集。
例 \(2\):\(U = \{1,2,\cdots,n\}\) 的全体子集可以拆分成 \(C_n^{\lfloor \frac{n}{2} \rfloor}\) 条互不相交的对称链。
对 \(n\) 归纳,\(n=1\) 时显然。设命题对于 \(n-1\) 成立,设 \(\boxed{A_1 \subset A_2 \subset \cdots A_t} \ (1)\) 为 \(n-1\) 时的任意一条链,考虑链 \(\boxed{A_1 \subset A_2 \subset \cdots A_t \cup \{n\}} \ (2)\) 和链 \(\boxed{A_1 \cup \{n\} \subset A_2 \cup \{n\} \subset \cdots A_{t-1} \cup \{n\}} \ (3)\),显然上述两条链都是 \(U\) 的对称链。
设 \(A \subset U\),如果 \(n \notin A\),那么 \(A\) 一定恰好在一条形如 \((1)\) 或 \((2)\) 的链中,并且不在任意一条 \((3)\) 中。如果 \(n \in A\),那么 \(A - \{n\}\) 恰好在一条 \((1)\) 中,当他等于 \(A_t\) 时 \(A\) 恰在一条 \((2)\) 中,否则 \(A\) 恰在一条 \((3)\) 中。所以 \(U\) 的全部子集被拆分成了若干条不相交的对称链,而每条对称链恰好含有一个 \(\lfloor \frac{n}{2} \rfloor\) 元子集,所以链条数为 \(C_n^{\lfloor \frac{n}{2} \rfloor}\)。
3.3 广义的链
考虑将链中的 \(\subset\) 关系推广到任意一种偏序关系。即对于某种关系 \(\succ\),满足对某个集合 \(S\) 中的某个元素,这些元素满足 \(x \succ y\),\(y \succ z\) 时有 \(x \succ z\),即这种关系具有传递性。则 \(S\) 中具有这样广义的链:\(x_1 \succ x_2 \succ \cdots \succ x_t\)。
常见的偏序关系:大于/小于,包含,整除,OI 中图论里的有向边等等。
例 \(3\):证明:对于 \(m \in N^{+}\),\(m\) 的所有正因数可分为互不相交的对称链(定义偏序关系为整除)。
考虑归纳,设 \(P\) 为素数集,当 \(m = p^{\alpha}(p \in P, \alpha \in N)\) 时,\(m\) 的所有因数可以组成 \(1,p,p^2,\cdots,p^{\alpha}\) 一条对称链。
设命题对不同素因子个数 \(\leq n\) 的 \(m\) 成立,考虑 \(m = m_1p^{\alpha}, p \nmid m_1\),并且 \(m_1\) 的素因子个数 \(\leq n\),将 \(m_1\) 的所有因数分解成若干条不相交的对称链,设 \(d_1,d_2,\cdots,d_h\) 是其中一条。作表:
其中每一层均为一条对称链,以最外层为例:\(d_1,d_2,\cdots,d_{h-1},d_h,d_hp,d_hp^2,\cdots,d_hp^{\alpha}\) 构成对称链。容易知道 \(m\) 的所有因子都在表中出现过,因此命题成立。
3.4 分拆链
设 \(P_1,P_2,\cdots,P_n\) 均为 \(U\) 的分拆,若 \(P_1\) 仅有一个集合 \(U\),\(P_i\) 由 \(A_1,A_2\cdots,A_i\) 组成,且其中某两个集合合并后可以组成 \(P_{i-1}\),那么 \(P_1,P_2,\cdots,P_n\) 是一个长为 \(n\) 的分拆链。容易对其计数。
4. Dilworth 定理
回到最开始给出的叙述:
例 \(4\):试证明 Dilworth 定理:当集族 \(\mathcal{A} = \{A_1,A_2,\cdots,A_t\}\) 分拆为互不相交的链时,所拆出的链的最小条数 \(m\) 等于 \(\mathcal{A}\) 中元素最多的 Sperner 族的元数 \(s\)。
首先可以做一个简单的观察,由于 Sperner 族中 \(s\) 个元素互不包含,因此每条链中至多包含一个这样的元素,因此 \(m \geq s\)。
接下来只需证明 \(s \geq m\)。考虑对 \(t\) 归纳,当 \(t=1\) 时显然成立。假设结论对 \(< t\) 的情况成立,考虑此时的 \(\mathcal{A}\),对 \(\mathcal{A}\) 中任一元数 \(s\) 的 Sperner 集 \(\mathcal{B}\),不在 \(\mathcal{B}\) 中的元 \(A\) 必与 \(\mathcal{B}\) 中的某个元 \(B\) 有包含关系,否则与 \(\mathcal{B}\) 的最大性矛盾。将满足 \(B \subset A\) 的 \(A\) 归入 \(\mathcal{B}_1\) 一族,满足 \(A \subset B\) 的 \(A\) 归入 \(\mathcal{B}_2\) 一族,如果 \(\mathcal{B}_1,\mathcal{B}_2\) 均非空,令 \(\mathcal{A}_1 = \mathcal{B} \cup \mathcal{B}_1,\mathcal{A}_2 = \mathcal{B} \cup \mathcal{B}_2\),\(|\mathcal{A}_1|,|\mathcal{A}_2| < t\)。
我们称集合 \(A\) 是族 \(\mathcal{A}\) 的最小元当且仅当 \(A\) 不包含族 \(\mathcal{A}\) 中的其他元。称集合 \(A\) 是族 \(\mathcal{A}\) 的最大元当且仅当 \(A\) 不被族 \(\mathcal{A}\) 中的其他元包含。由归纳假设,\(\mathcal{A}_1,\mathcal{A}_2\) 均可以分拆为 \(s\) 条链,而 \(\mathcal{B}\) 为 Sperner 族,所以在 \(\mathcal{A}_1\) 中,\(\mathcal{B}\) 的元都是最小元,从而 \(\mathcal{A}_1\) 的 \(s\) 条链终端正是 \(\mathcal{B}\) 的 \(s\) 个元;同理,\(\mathcal{A}_2\) 的 \(s\) 条链的始端正是 \(\mathcal{B}\) 的 \(s\) 个元(作为最大元)。因此可以将 \(\mathcal{A}_1\) 的链与 \(\mathcal{A}_2\) 的链逐对连接起来形成 \(\mathcal{A}\) 的链,因此有 \(s \geq m\)。
如果对 \(\mathcal{A}\) 中任意元数为 \(s\) 的 Sperner 族 \(\mathcal{B}\),\(\mathcal{B}_1,\mathcal{B}_2\) 至少有一个为空,那么 \(\mathcal{A}\) 中至多有两个元数为 \(s\) 的 Sperner 族,即 \(\mathcal{A}\) 的最大元所成的族 \(\mathcal{E}\) 和 \(\mathcal{A}\) 的最小元所成的族 \(\mathcal{F}\)。于是有以下三种情况:
-
仅族 \(\mathcal{E}\) 有 \(s\) 个元。这时从 \(\mathcal{E}\) 中去掉一个元 \(A\),\(\mathcal{A}\) 剩下 \(s-1\) 个元,并且 \(\mathcal{A}\) 中最大的 Sperner 族仅剩 \(s-1\) 个元,所以由归纳假设可以分拆为 \(s-1\) 条链,加上 \(A\) 单独形成的链,共 \(s\) 条。
-
仅族 \(\mathcal{F}\) 有 \(s\) 个元。同理可知 \(\mathcal{A}\) 可分拆为 \(s\) 条链。
-
\(\mathcal{E},\mathcal{F}\) 均有 \(s\) 个元。任取 \(B \in \mathcal{F}\),必有 \(A \in \mathcal{E}, B \subset A\)。去掉 \(A,B\) 后剩下的元组成 \(s-1\) 条链,加上链 \(B \subset A\) 共 \(s\) 条链。
综上,Dilworth 定理得证。值得一提的是,将集族改为任意偏序集,\(\subset\) 改成任意偏序关系 \(\succ\),定理仍然成立。
例 \(5\):设 \(\mathcal{A}\) 为偏序集。证明:若 \(\mathcal{A}\) 不含长为 \(m+1\) 的链,则 \(\mathcal{A}\) 可以表为至多 \(m\) 个 Sperner 族的并。
考虑归纳:当 \(m=0\) 时结论显然。设命题对 \(m-1\) 成立。设 \(\mathcal{A}\) 的最大元组成 Sperner 族 \(\mathcal{B}\),那么 \(\mathcal{A} -\mathcal{B}\) 中不含长为 \(m\) 的链。由归纳假设,\(\mathcal{A} - \mathcal{B}\) 可表为至多 \(m-1\) 个 Sperner 族的并,加上 \(\mathcal{B}\) 即为 \(m\) 个 Sperner 族。
事实上,例 \(5\) 是 Dilworth 定理的对偶。
例 \(6\):证明:实数数列 \(a_1,a_2,\cdots,a_{nm+1}\) 中一定能够找出一个 \(m+1\) 项的递增子列,或能够找出一个 \(n+1\) 项的递减子列。
若 \(a_i \leq a_j,i<j\),则称 \(a_i \succ a_j\)。如果原数列中递增的子序列至多 \(m\) 项,那么由 \(\lceil \frac{nm + 1}{m} \rceil = n+1\) 可知原数列至少能分为 \(n+1\) 条链。从而有 \(n+1\) 项组成 Sperner 族,即有一个 \(n+1\) 项的递增子序列。
例 \(7\):LG4928 [CTSC2008]祭祀
给定一个 \(n\) 个点,\(m\) 条边的 DAG,求其最大 Sperner 族,并构造方案。
别忘了自己还是个 OIer!Dilworth 定理在 OI 中一般表述成这样的形式:最小链覆盖数 = 最长反链长度(即最大 Sperner 族大小),然后就可以使用最大流等方法求解了。这题也可以当做是 OI 中 Dilworth 定理的板子题。
5. 总结
MO 相关的东西咱也不敢乱说......不过 Dilworth 定理在 OI 中的应用形式似乎是比较简单的,也很难见到相关的题,学着就图一乐(大雾)。不过咱也不懂为啥这点东西能搞一天,可能 MO 水平太低就是这样的吧!