在上一期的文章中,我们分析了《字母预言卡》这个魔术的表演改进方式以及其中的一些思考,感兴趣同学可以先回顾一下相关内容:
字母预言卡里的魔术与数学(一)——魔术表演的艺术
视频1 字母预言卡
这里我再把整个魔术的流程重述一遍,方便本期讲解:
- 观众任意选择一个字母;
- 观众选择包含字母的卡片;
- 把两叠卡片按照有无字母分开;
- 最后展现效果,那堆没有观众选择的字母卡片中只有一个字母没有,就是观众选择的字母。
这的确是一个很数学化的魔术,我们已经讲过怎么改进表演是它更像魔术。而在上一期的最后,我们提到了里面的一些数学问题:
如果选项有m个,至少需要几张卡片可以得到这个结果?或者反过来,n张卡片,最多可以容纳几个选项?以及,怎么设计每张卡片的选项有无的组合,才能够满足要求呢?这个卡片的各个选项出现的结果是否是唯一的,还是,存在很多组满足要求的解?
今天我们就来对这个魔术的本质过程进行如何建模的分析,为后面完善的数学模型建立和求解作准备。
问题分析
数学上对于比较复杂的问题,常常先作一些简化假设,进而估算出大致范围,为可能的结论指明一些方向。有些是纯直觉的,比如费马大定理,哥德巴赫猜想等等,提出的人是天才,证出来更要耗费几代人的努力;而有些是有严谨推理的,比如放缩法,反证法等,从不同角度来理解问题。先解决一个不那么难的问题,进而获得结论范围,指明方向以后再解决更难的,如对洗牌几次才能洗乱的次数估计;另外,要证明一些正着来不容易下手的定理,如质数是无穷的就需要用反证法等等。
在这里,我们可以从信息论角度简单估算一下,要从m个选项中确定一个,需要的信息量是logm这么多。由于这些卡片可以打乱顺序,最后展现的结果被观察的部分(合在一起以后哪个字母是没有出现的)也和顺序无关。所以,如果是用n张卡片做到这一点的话,那么观众的选择所提供的信息实际上是logC(n, k)这么多。显然,当n给定的时候,k = [n / 2]的时候取得最大值,所以可以尽量让k在任何情况下都取这个数,使得观众无论选了那个选项都能够在信息量上稳定地贡献最多,超过logm而从理论上一定能够给出足够确定答案的信息。
在这个原版的魔术里,m = 26,n = 7,k = [7 / 2] = 3,则logC(7, 3) = 35 >= 26。所以,看起来没有意外,这个魔术所用的取值在理论边界范围内,并没有什么奇迹。而且经过了适度的剪裁,虽然7张卡可以变35个选项,但显然猜字母是更合理的选择,而logC(6, 3) = 20 < 26,果真无法达成信息量的界限,因此,卡片也确实至少要7张,一张都不能少。
这里插叙一个问题,大家还记得上一讲里关于2.2里的改进吗?即7张卡片里,每个选项都是3次出现,而这个3,恰好就是C(7, 3)里的这个3,从7张卡中选了3个。
还有,从观众传过来的原始信息来看,7次是否的答案最大的信息其实是7bit(在每一张卡片都等可能的是有和无的情况),而显然,我们获得的信息只有logC(7,3) = log35 < log 128,而这里少的信息,就在于,很多时候,当前面几个卡片的有无结果确定以后,后面的也就跟着分布有偏甚至确定了,自然每次提供的答案的信息不够1bit了。这里从信息最大化使用的设计上看,是不如经典作品《街头猜姓氏》的,那里6次回答涵盖了64个选项,哪怕姓氏分布并不均匀所以信息量并不那么大。但是这里用7张卡片确定26个选择,比较起来对信息的利用小了很多,明明有7bit的序列信息的潜力却仅仅当成了组合数logC(7, 3)bit。
但是,正是因为如此,才有机会洗乱,才有机会轻易地预知若干张的答案,才能够随意洗乱叠成一叠还能够显现出消失效果。这些才是魔术看重的,效果上加分的,相反,哪怕把信息用到了极致,那也顶多是厉害罢了。
一块没有雕琢的科学璞玉,是不能直接变成魔术瑰宝的,这一洗礼的过程,就是我们的数学魔术设计啦!
又比如最近发现的一个《年龄透视卡》的魔术,7张卡片确定两位数年龄,也是一个在常识上合理,科学上冗余设计的魔术,也十分精彩地体现了这一点。在数学魔术里,魔术是甲方,数学是乙方,后者要为前者服务。不仅是魔术,在做每件事和人沟通合作,都需要有这样的意识。
插叙完毕,回来,回来。
信息边界确定了,接下来要计算的就是,如何在边界内完成编码,使得解码(把不包含元素的卡片合起来,唯一一个空的选项就是所选结果)能够恰好可行。
另外,还可以看到,如果这个边界完全用满的话,即令m = C(n, [n / 2]),此时那些包含选项数量应该恰好就是[n / 2](若n为奇数,则还有个等价的[n / 2] 1的解)。否则会有此种选项条件下提供的信息量为log:
C(n, k)< logC(n, [n / 2]) = logm(这个带入组合数定义是显然的)
此时,理论上就不足以通过这些信息确定观众选的是哪一个元素,除非挖掘了新的信息,比如排列顺序,选项范围之类的,自然就无法明确知道观众所选的元素是哪一个了。
当然,即使不能完全确定是哪一个,只要能够缩小到一定范围,魔术就有办法使用和包装,这里不展开了,以后会再分析到,但这里显然不是。
所以啊,我猜,很有可能,前面问题中描述的给定选项数m,需要的卡片张数最少的n,应该就是使得C(n, [n / 2]) >= m的最小那个n了,即:
(有没有觉得,写成公式反而更加不直观了,还是大白话更容易理解哈!)
给定卡片张数n,能够搞定的最多选项数则是C(n, [n / 2])。
这便是在用理论划定界限,数学证明中常见的思路就是这样,给定界限,且构造出一个解能够达到这个界限,证毕。
相信你已经注意到了,C(n, [n / 2])这个数值十分重要,而这个组合数数值背后对应的是真实的这么多个组合构成的集合,其大小是这个数。而每个组合可以写作一个长度为n的二进制数,每一位恰好用0/1来代表是否选择。虽然组合是无序的,指的是同样的元素集合不同排序不算不同组合,但是这个二进制的各个元素的选取结果表达是有序的,不要弄混了。
注意哦,这里的n在实际中的物理意义是卡片的张数!那么一个长度为n的二进制数不就恰好给定了每张卡片该不该出现这个元素的答案了嘛?而且,恰好能够给出需要的C(n,[n / 2])这么多个元素的答案,那这么给出来的解是不是真的满足我们需要的性质呢?
提前告诉你最后答案是恰好满足!分析猜想过程完全正确!
本篇文章,我们就原魔术现象如何进行建模进行了思考分析,并且划定了问题的理论边界,从直觉上给出了问题的解法,下一篇,我们给出该问题的精确的数学模型,敬请期待!