完美洗牌的秘密(二)——完美洗牌第二定理

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

在上一篇中,我们重点讲了(反)完美洗牌的操作释义和定理描述。详情请戳:

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

其中提到的(反)完美洗牌定理其实是一次完美洗牌从微观上看的,每张牌位置变化最细节的规律揭示(不变的每张牌值v到新位置索引的映射),从其反函数可以写出整个操作结果的描述(新的排列)。那接下来的问题便是,从宏观上看,一次或多次完美洗牌对整个排列有着怎样的影响呢,其周期是多少,有怎样的整体规律呢?

(反)完美洗牌第二定理推导

在之前的那个系列《关于洗牌的研究(七)——从数学到魔术之鸽尾洗牌》中,其实我们提到过一个结论,就是一副52张的扑克牌经过8次out faro shuffle以后能恢复原状。更多地,整个恢复原状次数满足的规律是:

设Di, j为第i次faro shuffle以后原第j张牌(牌值也为j)的索引值j.c.i(注意这里和(反)完美洗牌第一定理一样,仍然描述的是结果排列的反函数,因为追踪一张特定的牌的位置更好描述也更符合直觉关心的内容。这里分别调用的是v.c和c.i两个函数,这种对象状态机模式的函数调用法能充分考虑状态变化特性对操作的影响,以及其函数名是隐含在对象和属性上的抽象函数,或者统一叫“某对象上的属性值函数”),当牌叠张数为偶数2N:

725aebab27430c90f0b40c332520e732.png

当牌叠张数为奇数2N - 1:

67ab443766827c7573bf430bbe65618c.png

因为奇数张时,in faro和out faro之间是关于Reverse操作或观察方向的变化而对应的,因此in faro的公式可转化为out faro来求。又显然观察方向和牌张位置是否恢复原状所需的次数无关,因此公式不变。

这里ord是multiplicative order,即元素a在整数modn乘法群的阶次,定义即为取得a ^ b == 1(mod n)的最小的b。

那时候只是记忆了有这么个公式,对其成立的背后的原理细节并不是很清楚,经过几年断续的思考,我把这些碎片聚集在一起,我们可以一起尝试着理解一番。

我们发现,只有偶数情况的时候,需要区分in faro和out faro,这对应的是两种不同的排列的变换方式。但是如果是奇数张,这二者并没有什么区别,因为奇数张的out faro shuffle等价于从另一侧开始索引的in faro shuffle,而从哪一侧开始索引绝不会改变序列自身对称的排列Reverse性质,那个可看作人类的观察角度罢了。虽然二者在给定了索引起点以后有着不同的描述,但是从一个不考虑方向的序列角度看,它们的性质是一样的。而相反,偶数张时候的in或者out faro shuffle,无论从哪一侧开始索引都是不变的,是in就是in,out就是out(也可以叫头尾一致),因此才有了上述公式的差别。

但这还不是根本的证明,只是一个旁的理解角度。我们再次仔细观察上面的式子可以发现,如果所选的牌位置处在上半叠,那么以上的推导是显然的,甚至都不需要加后面的mod符号,完美洗牌第一定理就已经告诉我们了规律,难的是这么洗下去迟早要洗到下半叠位置上去,此时已经没法再直接方便地应用完美洗牌定理了,为什么加了一个mod符号就依然成立了呢?

一个角度是按照完美洗牌定理本身的思路,每次当其位置超过了半叠牌(这里半叠的张数定义取决于整叠牌的奇偶性和faro shuffle的类型,如果是偶数那就是刚好2N的一半张数N以内,如果是奇数2N - 1,那out faro是N,in faro就是N - 1(可参考顶叠合底叠公式),就换一个方向来索引,用公式算完以后再换回来,即:

张数为2N,当D >= N:

out faro:

2N - 1 - 2(2N - 1 - D) = 2D - (2N - 1)

in faro:

2N - 1 - (2(2N - 1 - D) + 1) = 2D - 2N = 2D + 1 - (2N + 1)

(D < N就是完美洗牌第一定理,省略)

经过观察可以发现,out faro shuffle的位置变化和上半叠的规律之间只差一个(2N - 1),而in faro shuffle的时候差一个(2N +1),因此上述公式后面为什么要添加mod以及mod数的来由,就很清楚了。

再看奇数张2N - 1的情况,奇迹就要发生了:

out faro,当D >= N:

2N - 2 - (2(2N - 2 - D) + 1) = 2D - (2N - 1)

in faro,当D >= N - 1:

2N - 2 - (2(2N - 2 - D)) = 2D + 1 - (2N - 1)

注意这里推导的不同之处在于,从另一侧看,out faro和in faro的类型恰好共轭地变成对方,这是一个C2群内的对称结构。于是推导下来,刚好两种情况下,都只差(2N - 1)这一个常数,这也刚刚好是整叠扑克牌的张数。

现在倒是整个变化规律可以都等价地视作顶叠的规律来理解了,但在in faro的,还有个+1,需要处理掉,剩下的就完全符合乘方后要还原为1的整数modn乘法群阶的概念了。不过这一点在公式上倒是很灵活,偶数部分随便配方一下就解决了,奇数部分因为已经视角转换以后in/out等价,也就不麻烦写了。

而除了以上虽严谨但繁琐的推导外,偶数张的公式也完全可以归为奇数张来理解,这会更接近真的本质和简洁。偶数张的out faro,相当于少多一张底牌的奇数的out faro,in faro则相当于底部要增加一张的奇数in faro或者顶部增加一张的out faro。所以关于奇偶性和in out,都可以归结为奇数张out faro一种情况来解,其余的都可以等价转化过来,这才是其中最本质的结构。

欧拉定理和整数mod n乘法群

我们接着思考。上面公式完成了无论所研究的牌的索引到了上半叠还是下半叠时的统一,也刚好通过mod运算,使得索引的范围一直落在索引对应的代表元素中。而无论是in还是out,奇数还是偶数张,牌叠位置的变化规律都变成了2的次幂对M取mod形式,故我们所研究的核心问题变为:一叠牌经过多少次特定的faro shuffle洗牌能够恢复原状,就转化为了求最小的m,使得:

2 ^ m == 1(mod M)

M取以上各个不同张数的奇偶性,in和out faro时候的值,且M一定是一个奇数。这个最小的m取值,前面已经提到了,其实就是元素2在整数模M乘法群的的阶(multiipicative order)也是得到对应整数modn环的单位元1的阶次,记作ord_2(M)。

怎么样,这个公式有没有似曾相识的感觉?聪明的你有没有敏感地想起欧拉定理?

因为奇数M和2一定是互质的,所以我们有:

2 ^ phi(M) == 1(mod M)

这便是大名鼎鼎的欧拉定理中a = 2的情况。

当M为质数的时候,退化为特殊情况的费马小定理:

2 ^ (M - 1) == 1(mod M)

我们先证明一下欧拉定理,看看有没有一点解决原问题求最小m的思路,再接着尝试解决原问题。

欧拉定理

(a, n) = 1,则a ^ phi(n) == 1(mod n)。

思路分析:

基本的思路是看在mod*运算下,这些a能否按照定义构成群。而群内元素的阶是群阶的因子,用裴蜀定理结论就能证明。(这里真正的结构是,简化剩余系的元素中,只有部分是模M的原根,其余阶都是phi(M)的因数。)

证明:

设满足性质的a mod n的余数组成与n互质的同余类,因为若(x, n) = 1,那么(x mod n, n) = 1(辗转相除法的求公因数等价可证),有x mod n < n。所以元素取比n小的phi(n)个与n互质的数就能够作为代表系了(即所有的互质数有了以这些数为代表的同余等价类结构)。下面说明这些元素和其上的mod*运算构成群:

封闭性:若ai是群内元素,(ai, n) = 1,i = 1, 2,则(a1a2, n) = 1,(a1a2 mod n, n) = 1,故群内元素对mod*运算封闭;

结合律:因乘法结合律,mod*结合律显然成立;

幺元存在:显然1是其内元素,对群内元素a,有a * 1 mod n = a,故为幺元;

逆元存在:对任意群内元素a(1的逆元为1先不考虑)考虑数列{a_phi(n)}和{a * a_phi(n)},显然,这两者都是群内所有元素的排列,否则与互质假设矛盾。于是两个序列的乘积相等,化简后即得a ^ phi(n) = 1(mod n),故a的逆元是a ^ (phi(n) - 1);(注:1. 这一条核心已经能证明原命题了,其他都是为完整性补足的边角料。2. 证明中用到了互质的元素有逆元可以被除掉,这个要单独说明,否则有点循环论证了。3. 可以直接证明:考察{a ^ m}, m in 0:phi(n),根据鸽笼原理,一定有m1 < m2,a ^ m1 = a ^ m2(mod n),a ^ m1 * (a ^ (m2 - m1)) = 0(mod n),根据欧几里得引理,有(a ^ (m2 - m1)) | n),a ^ (m2 - m1 - 1) * a = 1(mod n),故逆元存在;4. 另外一种证明:根据裴蜀定理,找到x满足ax=1(mod n)由于(a, n)=1本就成立(来源:整数模n乘法群wikipidia))

综上,与n互质的同余类构成群(还可交换),其比n小的与n互质的数构成的代表系成为简化剩余系,也叫缩系。

但欧拉定理的结论顶多给出了一个还原次数的可行解,用的还是底数为2的特殊情况,距离真正的结论还有不少距离。那真正的还原次数对应的最优解怎么求呢?我们下期继续!

精彩抢先看!

视频1 16张茫茫人海

视频2 茫茫人海魔术扩展版

视频3 三叠发牌巴格拉斯效果

视频4 16张的Anti faro周期魔术

c829d1c2a13fc53294a1bf164f329566.gif

我们是谁:

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

d131bad779819f471deb66319dd4730f.gif

5e5caf038a1a1d0534af5f6c43f3a50c.png

5a44d8c5f84748c329a26f6ae428b282.jpeg

扫描二维码

关注更多精彩

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

易拉罐的奇迹(二)——《易拉罐平衡》与《气体转移》

2024阿里巴巴全球数学竞赛决赛中的数列题解析(分析与方程方向第4题)

CATO原理中的数学与魔术(十四)——流程设计思路与升华

魔术里的交代与暗交代(三)——暗交代是怎么做的?

89b0df76c22b3e847736d497f5787c69.gif

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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值