问题14:含2n个元素的集合中无包含关系子集的最大数量求解
嘿,这个问题其实是组合数学里经典的Sperner定理的特例,直接给结论:k的最大可能值就是组合数 $\binom{2n}{n}$——也就是当所有选定的子集都是U的n元子集时,这个数量达到最大。
下面结合提示里的思路,给你拆解一下为什么是这样:
一、直观构造:n元子集天然互不包含
首先很容易想到,所有的n元子集之间肯定不存在包含关系——毕竟如果子集A包含子集B,那A的元素个数必然比B多,但这里所有子集都是n个元素,元素数量完全相同,自然不可能有谁包含谁。这一步是最直观的构造,我们先得到了一个大小为$\binom{2n}{n}$的符合要求的子集族。
二、用随机过程验证这是最大值
提示里提到的两种思路,其实是从“概率期望”和“链的性质”两个角度来证明这个构造是最优的:
1. 随机链中最多出现一个选定子集
我们可以想象这样一个随机过程:从空集开始,逐个随机添加U中的元素,直到得到全集U,这个过程会形成一条递增的集合链:$\emptyset = S_0 \subset S_1 \subset ... \subset S_{2n} = U$,其中每个$S_i$是i元子集。
现在假设我们选了k个互不包含的子集,那在这条随机链里,最多能有几个我们选的子集?答案是1个。因为链里的集合是严格递增包含的,如果链里出现两个我们选的子集,那它们必然是包含关系,这和我们“任意子集互不包含”的要求矛盾,所以每条这样的随机链里最多只会出现一个选定的子集。
2. 期望法证明最大值无法超越
接下来我们算一下,这条随机链中,选定子集出现的期望数量:
- 对于一个任意的m元子集A,它出现在这条随机链里的概率是多少?其实这条随机链对应U中元素的一个随机排列(按排列顺序添加元素),A要出现在链里,就意味着排列的前m个元素恰好是A的所有元素。这样的排列数是$m!*(2n-m)!$(先排A的m个元素,再排剩下的元素),总排列数是$(2n)!$,所以概率就是$\frac{m!(2n-m)!}{(2n)!} = \frac{1}{\binom{2n}{m}}$。
假设我们选的k个子集的大小分别是$m_1,m_2,...,m_k$,那么这些子集在随机链中出现的期望总数就是:
$$E = \sum_{i=1}^k \frac{1}{\binom{2n}{m_i}}$$
但刚才我们已经知道,每条链里最多出现一个选定子集,所以这个期望E必然≤1(毕竟期望是所有链的平均出现次数,最多每条链出现1次,平均下来不会超过1)。
而组合数$\binom{2n}{m}$在m=n时达到最大值(这是组合数的对称性和单调性决定的,中间项最大),所以$\frac{1}{\binom{2n}{m}} ≤ \frac{1}{\binom{2n}{n}}$当且仅当m=n时取等号。
如果我们全选n元子集,那期望E就是$\binom{2n}{n} * \frac{1}{\binom{2n}{n}} = 1$,刚好满足E≤1的条件,此时k就是$\binom{2n}{n}$。
如果我们选了任何一个非n元的子集,那对应的$\frac{1}{\binom{2n}{m}}$会比$\frac{1}{\binom{2n}{n}}$大(因为$\binom{2n}{m}$更小),为了让总和E≤1,我们能选的子集数量k就必须比$\binom{2n}{n}$小——这就说明,选非n元子集的话,k不可能更大,所以$\binom{2n}{n}$就是k的最大值。
内容的提问来源于stack exchange,提问作者duqu




