终于来到本系列的最后一篇!
在前面三期文章中,我们就《字母预言卡》这个魔术所包含的表演技巧和背后的数学模型的分析和完整建模给大家作了阐述。相关内容回顾如下:
这里再放一下对应魔术的表演视频:
视频1 字母预言卡
以及数学建模对这个魔术背后的数学转化:
给定m个元素e1,2…m,n个该m个元素构成集合的子集S1,2,…n,求解这样的{Sn},使得对任意的元素ei和ej,有如下式子成立,全部写成公式就是:
(这里属于符号表达的意思其实是取遍右边集合的元素)
这里,我们对给定的n,构造的上界m =C(n, [n / 2]),构造的解是:
我们需要证明我们的解符合条件,以及是元素最多的哪一个。
符合条件在上一讲已经用反证法给出了简单说明,第二个问题则通过信息论思路给予了不严格的解释,那么本篇我们来给出严格证明以及由此牵扯出背后更多的数学背景。
要证明的结论,最后转化为了这么一个纯数学问题:
大小为n一个集合两两互不包含的子集的最大数量是C(n, [n / 2])。
问题分析
根据前面和信息论相关的结论猜测,这个最大数量的形式一定是C(k, n),否则不同元素选项会带来不一样的卡片元素数量使得每次给出的信息量并不相同。作为一个要精准预测的魔术,这会因为在极端情况下信息不足而是不利的。如果证明了这一点,那么只需要证明k = [n / 2]时取该关于k的函数的最大值就好了,而这是显然的。
定理证明如下:
首先说明,这个最大的子集的构成元素集合大小必定有相同元素数量的。
作为一个集合A的幂集(powerset),恰好可以在包含关系下构成偏序集(partially ordered set),满足自反性(reflexivity),反对称性(anti-symmetry),和传递性(transitivity)。相同元素数量的集合恰好在同一层级,互不包含。假设其中一个集合A的元素比其他都多,处在更高层级,那么由于其他元素都不能够被其包含,下面所有链条上的集合元素都不能够在这个子集里。而对于该元素,如果把它删除,改成其内元素任意删除一个集合,有|A|种方法,那么只要|A| - 1 > 0,即|A| >= 2时,这个操作就可以在不破坏两两互不包含性质的情况下增加元素数量。而|A|= 1的话,那就没有比这个最高层级还低的非空集合的元素了,因此,由反证法,原命题成立,这个最大的子集的构成元素集合大小必定有相同元素数量的。
剩下的事情就很简单了,证明k的函数C(k,n),当k = [n / 2]时取最大值即可。而这是显然的,因为其他的k化为它之前都要乘以若干个大于1的数。
证毕。
Sperner's Theorem
本以为这样就完了,没想到一点带面查了一些资料以后发现了更大的一个坑。感谢同事给我提出的思路,让我找到了这个定理的出处。
上面这个问题还真有人研究过,还真是个定理,其描述和我得到的这个结论竟然一模一样,名字叫Sperner's Theorem:
Sperner's theorem, in discrete mathematics,describes the largest possible families of finite sets none of which containany other sets in the family. It is one of the central results in extremal settheory, and is named after Emanuel Sperner, who published it in 1928.
(参考资料:https://en.wikipedia.org/wiki/Sperner%27s_theorem)
一不小心就发现一个新大陆,叫Extremal Set Theory,以这种学无止境的方式不断凭借兴趣去拓宽自己的知识外延,实在是一个美好的事。因为每个知识摄入大脑的时候,都伴随着幸福美好有令人激动的回忆。
这个证明中,用到了LYM inequality不等式来进行放缩法完成的,而LYM inequality的证明本身又用到了十分巧妙地排列数构造的策略,让人惊叹不已,让我们来一起欣赏一下。
首先,我们令sk为所有在目标S集合中大小为k的集合的数量,对于[0, n]的k值,我们有:
C(n, [n / 2]) >= C(n, k)
于是,我们有:
sk / C(n, [n / 2]) <= sk / C(n, k)
根据LYM inequality,
sum(sk / C(n, [n / 2])) <= sum(sk / C(n,k)) <= 1,sum对k变量取[0, n]中的所有整数。
因此,
|S| = sum(sk) <= C(n, [n / 2])
原命题得证。
LYM定理不等式
下面继续证明一下以上证明用到的LYM不等式。
(参考资料:
https://en.wikipedia.org/wiki/Lubell%E2%80%93Yamamoto%E2%80%93Meshalkin_inequality)
证明:sum(sk / C(n, k)) <= 1,sum对k变量取[0, n]中的所有整数。
证明过程及其简洁,用到了巧妙的数学构造法:
假设把整个S集合的每个元素都分成两份,一份是它自己,另一份是其补集,再把这两份进行全排列后拼起来,构成一个完成排列,于是我们有:
把n!两边除掉,根据组合数公式,即为所证明的式子。
数学的思考和证明总是这样没完没了,但是突然一下到达光辉的终点,又有一般事情所不能企及的幸福美好。
回忆起我时长出现的心流,儿时很多个日夜的钻研和思考的样子,正是我今天学习研究的影子,也许曾经上某节奥数课的时候老师讲过这个问题,我只是忘了又重新走了一遍探索的路,又也许从不曾碰到,只是堆在那里的那些积累总有些似曾相识的部分,又总有那么多突如其来的思路让我兴奋,颅内高潮,停留在这个瞬间久久不愿离去。
到此为止,这个定理的证明算是全部完成了,这个魔术的数学原理全部证明完毕,这个魔术的数学建模也已经在传送门中清晰明了,而怎么把它用更优雅的方式包装和表演出来,也曾在传送门中,娓娓道来。
整个系列的作品,像一个栈一样,不断压入元素,不断深层调用,当我们清空到栈顶的那一刻,感觉凌晨的天空,都是明亮的。
本公众号现不定期放送数学和魔术相关学习资料,都是作者精心筛选整理后准备给大家的精华内容!现在进入公众号后台:
回复“数学”,获取《数学建模算法与应用》,数模比赛经典教材,司守奎著
回复“数学2”,获取《Pattern Recognition and Machine Learning》,机器学习和模式识别领域的圣经,英文原版
回复“魔术3”,获取magic2728本人魔术基础教学:《Double Lift讲解》
回复“魔术4”,获取magic2728本人魔术表演作品:《混沌的世界》
好了,今天数学魔术师的分享就到这里,希望各位客官喜欢,期待您的转发和赞赏哦!
更多精彩内容欢迎扫描下方二维码关注我们,下期再见!
我们是谁:
MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。我们既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴赏等魔术内容;以及结合二者的数学魔术分享。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎在文末或公众号留言与我交流!
推荐阅读:
点击阅读原文,往期精彩不错过!