早点关注我,精彩不错过!
整数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张牌的两种完美洗牌的阶数的规律,完全符合上面的结论,大家可以对照着来看看:
从表中可以看到,奇数张时候该洗牌操作的阶次确实和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阶完美洗牌
不过再高阶次的完美洗牌几乎就非人类直接可为了,但是其反操作却十分简单,那就是往桌上翻转发牌,依次发n叠而已。不过,怎么发,怎么收却有十分的讲究,这部分的初步印象我在《序列周期性与魔术(四)——周期序列数学性质深入探秘》一文中已经有所涉及,而相关深入内容在Peirce count中有完整详细的阐述。包括马丁加德纳一个三进制的通信魔术,也是其浅薄的应用,这个部分我们作为2到n的叠数,阶数扩展,后面文章会看到。
甚至在3阶次的完美洗牌的时候,还发现因为我每次都只能手持2叠牌去码放整齐,过程中第3叠牌就会错开,很难理齐,需要很多次以后才会逐渐收敛。而其中两叠牌是不可能完全盖住第三叠牌的,这有点像我们开篇mathemagican那个问题覆盖问题,需要覆盖的结构必须是用长覆盖宽才行,如图所示。
图4 3阶完美洗牌的覆盖状态
另外,还可以直接从排列的轮换表示来理解完美洗牌的阶次,不过这只是其特定表达罢了,可以计算机算出其轮换表达式,去写相应的O(n)时间和O(1)空间的模拟算法来,那就是cycle notation。其阶次自然是所有轮换的阶次的最小公倍数,而根据位置变化的规律,其所有阶次应该都是其中某个最大阶次的因子,它的阶次就决定整个排列上操作的阶次。
不过轮换表达式除了方便看阶次规律以外,也不是万能的,它会使得我们对一个排列的直观理解变得很差,比如简单一个切牌,距离不变,所有牌位置-x即可,但用轮换表示则非常繁琐,完美洗牌也是如此。
最后还剩一个问题,即为什么完美洗牌第二定理整个式子的基础,即奇数情况下,可以写成ord2(M)的形式,除了繁琐的上下叠的分类讨论的证明,有没有更加本质的刻画呢?我们下一篇接着说。
扫描二维码
关注更多精彩