Dilworth 学习笔记

Rubidium_Chloride

2021-11-27 16:21:15

算法·理论

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

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

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

0. 引入与前言

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

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

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

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

tips:由于内容偏向数学(MO),本文使用 C_{x}^{y}=\dbinom{x}{y} 这种形式表示二项式系数。

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}

考虑其性质:

本性质即 \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_kA_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\limits_{k=1}^n f_k\le C_{n}^{\left\lfloor\frac{n}{2}\right\rfloor}\sum\limits_{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_rr+1 元集,而由于 \mathcal{Sperner} 集的定义,这些集合与 A_1,A_2\cdots A_t 均不相同。

所以可得 $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$。 综上,命题即得证。 ## 2.2 $\mathcal{Another\ Problem\ About\ Sperner}

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

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

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

同样的类似上述的解法 1,考虑 n! 个全排列,A_i 元素全在 B_i 元素前面全排列 C_n^{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=\varnothingA_i 结束 B_j 开始情况中,A_j\cap B_i=\varnothing,与已知矛盾!

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

得证!

另:取 B_i=A_i'A_i' 表示 A_i 的补集),A_i\cap B_jA_i\cap B_j\neq\varnothingA_i\nsubseteq A_j,此时原式变成 \sum\limits_{i=1}^k \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

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}

在一条链中,$|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 中图论里的的有向边 等。 下面是广义链的应用。 ## 3.3 $\mathcal{Problem\ One}

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

设命题对不同素因子个数 $\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 仅有一个集 XP_iA_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_kC_{k+1}^2 种(将任意两个集合合并),则分拆链共有 \prod\limits_{k=1}^{n-1} C_{k+1}^2=\dfrac{(n-1)!n!}{2^{n-1}} 个。

4. \mathcal{Dilworth}

回到最开始的叙述:

对 $t$ 归纳,$t=1$ 时显然成立。 假设结论对 $<t$ 的情况成立,考虑此时的 $\mathfrak{A}$。 对 $\mathfrak{A}$ 中任一元数 $s$ 的 $\mathcal{Sperner}$ 集 $\mathfrak{B}$,不在 $\mathfrak{B}$ 中的元 $A$ 必与 $\mathfrak{B}$ 中某一 $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|< 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](https://www.luogu.com.cn/problem/P4298),更难的应用。 本题描述相当于找某个 DAG 上最长的反链。 偏序关系 $\succ$ 满足:$[x\succ y]\Leftrightarrow [y \text{向}x\text{连边}]$。 所以由 $\mathcal{Dilworth}$ 定理得出所求的即为 用原图上的链覆盖 DAG 的链条数最小值。 然后再用最大流等方法求解。 [例题2:CF590E](https://www.luogu.com.cn/problem/CF590E) 建一个 AC 自动机,求出所有的子串关系。 然后发现本题中的 AC 自动机可以转换成上题中的 DAG(子串关系也是一种偏序关系,与连边类似)。 因此利用上题的解法解决即可。 不愧是黑题啊。 # 5. 结语 $\mathcal{Dilworth}$ 定理在 MO 中主要用于解决证明存在性问题。(似乎常用于反证法?) 在 OI 中更多的是求出最值,构造等。 但其中不变的是对于“覆盖”与“最值”的转换思想。(可能比喻不够具体,先这样吧)。 # 6. 后记 被骂了,typo 一吨,然后等下再交。 upd:修好了,感谢审日报的人员。