数学魔术:难倒数学家的表演
来源:数学中国
编辑:Gemini
你有没有看过这样一个扑克牌魔术:魔术师在五六个人好奇的注视下,拿来一叠扑克牌,说:“首先大家检查一下这叠牌是不是不同的花色和点数。”然后对一位观众说:“您可以从这叠牌的上方拿任意数量的牌放到这叠牌的下方(专业一点可以称作切一下牌)。”第一位观众照做之后,把这叠牌递给旁边的人,旁边人同样切一下牌之后,再递给下一个人,轮到最后一个人切完牌的时候,这副牌的顺序已经被完全打乱了。
接下来魔术师会让最后一个人拿走此时这叠牌最上面的一张,再把这叠牌给旁边的人,同样拿走最上面的一张,最后每个人手中都有一张牌。然后魔术师会说:“我看不到你们任何一个人的牌,但现在用意念已经知道你们每个人手中的牌是什么了。”很多人心里一定会想:这也太神奇了吧?魔术师又说:“首先请手中是黑色牌的童鞋站起来。”紧接着他就开始一一说出每个人手中的牌是什么:“你的是黑桃5,你的是梅花8……对于剩下手中是红色牌的童鞋,你的是红桃3,你的是方片……”最后把每个人的牌翻开一看,全部命中,无一错误。
这是一个很经典的魔术,不仅可以骗过醉醺醺的酒鬼,就连魔术师俱乐部里的专业魔术师、美国数学学会晚宴上的数学家们都对这个魔术毫无思绪,猜不出其中的原理。
表演的关键点在魔术师号称他已经知道每个人手中的牌是什么的时候。其实他对每个人手中的牌一无所知,在“首先请手中是黑色牌的童鞋站起来”之后他才知道了所有人手中的牌,他利用各位观众手中红牌、黑牌的排列顺序作为线索,推断出大家手中是什么牌。
具体来说,表演这个魔术需要两件道具:一是事先按顺序排列好的一叠牌,可以从一副扑克牌中取出数字1到8共32张,然后把它们按照下面的顺序排列(背面向上,由上到下)
梅花8,梅花A,梅花2,梅花4,黑桃A,方片2,梅花5,黑桃3,方片6,黑桃4,红桃A,方片3,梅花7,黑桃7,红桃7,红桃6,红桃4,红桃8,方片A,梅花3,梅花6,黑桃5,红桃3,方片7,黑桃6,红桃5,红桃2,方片5,黑桃2,方片4,黑桃8,方片8
这样排列的巧妙之处在于:即使被切过牌,也可以保证任意抽出五张连续的牌,其中黑色和红色的排列顺序一定是唯一的(如果黑色牌是0,红色牌是1,这些长度为5的二进制序列一定是互不相同的)。
另外一件道具是一张表格,可以把它藏在手心里,也可以把它藏在一本书里,当然还可以把它死记硬背下来。对于以上的扑克牌排列顺序,对应的表格是这样的:
假如在魔术中,你发现按照拿牌的先后顺序,第二位和第四位观众站起来了,则说明各观众手中的牌分别是红黑红黑红,二进制形式就是10101,按照表格一查,立刻就可以“感知到”这五个人手中的牌分别是方片5、黑桃2、方片4、黑桃8、方片8。
这一神奇魔术背后的数学原理是二进制的De Bruijn 序列,从这样的序列中任意取出相邻n个数(在我们的魔术中n=5),它们的二进制排列一定不相同。下面我们把最开始的那叠牌写成二进制形式(黑色0,红色1),大家可以验证一下是否如此。
0,0,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1
对于同样的32张牌,De Bruijn 序列自然不是唯一的,可以有很多种排列方法,不同的排列方法也对应着不同的“解密表格”。De Bruijn 序列长度也可以更长,随之变大的是每次需要取出相邻牌的个数(n)。对于不同数量的观众,我们需要准备不同数量的牌。5个观众比较适中,如果给一个班级所有人一起表演,尽管效果无比震撼,但是扑克牌估计要用麻袋来装了。
De Bruijn 序列的奇妙不仅体现在魔术上。我们还可以使用它为机器人做路标定位:将两种不同颜色的小方块排成一条长线摆在机器人行进的路上,机器人只要识别出自己前后的几个方块是什么颜色,既不需要GPS,也不需要高精度探测仪,就可以知道自己走了多少米。
在一列很长的De Bruijn 序列中,中间任意取出n个数字(例如下面序列中的10011),然后向旁边移动一个位置,取出相邻的n个数字(例如下面序列中的00111),它们一定是不相同的,但又有(n-1)个数字是重叠的(0011)。
0,0,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1
0,0,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1
研究人员利用De Bruijn 序列设计了每次可以产生一个用于加密的不同随机数字的简单电子元件“反馈移位寄存器”,上一个随机数字和下一个随机数字之间只改变一个数位和移位一下就可以,电路构造非常简单。
智利的研究人员还曾做过研究,他们设想这个纸牌魔术或许可以和电脑里的数据压缩(例如WINRAR、ZIP、JPEG图片压缩、MPEG视频压缩等)扯上关系。
也许你仅仅为这个魔术的表演效果感到很神奇,但绝对想不到这个魔术背后的原理还可以跨界到如此广阔的领域吧。数学与魔术结合,就是会产生如此奇妙的反应。
往期经典文章回顾:
微积分的发现是人类精神的最高胜利
数学思维比数学运算更重要
经典回顾 | 十大数据挖掘领域的经典算法
瞎扯现代数学的基础
瞎扯现代数学的基础
主宰这个世界的10大算法
一盘红烧肉告诉你:本科、硕士、博士,区别在哪儿?
机器学习中距离和相似性度量方法
数学思维比数学运算更重要
瞎扯数学分析-微积分(1~4)
程序人生的四个象限和两条主线
黎曼猜想证明新进展
数学是安身立命之本
关于投资的12个数学原理
丘成桐:中国学生基础真的比欧美学生好吗?