【学习笔记】Sperner定理及其证明
額,最近看到了一個十分有趣的定理——Sperner定理。其實這個定理在OI中沒什么用處,因此我都沒把這篇文章放到我的OI標簽里(不知道在MO中是否有用?)但是覺得它很有趣于是就過來寫一下。
由于博主太弱不會用LaTeX寫取整符號,本文中用\([x]\)表示\(x\)下取整。
問題: 有一個\(n\)元集合\(S_n\),從中選出若干個子集,滿足沒有任何兩個子集之間存在包含關系,問最多能選出多少個?
首先結論是很好猜的。如果把所有\(k\)元子集全部選出,那么顯然不會包含,一共能選\(n\choose k\)個子集。顯然這個數在\([\frac{n}{2}]\)時取到最大值,我也構造不出來什么更優的選法,我猜答案就是\(n\choose [\frac{n}{2}]\) !
正確答案就是\(n\choose [\frac{n}{2}]\). 但這個結論的精彩之處在于它的證明:
證明: 對于選出的每一個子集\(S\),我們定義它的生成排列(好吧這個名字是我自己瞎起的)為一些\(1\)到\(n\)的排列,這個排列應當滿足前\(|S|\)個元素構成的集合為\(S\), 后\(n-|S|\)個元素構成的集合為\(S_n-S\). 不難發現一個集合\(S\)的生成排列有\(|S|!(n-|S|)!\)個。
例如: \(n=5\),集合\({1,3,4}\)的生成排列有以下\(12\)個:
1 3 4 2 5 1 3 4 5 2 1 4 3 2 5 1 4 3 5 2 3 1 4 2 5 3 1 4 5 2 3 4 1 2 5 3 4 1 5 2 4 1 3 2 5 4 1 3 5 2 4 3 1 2 5 4 3 1 5 2然后我們考慮題目中子集互不包含的限制,在這里轉化成了,從任何兩個子集的各任取一個生成排列,這兩個生成排列不相等。也就是所有的子集的生成排列是沒有重復的。因為如果某個排列\(p\)同時是兩個不相等的子集\(A,B\)的生成排列,若\(|A|=|B|\)則有\(A\)和\(B\)都是排列\(p\)的同一前綴構成的集合,\(A,B\)相等,矛盾;否則不妨設\(|A|<|B|\), 則\(A\)集合內元素的一個排列是\(B\)內元素的一個排列的前綴,顯然有\(A\in B\)。同樣地,我們可以證明如果\(A\)包含\(B\), 則一定存在排列\(p\)滿足\(p\)同時是\(A\)和\(B\)的生成排列。
因此,原題條件等價于,選出盡量多的集合,使得所有集合的生成排列沒有重復。而設選出了\(m\)個集合,第\(i\)個集合的大小是\(S_i\), 因為所有生成排列沒有重復,所有生成排列的個數不超過\(n!\), 也就是$$\sum^m_{i} |S_i|!(n-|S_i|)!\le n!$$把\(n!\)除過去$$\sum^m_{i=1} \frac{1}{n\choose S_i}\le 1$$根據簡單的二項式系數性質可得\(m\le {n\choose [\frac{n}{2}]}\)
(非常抱歉我把如此簡單的東西講復雜了QAQ)
不過以上過程雖然很容易理解,但是確實很難想啊……據說數學界研究了十幾年才得到這個證明QAQ
另外還聽說這個定理可以推廣到可重集。
總結
以上是生活随笔為你收集整理的【学习笔记】Sperner定理及其证明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【瞎扯】我的OI之路
- 下一篇: Sperner定理及其证明