早点关注我,精彩不错过!
在前面的文章中,我们已经介绍了几个应用编码和通信原理的基本魔术,都是经典作品,相关内容请戳:
编码通信与魔术初步(六)——经典魔术《傅氏幻术》赏析和《我的心灵感应》
编码通信与魔术初步(五)——编码通信魔术入门《3 * 7的感应》
编码通信与魔术初步(四)——通信编码魔术的基本原理
编码通信与魔术初步(三)——最大熵模型
编码通信与魔术初步(二)——信息论基础
编码通信与魔术初步(一)——通信浅谈
今天我们进入最后一个经典佳作,看看你有没有熟悉的感觉。
街头猜姓氏/数字
视频1 街头猜数字
这个魔术我小时候在很多地方见过(或许你也是),大街上,古玩店里,以及后来在淘宝店里。大体流程是魔术师会拿出一叠卡片,去询问每张卡片上有没有观众所想的数字或者姓氏等其他内容,问完以后,魔术师就感应出了结果。
因为其来自于街头巷尾,又和经典的《街头猜姓氏》呼应,便取了这个名字。
街头猜姓氏/数字数学原理
用今天我们学到的观点来分析下。如果是六张卡片,每张都有一个是或否的答案,每张卡片就编码最多2个选项,对应最多1个bit的信息(为了方便分析,我们假设选择是均匀分布的,用这种最优,熵最大的结果,去探讨可行性)这样算来,最多就是一共6bit,共计64个选项中的一个。显然对于这以内个数的数字,姓氏,都可以顺利完成编码最后再由魔术师解码返回。而姓氏等姓氏,无非是在数字编码基础上再加了一层一一映射而已。但依稀记得我那时候应该还在读小学,哪懂什么二进制,但是我大体分析出,应该是每个数字在每张卡片上的出现与否都不同的结果。于是直接从1开始,去列举所有的出现方式,往6张卡片上填数字,经过了大约半小时的紧张校对,我自己做成了那6张卡片的道具!那样的兴奋对当时的我是很珍惜的,还有一次类似的,便是用透明胶粘了一副牌,做了一套绿野仙踪。当时我只是不知道这玩意有二进制编码这个名字罢了,其实执行的就是对应的操作。即,每个数字的出现与否所形成的二进制序列对应的值,恰好是观众所选。因此,就按照这个方式把数字打印在各张卡片上就好了。谁要我们是十进制而不是二进制呢,所以,看上去每张卡上的数字,并没有明显的规律,不然,你把他们用二进制编码打出来试试?其实啊,进制数仅仅是自然数的编码而已,各种编码之间是可以相互转化,一一对应的。
理论上,一共可以编码64个数,0~63,但是如果这样给选项,未免太过明显地有数学痕迹,所以改成了1~60,这和3 * 7的魔术原理是一样的,魔术里的艺术极致和数学里的科学极致目标有一些区别,体现在其优化目标是魔术效果,而非数学的应用程度和完备性。当然如果是姓氏就无所谓了,因为早就抹去数字的痕迹,但是要承担可能整个64个都没有的后果,而且也需要像De bruijin序列魔术一样准备一张表来查。
别以为这样的转化一点也了不起,要知道这种朴素地用自然数的二进制编码来表示离散字符的方案,正是我们每天用的unicode码的原型,再往前则是ascii码,编码128个显示与非显示字符,unicode则最多有17个平面,每个有2bytes的位置来编码2 ^ 16种可能的字符,而因为不同字符使用的频率实在差距太大,因此又用到了如utf8等压缩编码的技术。而这一切,似乎都是和街头猜姓氏这个魔术有着隐隐的联系。
还有一点,因为所有给定位为1的数字,最小的就是形如2 ^ n的那个,它会出现在每一张卡片的第一个。而在二进制数往10进制解码的时候,也是用2 ^ n乘以各个码位的值,在二进制里,就只有加和不加的两种选择。因此,最后其实顺序乱了也无所谓,直接把观众说是的卡片的第一张加起来就可以了,这就是解码公式,用加法完成,加法,有交换率!一开始我还觉得,居然可以直接加起来就得到结果,以为是一个天大的巧合和秘密,但是当思维层级上来,当成是编码解码函数,当成是进制数的编码转换的时候,一切便干净澄澈了。
街头猜姓氏/数字相关杂感
写到这里,脑子里蹦出很多相关的思考。比如,我觉得二进制和其他更高进制还是有着本质区别的。这区别就在于,它天然可以表示是否,有无的二分类的意思,非黑即白,就像上面的二进制编码解码成十进制数一样,只有出现和不出现两种选择,看起来就没有系数的概念了。而多分类的变量就做不到这一点但是反过来二分类可以多个组合起来别扭但是等价地表示多分类变量。就连在集合语言中,多分类的叫互斥,二分类的才能叫对立。这种有无的概念,本身是不具备数值意义,大小意义的,而且早就天然存在,比如电路状态,它是天然有物理背景来支撑的,却可以用来表达和它的本义毫不相干的加减乘除,那就实在是太奇妙了。二进制是计算机的根基,由它转化而来的一切,便是计算机分发复杂而又美丽多姿的世界。
关于二进制,我们在《关于洗牌的研究(二)——你的扑克洗乱了吗?》系列中介绍完美洗牌中曾经介绍到,大家有兴趣可以对这一编码方式和一些运算性质,进行回顾,关于这个的深入探讨,我们后面也会再写文章展开讨论,敬请期待。
另外,进制类的编码通信其实除了这个完整的魔术应用,还有很多其它的局部使用。比如一些魔术中托使用左手或者右手,是否翻面,有没有跷二郎腿等等,都可以方便地作为二进制信息传递出来,因为二分类的对象天然就是最容易编码和通信的。当然也不乏有一些3进制和更高进制通信的应用,在特殊的地方有特殊的用法,我们在后面的其他专题会再讲到。
最后提一下,这类卡片感应的魔术,在市面上有很多的变体和拓展,但是整体都是编码通信原理的应用,只不过编码方式有所区别,通信方式都是通过这些卡片和观众的回答所得到的信息来编码答案的。在本初步编码通信系列里,我们先介绍这个最基础的,还有另外的之前介绍过的《字母预言卡里的魔术与数学(四)——Sperner's Theorem的美妙证明》系列是用的组合编码,以及一些其他的佳作,我们在后面的系列再专门系统介绍。
本系列到这里就全部结束了,从编码通信的理论出发,我们介绍了很多经典的作品,算是先入门一下,接着还会有相关的更加细致的编码通信的系列与大家见面,下个系列见!
我们是谁:
MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴赏等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!