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

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

在上一篇文章中,我们介绍了(反)完美洗牌第二定理的基本内容和一个很直观的证明,并给出了相关的欧拉定理的证明,详情请戳:

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

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

整数mod n乘法群元素的阶次是phi(M)的因数

欧拉定理的成立,为我们给出了当底数为2时的一组可行的解,但是事情并没有那么完美。欧拉定理告诉我们这个式子成立,但不代表phi(M)一定是使得式子成立的最小的值。也即,欧拉函数phi(M)给出的是需要进行faro shuffle恢复原状的最小次数上界,也许还存在小于它的值使得其早就恢复原状了。这也是一开始提到欧拉定理时不严谨的联想导致的,不过没关系,至少为我们熟悉命题和探索方向找到了一点灵感。比如我们可以证明,这个值是phi(M)的某个因数,否则取phi(M)的时候无法保证成立了。即:

证:群内任意元素a,其阶(满足a ^ x = 1(mod n)最小的x)都是整个群的阶phi(n)的因子。

证明:假设其阶x不是phi(n)的因子,则有(x, phi(n)) = x0,x0 < x;那么因为x和phi(n)都是a操作的周期,故对任意l,k,lx + kphi(n)也是a操作的周期。

根据裴蜀定理,存在l,k的解,使得lx + kphi(n) = x0,故x0也是a的操作周期了,而x0 | x,且x0 < x,这与x是阶矛盾。因此x只能是phi(n)的因子,x0 = x时成立。

我补充的这些内容并不是空穴来风,在数论中早就有人研究过,反而是神奇的扑克和数学世界的一次精妙又美丽的联动。数学上规定,当且仅当,a ^ phi(M) == 1(mod M)的phi(M)是所有使得其成立的最小值时,a称为M的原根(primitive root)。所以根据欧拉定理,(a, m) = 1应该是原根关系的必要条件,但并不保证。

在我们完美洗牌的背景下当然还要考虑牌张数、其奇偶性,in/out faro的类型因素对等效M的影响。比如,如果牌叠张数是2的质数原根减1的偶数张,且是in faro shuffle的情况下,那么其阶次刚好就是牌叠张数,写成轮换就是一个元素数等于张数的超大轮换了。

若一个数m有原根,则它的原根个数为phi(phi(M))

在完美洗牌的研究中,我们重点探讨的是2到底是哪些数的原根,这对这个操作的阶十分关键,如果是原根,那么欧拉定理就能算出其阶,不是的话,还要从其因子中找。但是一个数原根的数量是另一个有趣的话题:可以证明,其数量是phi(phi(n)),对质数n而言就是phi(n - 1)。这样看,不可能有哪个数小于它大于等于1的数都是原根了,因为phi函数的值最大都要比自变量小1。我们来看一下这个问题的证明,后续也可以看到,在高阶的完美洗牌中,这个结论也有一定的指导意义。

证:若一个数m有原根,则它的原根个数为phi(phi(M))。

证明:先证明ord_m(a ^ k) = ord_m(a) / (ord_m(a), k)

因为(a ^ k) ^ ord_m(a ^ k) = a ^ k * ord_m(a ^ k) == 1(mod m),有

ord_m(a) | k * ord_m(a ^ k),故ord_m(a) / (ord_m(a), k) | ord_m(a ^ k)

又(a ^ ord_m(a)) ^ (k / (ord_m(a), k)) = (a ^ k) ^ (ord_m(a) / (ord_m(a), k)),有

(ord_m(a), k) | ord_m(a ^ k) / ord_m(a),于是ord_m(a ^ k) = ord_m(a) / (ord_m(a), k),原命题得证。

由这个结论,当m有原根a时,当(k, phi(M)) = 1,ord_m(g ^ k) = phi(M),故g ^ k也是原根,而这样的k一共有phi(phi(M)),且满足当且仅当,故原命题得证。

进一步,我们还可以证明,原根存在的条件为m = 1, 2, 4, p, 2p, p ^ a这几种可能,p为奇质数。证明比较繁琐,这里先略过了。

具体到完美洗牌,我们想要接近于张数阶次的洗牌的话,那么其必要条件是张数是1, 2, 4, p, 2p, p ^ a这几个形式中的一种。然后需要再确认,2,是不是真正的原根。比如17张的情况,2就不是原根因为2 ^ 8 = 1(mod 17),8,不需要16。

完美洗牌第二定理重述

综上,我们可以得到以下定理:

完美洗牌第二定理:完美洗牌操作的阶,即恢复原排序所需的次数为对应模M乘法群的元素2的阶,ord_2(M) = min({m | 2 ^ m == 1(mod M)});当牌叠张数为奇数2N - 1时,M = 2N - 1,当牌叠张数为偶数2N时,M = 2N +(- 1 if out faro else 1)。

特别地,当2是M的原根时,ord_2(M) = phi(M)。

推论:完美洗牌操作的阶一定能整除欧拉函数phi(M),故其取值不会超过phi(M),M取值同完美洗牌第二定理的描述。

反完美洗牌第二定理:同完美洗牌第二定理。

显然,完美洗牌定理是对完美洗牌操作的阶的描述,而作为逆过程(相当于逆元)的反完美洗牌,其阶次性质完全相同。

根据之前文章的表述,严谨的证明只需要用到完美洗牌第一定理和化归等效的方法就好了。至于为什么这个值就是操作的阶次则很容易说明:等效索引为1的牌(注意是0开始索引,第1张不是顶牌)的阶次一定是ord_2(M),而其他位置牌的阶次则有可能小于ord_2(M),但一定是ord_2(M)的因子,否则根据裴蜀定理就一定还有比它更小的周期。总之,这个只有1个生成元的Cn群再复杂也只有一个操作,故这个操作的阶次就是群的阶次。而这个阶次,就是每个元素位置在操作下组成的群的阶次的最小公倍数,那就是ord_2(M)了。

定理和推论的证明在前文已经叙述好了,对照着一看便知。

下表是从马丁加德纳的全书中拍下来的最多到52张牌的两种完美洗牌的阶数的规律,完全符合上面的结论,大家可以对照着来看看:

b4f1bac3da9515066f010829425caf4d.png

从表中可以看到,奇数张时候该洗牌操作的阶次确实和in out无关,而因为有原根的数有形式的限制(1, 2, 4, p, 2p, p ^ a),故大量的张数没有原根,自然2也不是其原根,有原根的2也不一定就是。因此大量奇数代表张数的mod值都娶不到phi(M)的最大情况,仅有37,29,19,13,11,3取到了phi(M) = M - 1,而phi(25) = 20,也取到了,但不是费马小定理囊括的情况,而是欧拉定理了。

以上就是完美洗牌第二定理的全部内容,从完美洗牌这个操作的阶次的角度来说明了多次执行的规律。没想到这个阶次居然刚好就是2的整数模M乘法群的阶,M的取值则是关于张数和洗牌方法的函数。数学真是穿透本质,看透一切的工具啊!谁再敢说数学都是空中楼阁,无本之木?这应用起来都是颠覆性的!

完美洗牌第二定理扩展思考

这里可能有人就会想,如果可以随意地切换in和out faro shuffle,会有怎样的结果呢?在Grom的文章《Permutations by Cutting and Shuffling》一文中,证明了在张数为偶数时,两种洗牌方法混合起来将可以达成任何一种排列,也就是由这两个操作生成的排列子群就是整个对称群,而奇数张牌则不行。因为简单来看,其切换了in和out faro对应的mod的差值都不变,仅仅相当于作了个切牌轮换平移,但就从位置差这一点就无法遍历所有的情况了。这一点可以在后面的完美洗牌定理3详细看到。

另外,从完美洗牌过程来看,对应的逆操作反完美洗牌,也就是依次发牌翻转操作,也有着完全相同的性质;还有,完美洗牌天然对应的就是2这么个底数,而我尝试着如果要做到3底数的完美洗牌,并不是完全不可,操作上在一个完美上再接一个便是。而如果是4阶,那就是两次完美洗牌就好,正好就是Si Stebbins Stack获取的方式。

下面是20220421的夜里,我完成的这次3阶完美洗牌,够费劲的。

图123 3阶完美洗牌

b511eccb4115bddffd1fdd08a8c46c33.jpeg

161430adabc05356a0691235afb3aa0c.jpeg

d2327208073f94886591d640bf71f6e5.jpeg

不过再高阶次的完美洗牌几乎就非人类直接可为了,但是其反操作却十分简单,那就是往桌上翻转发牌,依次发n叠而已。不过,怎么发,怎么收却有十分的讲究,这部分的初步印象我在《序列周期性与魔术(四)——周期序列数学性质深入探秘》一文中已经有所涉及,而相关深入内容在Peirce count中有完整详细的阐述。包括马丁加德纳一个三进制的通信魔术,也是其浅薄的应用,这个部分我们作为2到n的叠数,阶数扩展,后面文章会看到。

甚至在3阶次的完美洗牌的时候,还发现因为我每次都只能手持2叠牌去码放整齐,过程中第3叠牌就会错开,很难理齐,需要很多次以后才会逐渐收敛。而其中两叠牌是不可能完全盖住第三叠牌的,这有点像我们开篇mathemagican那个问题覆盖问题,需要覆盖的结构必须是用长覆盖宽才行,如图所示。

图4 3阶完美洗牌的覆盖状态

d70c73a5a2fbcbc3ea65c48b7e639958.jpeg

另外,还可以直接从排列的轮换表示来理解完美洗牌的阶次,不过这只是其特定表达罢了,可以计算机算出其轮换表达式,去写相应的O(n)时间和O(1)空间的模拟算法来,那就是cycle notation。其阶次自然是所有轮换的阶次的最小公倍数,而根据位置变化的规律,其所有阶次应该都是其中某个最大阶次的因子,它的阶次就决定整个排列上操作的阶次。

不过轮换表达式除了方便看阶次规律以外,也不是万能的,它会使得我们对一个排列的直观理解变得很差,比如简单一个切牌,距离不变,所有牌位置-x即可,但用轮换表示则非常繁琐,完美洗牌也是如此。

最后还剩一个问题,即为什么完美洗牌第二定理整个式子的基础,即奇数情况下,可以写成ord2(M)的形式,除了繁琐的上下叠的分类讨论的证明,有没有更加本质的刻画呢?我们下一篇接着说。

精彩抢先看!

视频1 whispering joker

视频2 max maven的6张数牌巧合

视频3 10张牌点数和巧合from max maven

视频4 15张Australian发牌找4Ace

8a8c24ae3ae1bf7cfe9c07d0382ac969.gif

我们是谁:

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

8b5917d9848a79a2c9fd00cf778b96d2.gif

08cb924d262be0e267c29fd50202d399.png

f2cf865936ff59aa250eef782ee1f82a.jpeg

扫描二维码

关注更多精彩

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

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

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

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

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

76cb0599a375ea4a44d60ec1364418cb.gif

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值