对称与魔术初步(二)——经典魔术《命中注定的缘分》

2023-10-16 21:30

本文主要是介绍对称与魔术初步(二)——经典魔术《命中注定的缘分》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

早点关注我,精彩不迷路!

在上篇文章中,我们对对称性的概念作了一个全方位的解释,其在表面的m美丽背后的数学核心是对象在某操作下某性质的不变性。回顾内容请戳:

对称与魔术初步(一)——美丽的对称

今天要介绍的这个魔术,严格来讲并没有直接用到对称的原理,但是其呈现上确是以对称的形式来给人以美感的,而且里面使用的数学和魔术方法也十分的巧妙,今天就把这个经典作品和大家分享一番。

命中注定的缘分

先看视频。

视频1 命中注定的缘分

这个魔术常用来被我说明在魔术呈现层面的对称性,因为表面上看,最后的结局就是两人的结果一模一样,就像镜子里外一样。这不禁让我想起了Kiko的镜面自动化流程,直接以镜面对称为寓意来做巧合,作为本质是值相等的魔术效果,也是很美。不过这里再从数学角度提一下,这里的对称有两层意思,第一个是镜片反射成像或被同等看待的合理操作是一个对反函数操作有着对称不变性的操作,或者称这是一个对称关系(函数);即,这个操作前后所得的集合整体便因此具有了再经此变换的不变性。而后者,才是真正的由这个函数作用生成对象集组成的新的图案的对称性描述。而对折重合只是这个轴对称满足的C2群内元素的性质罢了,只是巧的是,这个性质刚好等价于对称函数这个对象对交换前后项这个操作是个不动点的说法,一个着眼于对象,一个着眼于变换函数。

当然了,从严格的图案层面上看,这两列巧合的结果也并非完全对称,只是其抽象值序列完全相等。就像把倒序改正序,互补改相等的两条配对的碱基单链一样,或者直接就是一对同源染色体一样,是对称的。不过这种对称好歹肉眼可见,没有DNA那么抽象,看得见,摸得着。

那从原理上有什么说的呢?

数学原理

第一个原理便是信息论方面的,论述过程中也涉及到一些基础的排列组合和对称的知识,即如何读取一张有5个选项的牌的信息。这个信息值log5 bit。我们需要把这log5 bit的信息,用最小的代价记在可以看到的牌背,被认为没有信息的地方。这并不是什么难事,因为bicycle和tallyho这中扑克牌眼花缭乱的牌背,有太多可以通过涂黑等的方式来做这个记号而丝毫不被察觉了。而虽然每个地方的涂与不涂只有1bit信息,但是你要知道,多涂几个虽然bit是线性增长的,可能编码的信息量(等价平均可能数)是指数增长的,就像声音的分贝单位一样,多一分贝都吓死人。

但是有个地方需要注意,扑克牌是有C2对称性的,比如你并分不清右上角和左下角两个点哪个是哪个,如果不曾确定其摆放方式的话,这两个点仅有3种涂法,01和10的涂法对应同一个图案集,不可分辨(化学里的说法就是属于群变换的同一轨道)。因此,这里关于到底涂哪些点,多少点,一共能编码多少信息,还没有那么显然。

我们注意到,Bicycle(Tallyho也有)扑克牌上四角有四个中心原点,可以做上涂黑与不涂黑的标记,他们高度对称,也很隐蔽,现在我们试着求一下仅涂黑与否时,可做标记的种数。

扑克牌在长方形,不可翻转下是R2或D1群。给4个点从左上角开始顺时针编号0:3,故已知其摆放方向的涂抹情况集合为S = B ^ 4,|S| = 16。

令S1 = {s in S | s[0:2] = s[2:4]},表示第一行为第2行图案的旋转条件下的所有图案数;S2 = C(S1, S),为其余补集图案。则|S1| = 2 ^ 2 = 4, |S2| = 2 ^ 4 - |S1| = A(2 ^ 2, 2) = 12。

由于扑克牌所属对称群描述的对称性,我们无法知道你看到的样子是群内哪一个元素描述状态下的样子,故看到的仅能判断是否在一个B ^ 4子集中,该集合由一个元素和群内全体操作构造而成,成为新的描述可判断状态的集合。

S1中的元素旋转不变,故都是单元素成子集,保持C1群,共4个单元素子集;

S2中的元素成对对称地构成2元素集,恰好各自成对地匹配到一起形成一个对称新集合,这样的集合共C(2 ^ 2, 2) = 6种结果。为什么是这么来的呢?先考虑前两个元素,共有2 ^ 2 = 4种选择,后两个元素不能相等,故取剩下3种,总的排列是A(4, 2) = 12种,又因为每个集合两两配对,恰好是组合数的含义,故最后共C(2 ^ 2, 2) = 6种(当然,用补集思想也可以得到计算上的验证,或者直接枚举,用排列组合公式写稍微有点勉强),即共形成6个互不相交的C2群。

故这样对称性的牌背上的4个二进制编码点,共能编码log(4 + 6) = log 10 bit的信息,因为C2对称性,减少了C(4, 2)个可能性,恰是因为这个C2群代表的两个状态无法分辨导致的可编码数量的减少。

不过,这个魔术本身的编码并没有那么复杂了,因为4个点编码5个值,只需要根据点的黑点数量为0:4共5个结果就能判断了(若无对称性,则直接以全0加上one-hot编码也就足够了)。比如1~5点数就恰好代表点前面黑点的数量,想象是一个5棵树的圈,那第五个点实际上就是第0个点,恰好没有黑点。之所以这么做是因为本身log 10 > log 5 存在冗余,我们可以仅用一些浅层特征就能编码出来要的信息,不必那么讲究和节约。同时,这个通信过程需要人去操作和理解,因此,更好地是还必须适合人脑来记忆编码,上面这种物理模型就恰好是人脑擅长的,对机器倒是没什么帮助。

当然了,如果你一直注意让对方洗牌不要洗乱朝向的话,可以编码更多信息,不过魔术表现上好像没什么必要了。所以能够不管朝向地随便洗,这里是数学帮了你的忙了。

另外顺便提一下如何用牌背编码整副牌信息,其实也就log54,不到6个bit,其中花色2bit刚刚好,点数4bit绰绰有余。其实就拿其中一角上的8个花瓣,bicycle和tallyho通用,4个one hot编码表示花色,另外4个二进制整数编码表示点数,即可完成。你发现没有,当信息资源充足的时候,还考虑啥对称性啊,我只不对称地用了一个花瓣!

好了,可以通过背面来知道观众放了什么,这个魔术按道理就可以一直跟着观众后面一个个选一个个放了,然而,这样显然容易顺藤摸瓜被观众找出奥秘来,哪怕他没发现到底怎么做的记号,但是看你可疑的眼神和表演的过程逻辑,已经推理出一二了。

数学遇到麻烦了,魔术是时候得做点什么,让这件事更富有浪漫感。

魔术原理

这个原理叫前移原理,也叫one step ahead。这里使用的关键点有两个,一个是多个效果最后统一展示,通过一些方式是的看起来像前面都成功了,这个和经典魔术《三叠感应》是一样的;另一个是,其中每次表演也确实为下一次做了铺垫,即one step ahead,但是铺垫的仅仅是表演效果,实际效果要到最后才能揭晓。其中第一点不是必要性质,只是有些结构只能如此罢了,这也是和《三次预言》魔术结构上的不同,这里是假装有效果实际是个错位的效果,而最后才能重新调整揭晓,而后者是真的one step ahead地在铺垫真实效果。

而在这里还有一点不一样,其还利用了一个小小的数学事实,也是数学和直觉的一个差距对魔术效果的放大。5张牌的排列的匹配,其实远没有5 ^ 5这么多个可能性,仅有5! = 120而已。如果从排列角度,就是每选一张就少了一个可能性,即,当观众拿出第4张的时候,它的排列所有的信息已经结束了!从信息上讲,我们确实并不需要最后一张牌的值,所以这种观众所不能察觉到的错位的跟随从理论上是可以还原回整个序列,信息不缺失的!

而从实际操作上看,第一张是放的多余牌,先放的第5张其实是根据第4张来的一个double,把4对应的值放底,剩下那张放顶即可。这样看来这个魔术师放的序列里1:5恰好跟随了0:4,完全相等,而其5和观众的4,在排列选定元素时候已经只剩下一个的时候,自然会相等,这时候,只需要用魔术手法把真的底牌移走,便完成了这个惊世骇俗的匹配和对称结局!魔术在最关键的时候,又一次完成了从数学原理到艺术殿堂的飞跃一步!

下一篇,我们继续来看一个堪称奇迹的对称结构的作品,视频先附上,敬请期待!

视频2 total coincidence

f7d436e369a93e4ad5f0d39828c2a349.gif

我们是谁:

MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!

bc98f4b33348f48e6ab0104b9943fc3f.gif

faf584b222d54fe82d26900965030803.png

d4b3febb6fb46f039ab4ec7ec7ca68bd.png

扫描二维码

关注更多精彩

对称与魔术初步(一)——美丽的对称

你眼中的魔术,也是美的吗?

聊一聊数学中的基本定理(五)——主定理

Gilbreath原理中的数学与魔术(九)——Max Maven作品选

魔术的逻辑(三)——明明是假的,但为何奇迹依旧美妙?

ecde8f10218bcce4db264afa9d78f669.gif

点击阅读原文,往期精彩不错过!

这篇关于对称与魔术初步(二)——经典魔术《命中注定的缘分》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/220884

相关文章

Java springBoot初步使用websocket的代码示例

《JavaspringBoot初步使用websocket的代码示例》:本文主要介绍JavaspringBoot初步使用websocket的相关资料,WebSocket是一种实现实时双向通信的协... 目录一、什么是websocket二、依赖坐标地址1.springBoot父级依赖2.springBoot依赖

HotSpot虚拟机的经典垃圾收集器

读《深入理解Java虚拟机》第三版笔记。 关系 Serial、ParNew、Parallel Scavenge、Parallel Old、Serial Old(MSC)、Concurrent Mark Sweep (CMS)、Garbage First(G1)收集器。 如图: 1、Serial 和 Serial Old 收集器 2、ParNew 收集器 3、Parallel Sc

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

初步学习Android的感想

之前在学习java语言的时候就经常听说过Android这门语言,那时候感觉Android有些神秘感,再加上Android是用来开发移动设备的一门语言,所以一直对Android抱有一种兴奋的心情。 在我开始接触 Android之后,感觉超好玩,因为可以在自己的手机设备上开发一些我喜欢的小应用,再想想之前说学习Android应该会很难,但是如果你真的接触了,而且有JAVA的功底,我想学习Androi

魔术方法介绍

目录 一、基本介绍 1、什么是魔术方法 2、常见的魔术方法 二、__str__ 1、基本介绍 2、应用实例:请输出Monster对象的属性信息 三、__eq__ 1、基本介绍 2、应用实例 四、其它几个魔术方法 1、其它魔术方法 2、应用实例 参考文档:3. 数据模型 — Python 3.12.5 文档 一、基本介绍 1、什么是魔术方法 1)在Pyth

初步了解VTK装配体

VTK还不太了解,根据资料, vtk.vtkAssembly 是 VTK库中的一个重要类,允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。 import vtkimport mathfrom vtk.util.colors import *filenames = ["cylinder.stl","sphere.stl","torus.stl"]dt = 1.0renW

嵌入式面试经典30问:二

1. 嵌入式系统中,如何选择合适的微控制器或微处理器? 在嵌入式系统中选择合适的微控制器(MCU)或微处理器(MPU)时,需要考虑多个因素以确保所选组件能够满足项目的具体需求。以下是一些关键步骤和考虑因素: 1.1 确定项目需求 性能要求:根据项目的复杂度、处理速度和数据吞吐量等要求,确定所需的处理器性能。功耗:评估系统的功耗需求,选择低功耗的MCU或MPU以延长电池寿命或减少能源消耗。成本

Leetcode面试经典150题-128.最长连续序列-递归版本另解

之前写过一篇这个题的,但是可能代码比较复杂,这回来个简洁版的,这个是递归版本 可以看看之前的版本,两个版本面试用哪个都保过 解法都在代码里,不懂就留言或者私信 class Solution {/**对于之前的解法,我现在提供一共更优的解,但是这种可能会比较难懂一些(思想方面)代码其实是很简洁的,总体思想如下:不需要排序直接把所有数放入map,map的key是当前数字,value是当前数开始的

力扣 739. 每日温度【经典单调栈题目】

1. 题目 理解题意: 1.1. 给一个温度集合, 要返回一个对应长度的结果集合, 这个结果集合里面的元素 i 是 当前 i 位置的元素的下一个更高温度的元素的位置和当前 i 位置的距离之差, 若是当前元素不存在下一个更高温度的元素, 则这个位置用0代替; 2. 思路 本题用单调栈来求解;单调栈就适用于来求当前元素左边或者右边第一个比当前元素大或者小的元素;【单调栈:让栈中的元素保持单调

接口自动化三大经典难题

目录 一、接口项目不生成token怎么解决关联问题 1. Session机制 2. 基于IP或设备ID的绑定 3. 使用OAuth或第三方认证 4. 利用隐式传递的参数 5. 基于时间戳的签名验证 二、接口测试中网络问题导致无法通过怎么办 1. 重试机制 2. 设置超时时间 3. 使用模拟数据 4. 网络问题的预检测 5. 日志记录与错误分析 6. 切换网络环境 7.