首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

完美洗牌的秘密(一)——(反)完美洗牌定理

早点关注我,精彩不错过!

在我们MatheMagician刚创刊的时候,曾经写过的第一个长篇系列:《关于洗牌的研究(七)——从数学到魔术之鸽尾洗牌》。在那一期文章里其中一部分就是介绍完美洗牌的诸多性质,并且给出了当时我仅了解的两个完美洗牌的魔术《洗牌巴格拉斯》和《完美三明治》。这些作品充分体现了在完美洗牌下,每一个索引处的扑克牌的位置变化的规律,不妨复习一下:

当时对完美洗牌的认知还处于半理性状态,从浅层的现象和基本描述中略知一二。但是,其内部结构之巧妙,原理之深刻远不是那点内容和魔术就能体现的,本文是近年业余收集的完美洗牌相关魔术和数学原理的汇总总结,干货满满,千万不要错过哦!

关于完美洗牌的数学原理,首先是其基本物理操作描述的模型。接着是直观上看最简单的自然就是从每张牌的索引位置变化规律来描述的,它精确而简便,也是一般人最开始最直接的认知,我把它总结为完美洗牌第一定定理;而当场景扩展为对一叠牌进行多次完美洗牌而把视角换作研究整叠牌的排列变化的规律,如所处的排列群子群,周期性大小等,就有了在第一定理基础上更多的结论和应用,总结为完美洗牌第二定理;最后,因为第二定理的结论中处处体现着等效为奇数张牌叠描述的简便性,而奇数张牌叠的完美洗牌里,如果把研究对象从单张牌的绝对位置,变为给定两张牌的距离探讨,那整个完美洗牌规律的把握又会进入一个新的高度,此为完美洗牌第三定理。同时,这些定理所描述的规律,又都有其逆过程反完美洗牌的对应性质的表述,即有3个对应的反完美洗牌定理。最后,我们还添加了其性质分析和完美洗牌的变体milk shuffle的相关定理。

本篇先介绍这三对定理和扩展的相关数学理论,接着有海量的魔术应用了这些定理的方方面面。有的魔术你可能在某些地方见过,但是有了我全新理论视角的讲解,相信你对它原理的理解一定会有新的感受,用起来表演也变得更加舒坦。

术语和定义(操作说明)

完美洗牌(faro shuffle)

将牌叠切牌分为张数差不超过1的两叠,依次(如果其中一叠多1张则必须先拿切此叠以保证最后无剩余牌张)从两叠的顶部开始每次切牌1张并和新牌叠(作为顶叠,最开始为空)完成切牌,直到切完所有牌形成唯一新牌叠。

其中,顶叠为依次切牌的开始叠(此时顶牌不变)的称为外完美洗牌(out faro shuffle),否则称为内完美洗牌(in/straddle faro shuffle)。如果依次切牌的第一次和最后一次存在切牌张数超过1的(此时两叠牌张数可以差距超过1,但不是必须),称为局部完美洗牌。

顶叠(TD:top deck):完美洗牌第一步切牌中切出的牌叠0:[(n - 1 - (1 if in faro else 0)) / 2]。

底叠(BD:bottom deck):完美洗牌第一步切牌中剩余的牌叠[(n + 1 - (1 if in faro else 0)) / 2]:(n - 1)。

反完美洗牌(anti faro shuffle):完美洗牌的逆过程。

注:

1.  在实际的完美洗牌操作中,有默认的经典操作,也有数不清的等效操作,无法都在完美洗牌的定义中列举。比如还存在桌面依次合并的完美洗牌,洗的时候也有从顶部和从底部开始,也有附加一次Reverse操作或没有的各种变体,anti in-out jog等各种形式。因此定义中仅列举最广泛使用的实际物理过程细节描述,其余的只要最后排列效果等效都算。总之要满足对半开的切牌和全部以1为单位的依次交错切牌为条件即可。

2.  in还是out faro的唯一标准可以判断为原顶牌位置和值是否不变,不变的就是out,否则in。其中偶数张牌时,in和out是可以自由选择的;而奇数张牌时,由于要保证每叠牌都能刚好以1为单位切完,多切1张的那一叠是顶叠则必为out,否则为in。且如果将整个牌叠Reverse来看,奇数张时in out的描述发生改变。

3.  反完美洗牌实际上有两种常见的实际操作,1是交替in jog和out jog后抽出out jog的部分再叠起来;或者就是依次发牌2叠再叠起来。这些变种属于数学模型不关注的部分,但呈现的物理过程和魔术效果也许是不同的。

根据完美洗牌的操作释义,我们可以得到对应的数学表达,我们称为完美洗牌定理,基本上也可以看作是数学问题的条件定义基础上直接就能显然得到的,是用符号说明翻译后就能由自然语言描述的术语和定义得到的。

这里,我们描述完美洗牌定理的基础是《CATO原理中的数学与魔术(二)——数学模型》中提到的牌叠元组模型,所有公理化结构都继承自此。

(反)完美洗牌定理

完美洗牌定理

一叠n张的扑克牌D,D.S = 0:(n - 1),进行完美洗牌:

D2 = Faro(D),有any v in 0:(n - 1):

v.c.j = v << 1 + (0 if out faro else 1), v in TD;

= n - 1 - ((n - 1 - v) << 1 + (0 if (out faro nxor n % 2 = 0) else 1))

= (v - [(n + 1 - (1 if in faro else 0)) / 2]) << 1 + (1 if out faro else 0),v in BD;

同时有一个对应的其逆操作反完美洗牌对应的反完美洗牌定理。

反完美洗牌定理

一叠n张的扑克牌D,D.S = 0:(n - 1),进反行完美洗牌:

D2 = AntiFaro(D),有any v in 0:(n - 1):

v.c.j = v >> 1 + (0 if (out faro nxor v % 2 = 0) else ([n / 2] if in faro else [(n + 1) / 2]));

注意因为原牌叠D是个初始自然牌叠,有c.j = c.v,因此v的值就是初始j值,并且在洗牌过程中可用来跟踪的不变性质。可以看到,在性质的表述,这两个定理也不是完全相反对应的,虽然它们的关系就是逆过程这么简单,各自有各自的变化逻辑的表述内容完美洗牌定理的麻烦的是对底叠的计算,这里两个等号是两种,其一是观察视角Reverse,其二则是根据机理硬算,有兴趣可以证明看看是否一定等价。

从一一对应的角度,这个定理的公式非常好理解,几乎说清楚就能证明了。以out faro shuffle的顶叠为基准,从0开始的索引的物理意义是前面的牌的张数,那么out faro时刚好使得其前面的每一张牌下面都增加了一张牌,故其索引变成两倍,也就是上面的移位结果。如果是in faro shuffle,相当于凭空多加了一张,那自然要+1了。如果从1起始也不错,那标准操作就是in faro了,此时它自己和前面的牌前都多1张,所以乘以2。

而底叠部分可以看作是Reverse索引后的的顶叠,借用顶叠公式算出索引后再Reverse回去即可。只是因为out和in faro在奇偶张数下分别在Reverse操作下变化和保持其类型,所以公式上出现了nxor的逻辑运算。不Reverse的直接硬算的结果也写了,感觉没那么优雅。

完美洗牌定理揭示的是在一次完美洗牌的过程中,任意一张索引出的牌的索引变化规律,其和二进制的移位操作有着密切的关系。而且,我们巧妙地通过索引视角的转化,避免了在单张牌的位置变化规律的讨论中去涉及在哪一叠的繁琐判断,因为索引方向决定了关注的牌就在顶叠。而因为完美洗牌有一定的操作门槛,很多数学魔术师也喜欢用容易操作的反完美洗牌的性质来变魔术,后面都会介绍到。

而这个系列,将要在这个基本规律的基础上,从几个新的视角来研究完美洗牌的规律,以及看看,这些规律将可以怎样变成我们心爱的魔术大家跟着我一起看下去吧!

精彩抢先看!

视频1 penehole's principle magic more

视频2 指引巴格拉斯效果

视频3 (反完美洗牌)感应奇迹

视频4 anti faro shuffle的奇迹

视频5 anti faro shuffle的奇迹4K4Q版

我们是谁:

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Ocdhp-HbaZ7G0DoFu5XDXkyQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券