额,最近看到了一个十分有趣的定理——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定理及其证明的更多相关文章

  1. 二分图最大匹配的K&#246;nig定理及其证明

     二分图最大匹配的K?nig定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K?nig定理证了,其它的废话一概没有.    以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上 ...

  2. Computer Science Theory for the Information Age-6: 学习理论——VC定理的证明

    VC定理的证明 本文讨论VC理论的证明,其主要内容就是证明VC理论的两个定理,所以内容非常的枯燥,但对于充实一下自己的理论知识也是有帮助的.另外,VC理论属于比较难也比较抽象的知识,所以我总结的这些证 ...

  3. 《University Calculus》-chaper8-无穷序列和无穷级数-泰勒定理的证明

    泰勒定理: 证明:

  4. latex中使用定理、证明、缩进

    1.定理和证明 \documentclass[a4paper,UTF8]{article} \usepackage{ctex} \usepackage{amsthm,amsmath,amsfonts, ...

  5. xdoj-1057(Lucas定理的证明及其模板)

    Lucas定理的证明: 转自百度百科(感觉写的还不错) 首先你需要这个算式:    ,其中f > 0&& f < p,然后 (1 + x) nΞ(1 + x) sp+q Ξ ...

  6. hdu5391-Zball in Tina Town-威尔逊定理(假证明)

    Tina Town is a friendly place. People there care about each other. Tina has a ball called zball. Zba ...

  7. 二分图最小覆盖的Konig定理及其证明,最小的覆盖证明

    [转http://www.cppblog.com/abilitytao/archive/2009/09/02/95147.html  ->  http://yejingx.ycool.com/p ...

  8. 初等数论-Base-2(扩展欧几里得算法,同余,线性同余方程,(附:裴蜀定理的证明))

    我们接着上面的欧几里得算法说 扩展欧几里得算法 扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式\(^①\): ax+by = gcd(a, b) =d(解一定存在,根据数论中的 ...

  9. Fermat小定理的证明

    本证明参考了李煜东老师<算法竞赛进阶指南>. 我们首先证明欧拉定理,然后推导出费马小定理. 欧拉定理:若\(\gcd(a,n)=1,a,n\in \mathbb{Z}\),则\(a^{\p ...

随机推荐

  1. Atitit. C# java 的api 文件夹封装结构映射总结

    Atitit. C#  java 的api 文件夹封装结构映射总结 C# java ref System.Reflection System.Type. java.lang.ref concurren ...

  2. SerializeUtil 序列化,反序列化工具类

    package cloud.app.prod.home.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...

  3. mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置

    mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置 转载自勤奋的小青蛙 mongodb占用内存非常高,这是因为官方为了提升存储的效率,设计就这么设计的. 但是大部分的个人 ...

  4. RMAN异机恢复实验---转载

    一.RMAN异机恢复实验 2011年3月23日00:44 1.环境介绍: 主机1: 操作系统 REDHAT5.5 IP地址 172.16.1.120 主机名 sigle 数据库版本 10.2.0.4 ...

  5. js form settimeout

    <html><head><meta charset="utf8"><script type="text/javascript&q ...

  6. 【poj1995】快速幂

    题目大意 求a^b %p 1≤a,b,p≤10^9 思路 时间O(10^9)一定会爆T,采用数学方法+位运算,得到O(log b)的快速幂算法 代码 #include<cstdio> #i ...

  7. 【BZOJ4590】自动刷题机

    [思路分析] 比赛的时候想到了用二分+贪心,二分的部分与贪心的部分也写对了,但是由于数据范围未看没有开long long,且二分左端点赋值过小导致WA掉 正解:二分+贪心 二分代码的长度,贪心判断能否 ...

  8. POJ 1946 DP

    折腾了一晚上 明天再写.. 2016.5.17 23:59 -> -> #include <cstdio> #include <cstring> #include ...

  9. mybatis parameterType报错:There is no getter for property named 'xxx' in 'class java.lang.String'

    方法1: 当parameterType = "java.lang.String" 的时候,参数读取的时候必须为 _parameter 方法2: 在dao层的时候,设置一下参数,此方 ...

  10. File入门及路径名问题

    package com.io.file; import java.io.File; /** * @author 王恒 * @datetime 2017年4月20日 下午2:53:29 * @descr ...