Dilworth 学习笔记

大概就是今天看数学书的时候学到了如何证明 Dilworth 反链定理。

然后十分赞赏,开个坑,可能会投个日报。

本文大部分内容来自《数学奥林匹克命题人讲座——集合与对应》。

0. 引入与前言

相比各位都学过 最长上升子序列 和 最小的用不上升子序列覆盖 的转化(导弹拦截)。

然后其中用的便是 \(\mathcal{Dilworth}\) 定理。

然后本文主要介绍如何证明该定理。

你需要的东西:基本的对于 集合 以及其运算的一些认识,对于 子集族 有一些认识。

1. 让我们开始

对于 \(\mathcal{Dilworth}\) 定理的一个叙述:

当集族 \(\mathfrak{A}=\left\{A_1,A_2,\cdots A_t\right\}\) 分拆为互不相交的 链 时,所需用的 链 的最小条数 \(m\) 等于 \(\mathfrak{A}\) 中最多的 \(\mathcal{Sperner}\) 族 的元数 \(s\)

以下将会对 链,以及 \(\mathcal{Sperner}\) 族 做一些讨论。

2. \(\mathcal{Sperner}\)

又被称为 \(\mathcal{Sperner}\) 族,因为其定义在集族上。

若集族 \(\mathfrak{A}\) 中任意两个子集 \(A_i,A_j(i\neq j)\) 互不包含,称 \(\mathfrak{A}\)\(\mathcal{Sperner}\)

考虑其性质:

  • 如果 \(n\) 元集 \(X=\left\{1,2\cdots n\right\}\) 的子集族 \(\mathfrak{A}\)\(\mathcal{Sperner}\) 族,证明:\(\mathfrak{A}\) 的元素至多为 \(C_{n}^{\left\lfloor\frac{n}{2}\right\rfloor}\),且 \(n=2k\) 时当且仅当所有元为所有 \(k\) 元集合时取等;\(n=2k+1\) 时所有元为所有 \(k\) 元集合或者所有 \(k+1\) 元集合时取等。

本性质即 \(\mathcal{Sperner}\) 定理。

考虑 \(1,2\cdots n\) 的全排列,显然其总数为 \(n!\)

另一方面,前 \(k\) 个元素恰好组成 \(\mathfrak{A}\) 中某个集合 \(A_i\) 的有 \(k!(n-k)!\),而 \(\mathfrak{A}\)\(\mathcal{Sperner}\) 族,这种前 \(k\) 个元素在 \(\mathfrak{A}\) 中全排列互不相同,设 \(\mathfrak{A}\) 中有 \(f_k\)\(A_i\) 使得 \(|A_i|=k(k=1,2\cdots n)\),则 \(\sum\limits_{k=1}^{n} f_k\times k!(n-k)!\le n!\)

\(C_{n}^{k}\)\(k=\left\lfloor\frac{n}{2}\right\rfloor\) 时能取到最大值,所以可以得到 \(|\mathfrak{A}|=\sum_{k=1}^n f_k\le C_{n}^{\left\lfloor\frac{n}{2}\right\rfloor}\sum_{k=1}^n f_k\times \dfrac{k!(n-k)!}{n!}\le C_{n}^{\left\lfloor\frac{n}{2}\right\rfloor}\)

\(\mathfrak{A}\) 全部由 \(\left\lfloor\dfrac{n}{2}\right\rfloor\) 元子集组成时取等。

\(\mathcal{Another\ Solution:}\)

\(\mathfrak{A}=\left\{A_1,A_2\cdots A_t\right\}\),这些元中元数最小的集合是 \(r\) 元集,总共有 \(f_r\) 个。尝试添加一个 \(X\) 中元素到 \(r\) 元集中。对每个 \(r\) 元集 \(n-r\) 中添加方法,所以添加后至少有 \(\dfrac{f_r(n-r)}{r+1}>f_r\)\(r+1\) 元集,而由于 \(\mathcal{Sperner}\) 集的定义,这些集合与 \(A_1,A_2\cdots A_t\) 均不相同。

\(r\le \left\lfloor\dfrac{n}{2}\right\rfloor\)\(\dfrac{n-r}{r+1}>1\),总子集个数增加。

所以可得 \(r\ge \left\lfloor\dfrac{n}{2}\right\rfloor\)

类似的方法,可以得到元数最大值 \(s\le \left\lfloor\dfrac{n}{2}\right\rfloor\) 时能取到最大值。

因此可以得到 \(s=r=\left\lfloor\dfrac{n}{2}\right\rfloor\) 时能取到最大值 \(C_{n}^{\left\lfloor\frac{n}{2}\right\rfloor}\)

接下来考虑后半段。

第二种解法可以非常隐晦的告诉我们 \(n=2k+1\) 时似乎 \(s,r\) 不一定都等于 \(\left\lfloor\dfrac{n}{2}\right\rfloor\)(因为其中有 \(\ge\) 号)。

第一种解法则可以直接了当的告诉我们 \(n=2k\) 时的情况。

\(n=2k+1\)\((C_{n}^{q})_{\max}\Leftrightarrow q=k\operatorname{or} q=k+1\)。也就是说 \(|\mathfrak{A}|_{\max}\Rightarrow \forall A_i\in \mathfrak{A}\)\(A_i\)\(k\) 或者 \(k+1\) 元集。

\(A_1=\{1,2\cdots k\}\),对 \(\forall l>k\)\(\{l,1,2\dots k\}\notin \mathfrak{A}\),全排列 \(l,1,2\cdots k\cdots\)\(k+1\) 个元组成集合 \(\notin \mathfrak{A}\),但是 等号要成立,此全排列前 \(k\) 或者前 \(k+1\) 元所成集在 \(\mathfrak{A}\) 中,所以 \(\{l,1,2\cdots k-1\}\in \mathfrak{A}\),也即 \(\forall A_i\in \mathfrak{A},|A_i|=k\),将 \(A_i\) 中一个元换成其他任意元素所得到的 \(k\) 元集 \(\in \mathfrak{A}\)

经过这样的替代,\(X\) 所有 \(k\) 元集均 \(\in \mathfrak{A}\),所以 \(\mathfrak{A}\)\(X\) 所有 \(k\) 元集组成(此时 \(|\mathfrak{A}|=C_n^k\)),或者不含 \(X\) 任意一个 \(k\) 元子集,即全部由 \(k+1\) 元子集构成。

同理可知 \(\mathfrak{A}\) 包含了所有 \(k+1\) 元子集时也是一个 \(\mathcal{Sperner}\) 集,且 \(|\mathfrak{A}|=C_n^{k+1}=C_n^k\)

综上,命题即得证。

1.2 \(\mathcal{Another\ Problem\ About\ Sperner}\)

据说问题来自 \(\text{Bollobas}\)(博洛巴什),但似乎网上没有找到相关的名称,如果有神仙找到了可以私信我纠正。

我暂且叫他 \(\mathcal{Bollobas\ Lemma}\)

这是 \(\mathcal{Sperner\ Lemma}\)(英文好像是这个)的一个推广。

  • \(A_1,A_2\cdots A_k,B_1,B_2\cdots B_k\)\(X=\{1,2\cdots n\}\) 的子集,当且仅当 \(i=j\)\(A_i\cap B_j=\varnothing\),如果 \(|A_i|=a_i,|B_i|=b_i\),试证明 \(\sum\limits_{i=1}^m\dfrac{1}{C_{a_i+b+i}^{a_i}}\le 1\)

同样的类似上述的解法 1,考虑 \(n!\) 个全排列,\(A_i\) 元素全在 \(B_i\) 元素前面全排列 \(C_m^{a_i+b_i}\times a_i!b_i!(n-a_i-b_i)!=\dfrac{n!}{C_{a_i+b_i}^{a_i}}\) 个。

如果在一个全排列中,\(A_i\) 的元素全在 \(B_i\) 元素前面,\(A_j\) 元素也全在 \(B_j\) 前面\((i\neq j)\),那么在 \(A_i\) 已经过了 \(B_j\) 还没有到的时候 \(A_i\cap B_j=\varnothing\)\(A_i\) 结束 \(B_j\) 开始情况中,\(A_j\cap B_i=\varnothing\),与已知矛盾!

所以每一个全排列中,至多一个 \(A_i\)\(B_i\) 前面,因此对 \(i\) 求和,\(\sum\limits_{i=1}^m \dfrac{n!}{C_{a_i+b_i}^{a_i}}\le n!\)

得证!

另:取 \(B_i=A_i'\)\(A_i'\) 表示 \(A_i\) 的补集),\(A_i\cap B_j\)\(A_i\cap B_j\neq\varnothing\)\(A_i\nsubseteq A_j\),此时原式变成 \(\sum\limits_{i=1}^m \dfrac{1}{C_{n}^{a_i}}\le 1\),由 \((C_n^{\left\lfloor\frac{n}{2}\right\rfloor})_{\max}\) 得出 \(\mathcal{Sperner\ Lemma}\)

3. 链

狭义的链:对于 \(X\) 子集族 \(\mathfrak{A}=\left\{A_1,A_2\cdots A_t\right\}\) 中子集满足 \(A_1\subset A_2\subset\cdots \subset A_t\),称 \(\mathfrak{A}\) 为一条链,其长度为 \(t\)

  • 性质:设 \(\mathfrak{A}_1,\mathfrak{A}_2,\cdots \mathfrak{A}_m\)\(X\)\(k\) 条链,每两条之间均没有子集关系,如果每条链长度均为 \(k+1\),证明 \(m_{\max}=C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}\)

\(m_{\max}=f(n,k)\)

\(m\) 条链 \(A_{i0}\subset A_{i1}\subset\cdots \subset A_{ik}\) 满足题目条件。

\(\mathcal{Bollobas\ Lemma}\)\(A_i=A_{i0},B_i=A_{ik}'\),则 \(a_i=|A_{i0}|,b_i=n-|A_{ik}|\le n-(a_i+k)\),因此 \(C_{a_i+b_i}^{a_i}\le C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}\)

而显然的,\(A_i\cap B_i\subseteq A_{ik}\cap A_{ik}'=\varnothing\),若有 \(i\neq j\) 使得 \(A_i\cap B_j=\varnothing\),则 \(A_{i0}\subseteq A_{jk}\),显然矛盾。因此 \(A_i,B_i\) 满足 \(\mathcal{Bollobas\ Lemma}\) 的条件。因此 \(m=\sum\limits_{i=1}^m 1\le \sum\limits_{i=1}^m \dfrac{C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}}{C_{a_i+b_i}^{a_i}}\le C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}\) 所以 \(f(n,k)\le C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}\)

另一方面,设 \(M_i\)\(\{k+1,k+2\cdots n\}\)\(\left\lfloor\frac{n-k}{2}\right\rfloor\) 元子集,这样子集 \(C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}\) 个,链 \(M_i\subset M_i\cup \{1\}\subset M_i\cup \{1,2\}\cdots \subset M_i\cup \{1,2\cdots k\}(i\in[1,C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}],i\in Z)\) 满足条件!

因此 \(f(n,k)=C_{n-k}^{\left\lfloor\frac{n-k}{2}\right\rfloor}\)

\(k=0\) 时其即为 \(\mathcal{Sperner\ Lemma}\)

在一条链中,\(|A_i+1|=|A_i|+1,|A_1|+|A_t|=n\),则称此条链为 对称链。显然每条对称链含有 \(X\) 的一个 \(\left\lfloor\frac{n}{2}\right\rfloor\) 元子集。\(n=2k\) 时,\(t\) 为奇数,最中间的集为 \(k\) 元集,\(n=2k+1\) 时,\(t\) 为偶数,最中间两个集合为 \(k,k+1\) 元集。

  • 性质:\(X=\{1,2\cdots n\}\) 全体子集可以分拆成 \(C_{n}^{\left\lfloor\frac{n}{2}\right\rfloor}\) 条互不相交的对称链。

\(n\) 使用归纳法,\(n=1\) 时显然,设命题对于 \(n-1\) 成立,设 \(A_1\subset A_2\subset \cdots \subset A_t\qquad(1)\)\(n-1\) 时任意一条链,考虑链 \(A_1\subset A_2\subset\cdots \subset A_t\subset A_t\cup\{n\}\qquad(2)\) 或者链 \(A_1\cup \{n\}\subset A_2\cup \{n\}\subset\cdots \subset A_{t-1}\cup\{n\}\qquad(3)\),显然上述两条链都是 \(X\) 的对称链。

\(A\subset X\),如果 \(n\notin A\)\(A\) 必在恰一条形如 \((1)\) 或者 \((2)\) 的链中,不在任意一条 \((3)\) 中。

如果 \(n\in A\)\(A-\{n\}\) 恰在一条 \((1)\) 中,当他等于 \(A_t\) 时恰在一条 \((2)\) 中,否则恰在一条 \((3)\) 中。

所以 \(X\) 全部子集被拆成不相交的对称链,每条对称链恰含一个 \(\left\lfloor\frac{n}{2}\right\rfloor\) 元子集,所以链条数为 \(C_{n}^{\left\lfloor\frac{n}{2}\right\rfloor}\)

3.2 广义的链

广义的链:将 \(\subset\) 关系推广到任意一种偏序关系,即某种关系 \(\succ\),满足对某个集合 \(S\) 中的某些元素,这些元素满足 \(x\succ y,y\succ z\) 时,\(x\succ z\),也即这种关系具有传递性

\(S\) 中具有以下这种广义的链\(x_1\succ x_2\succ \cdots \succ x_t\)

常见的偏序关系:大于/小于,包含,整除,OI 中的有向边 等。

div1 rk 1 与 div 2 rk 1 的实力偏序

下面是广义链的应用。

3.3 \(\mathcal{Problem\ One}\)

证明 \(m\in N^+\) 所有正因数可分为互不相交的对称链。

\(m=p^{\alpha}\)\(p\in P\)\(P\) 为素数集),\(\alpha\in N\) 时,\(m\) 因数可以组成 \(1,p,p^2\dots p^{\alpha}\) 一条对称链。

设命题对不同素因子个数 \(\le n\)\(m\) 成立,考虑 \(m=m_1p^{\alpha}\)\(p\nmid m_1\),将 \(m_1\) 的因数分解成若干条不相交的对称链。设 \(d_1\cdots d_h\) 为其中一条。

作表 \(\begin{bmatrix}d_1&d_2&\cdots &d_{h-2}&d_{h-1}&d_{h}\\d_1p&d_2p&\cdots&d_{h-2}p&d_{h-1}p&d_{h}p\\\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\\d_1p^{\alpha}&d_2p^{\alpha}&\cdots&d_{h-2}p^{\alpha}&d_{h-1}p^{\alpha}&d_{h}p^{\alpha}\end{bmatrix}\)

每一层均为一条对称链。

以最外层为例 \(d_1,d_2\cdots d_{h-1},d_{h},d_h p,d_h p^2\cdots d_hp^{\alpha}\) 构成对称链。

容易发现 \(m\) 每个因数都出现过,因此命题成立!

\(\mathcal{de\ Brujin}\) 等人在 1951 年证明的结论。

3.4 分拆链

\(P_1\cdots P_n\) 均为 \(X\) 的分拆,如果 \(P_1\) 仅有一个集 \(X\)\(P_i\)\(A_1\cdots A_i\) 组成,其中 \(A_1\cdots A_i\) 构成 \(X\) 的分拆,而且其中某两个集合合并后可组成 \(P_{i-1}\),则将 \(P_1\cdots P_n\) 称为长为 \(n\)分拆链

考虑分拆链计数。

考虑已有 \(P_n\cdots P_{k+1}\),则 \(P_k\)\(C_{k+1}^2\) 种(将任意两个集合合并),则分拆链共有 \(\prod\limits_{k=1}^{n-1} C_{k+1}^2=\dfrac{(n-1)!n!}{2^{n-1}}\) 个。

4. \(\mathcal{Dilworth}\)

回到最开始的叙述:

  • 当集族 \(\mathfrak{A}=\left\{A_1,A_2,\cdots A_t\right\}\) 分拆为互不相交的 链 时,所需用的 链 的最小条数 \(m\) 等于 \(\mathfrak{A}\) 中最多的 \(\mathcal{Sperner}\) 族 的元数 \(s\)

\(\mathcal{Sperner}\) 族中 \(s\) 个元互不包含,因此每条链至多含一个这样的元素,因此 \(m\ge s\)

\(t\) 归纳,\(t=1\) 时显然成立。

假设结论对 \(<t\) 的情况成立,考虑此时的 \(\mathfrak{A}\)

\(\mathfrak{A}\) 中任一元数 \(s\)\(\mathcal{Sperner}\)\(\mathfrak{B}\),不在 \(\mathfrak{B}\) 中的元 \(A\) 必与 \(\mathfrak{B}\) 中某一 \(\mathfrak{B}\) 有包含关系,否则与 \(|\mathfrak{B}|=s\) 的最大性矛盾。

将满足 \(A\supset B\)\(A\) 归入 \(\mathfrak{B}_1\) 一族,满足 \(A\subset B\)\(A\) 归入 \(\mathfrak{B}_2\) 一族。

如果 \(\mathfrak{B}_1,\mathfrak{B}_2\) 均非空,令 \(\mathfrak{A}_1=\mathfrak{B}\cup\mathfrak{B}_1,\mathfrak{A}_2=\mathfrak{B}\cup\mathfrak{B}_2\)\(|\mathfrak{A}_1|,|\mathfrak{A}_2|\le t\)

由归纳假设,\(\mathfrak{A}_1,\mathfrak{A}_2\) 均可以分拆为 \(s\) 条链,而 \(\mathfrak{B}\)\(\mathcal{Sperner}\) 族,所以在 \(\mathfrak{A}_1\) 中,\(\mathfrak{B}\) 的元都是最小元,从而 \(\mathfrak{A}_1\)\(s\) 条链终端正是 \(\mathfrak{B}\)\(s\) 个元,同理,\(\mathfrak{A}_2\)\(s\) 条链首端为 \(\mathfrak{B}\)\(s\) 个元(作为最大元)。

因此可以将 \(\mathfrak{A}_1\) 链与 \(\mathfrak{A}_2\) 链逐对对接起来形成 \(\mathfrak{A}\) 的链,\(s\ge m\)

如果对 \(\mathfrak{A}\) 中任一元数 \(s\)\(\mathcal{Sperner}\)\(\mathfrak{B}\)\(\mathfrak{B}_1,\mathfrak{B}_2\) 至少有一个为空,那么 \(\mathfrak{A}\) 至多有两个元数为 \(s\)\(Sperner\) 族,\(\mathfrak{A}\) 的最大元(它不在 \(\mathfrak{A}\) 的其他元素中)所成族 \(\mathfrak{E}\)\(\mathfrak{A}\) 的最小元 (它不包含其他 \(\mathfrak{A}\) 中的元素)组成的族 \(\mathfrak{F}\)

  • 如果仅有 \(\mathfrak{E}\)\(s\) 个元,从 \(\mathfrak{E}\) 中去除一个元 \(A\)\(\mathfrak{A}\) 剩下 \(t-1\) 个元,\(\mathfrak{A}\) 最大的 \(\mathcal{Sperner}\) 族仅有 \(s-1\) 个元。由归纳假设,可以分拆为 \(s-1\) 条链,添上 \(A\) 自己一条链,共 \(s\) 条;

  • 如果仅有 \(\mathfrak{F}\)\(s\) 个元,同理得可以分拆为 \(s\) 条链。

  • \(\mathfrak{E},\mathfrak{F}\) 均有 \(s\) 个元,任取 \(B\in \mathfrak{F}\),必有 \(A\in \mathfrak{E},A\supset B\),去除 \(A,B\) 后剩余元组成 \(s-1\) 条链,添上 \(A\supset B\),共 \(s\) 条。

综上,\(\mathcal{Dilworth}\) 定理得证!

另:定理中的包含可以改为任何偏序关系 \(\succ\),只需将集族改为相应的偏序集即可。

简单的应用:

  • 证明:任何 \(mn+1\) 个自然数中,能找到 \(m+1\) 个数,使得每一个数能整除比它大的数,或者找到 \(n+1\) 个数,每一个数不能整除其他的数。

  • 最长上升子序列的长度 等于 最小的用不上升子序列覆盖序列的子序列个数。

例题:P4928,更难的应用。

本题描述相当于找某个 DAG 上最长的反链。

偏序关系 \(\succ\) 满足:\([x\succ y]\Leftrightarrow [y \text{向}x\text{连边}]\)

所以由 \(\mathcal{Dilworth}\) 定理得出所求的即为 用原图上的链覆盖 DAG 的链条数最小值。

然后再用最大流等方法求解。

例题2:CF590E

建一个 AC 自动机,求出所有的子串关系。

然后发现本题中的 AC 自动机可以转换成上题中的 DAG(子串关系也是一种偏序关系,与连边类似)。

因此利用上题的解法解决即可。

不愧是黑题啊。

5. 结语

\(\mathcal{Dilworth}\) 定理在 MO 中主要用于解决证明存在性问题。(似乎常用于反证法?)

在 OI 中更多的是求出最值,构造等。

但其中不变的是对于“覆盖”与“最值”的转换思想。(可能比喻不够具体,先这样吧)。

posted @ 2021-12-06 21:39  Rolling_Code  阅读(230)  评论(0)    收藏  举报