鸽尾洗牌的秘密(二)——引理、第一定理和循环子序列

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

数学魔术是孩子最好的逻辑思维启蒙导师,MatheMagcian数学魔术课程火热报名中!

欢迎点击《数学魔术师种子班(初高中)报名通知!》、《数学魔术师种子班(小学)报名通知!》、《数学魔术师种子班个性化课报名通知》并咨询微信1035312177(备注:数学魔术课程咨询)报名!

名额有限,先到先得!


上一篇我们介绍了鸽尾洗牌的定义,回顾了之前的相关描述和今日视角的,详情请戳:

鸽尾洗牌的秘密(一)——回顾与定义

接着,和完美洗牌系列一样,我们用《CATO原理中的数学与魔术(十四)——流程设计思路与升华》中提到的牌叠元组模型来描述鸽尾洗牌的相关定理和定律,所有公理化结构也都完全继承。

符号定义和说明:

n in N+:牌叠张数;

c in 1:(n - 1):切牌张数;

鸽尾洗牌引理

鸽尾洗牌引理:鸽尾洗牌所有可能的排列总数为2 ^ n - n。

证明:切牌牌张数c in 1:(n - 1),其中每一个c都存在一种保持原牌叠顺序不变的唯一方法,除此以外其余任意不同c接下来洗牌的排列结果都不可能相同(c更大的存在的更长子序列在小的牌叠中不存在),而对给定的c,其洗牌结果方法总数为C(n, c)

根据容斥原理,所有方法总数为sum{C(n, c) | c in 1:(n - 1)} - (n - 1) + 1 = 2 ^ n - n。

这个引理给出了一次鸽尾洗牌的形成的随机牌叠分布的空间大小,虽然比n!的全排列少不少,感性上的差距来自于!的乘数越来越大而指数函数竟然给定的底还有劣势了。不过从这里也可以看出来至少要几次鸽尾洗牌才能至少达到全排列的空间全覆盖,再去提均匀分布的事了。这些在《关于洗牌的研究(二)——你的扑克洗乱了吗?》中都简单聊过,只不过当时的方法总数计算出了小误差,没考虑到重复牌叠的问题。但确实就估算而言足够小而忽略无妨,这里也不再赘述。

这个鸽尾洗牌以后随机牌叠集合大小还只是这个集合研究的一个很小的性质罢了。哪怕刨去其上的概率分布不看,目前我们也没有对这个集合本身有太多本质的认识,就知道大小这一个性质而已。但随着对一些已有魔术作品原理的解释需求,和我本身对此结构背后一定有某种简洁干净描述的执念,历经艰辛,我终于发现了上帝写在鸽尾洗牌背后的密码。

鸽尾洗牌第一定理

我跳出形成牌叠结果的随机过程的细节,而是从鸽尾洗牌引理的理解中发现,本质上,洗牌的结果中,隐约含有两条原牌叠的(连续)子串,它们刚好是切牌过程留下的顶底两叠牌来的。而它们的中间因洗牌而互相被插入了若干别的牌张,使得原来连续的串变得不完全连续。而这个插入过程是不改变原子串的相对顺序的。按定义说,两个切牌的牌叠都是洗牌结果的子序列,而且这两个子序列的元素刚好不重复不遗漏地就是原牌叠的全部牌张集合。

于是,我们有如下定理:

鸽尾洗牌第一定理:鸽尾洗牌的结果排列的元素可以划分为两个对立的子集,其形成的保序子序列刚好为原来切牌出来的两个原牌叠的互为对立补集的子串。用符号语言表达为:

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

D2 = Faro(D),存在D3, 4(洗牌时分割的顶底两叠牌),D3 + D4 = D,for any c1, 2 in D3 or D4,c1.j = c2.j - 1,有在D2下c1.j < c2.j。

注意这里说的可以,其实是存在的意思,而且是唯一存在的(除了引理中提到的对称不变的洗牌结果外)。寻找方法也很简单,就顺着顶底叠各自的元素顺序,挨个检查遍历即可(实际只要有区分来自哪一叠的性质就够了)。其证明的思路在前面的分析基本也谈到了,严格写的话,那就是依照操作释义中的意思依次对应为子串、子序列这些数学概念的定义就清楚了。这里不再写详细证明,一个是我懒,另外作为对数学魔术物理式的研究方法,如果大脑已经接受了一个结论的成立并构建了非形式逻辑但已极其自信的推演模拟过程的话,我是可以接受定律式的承认,而非一定要推导到形式层,去钻死那个牛角尖。这是基于生而有涯的效率考量,也是作物理研究使用数学模型工具时高效的重要权衡标准。

循环子序列

这个定理的提出,已经能解决一大部分相关数学魔术的原理解释问题了,但并不是全部。因为一旦涉及到中间还有切牌操作的引入,这里的所谓子串就全部断了,推导不再成立。现在回头看成果时觉得很简单,但我也是费了很大的功夫,才定义了天然在切牌下能保持不变的更合适的数学结构:循环子序列和子串。

想法自然是从非循环的开始的。可如何定义这个扩展的概念也并不是完全直观的。子串好说,那就是循环序列中截出来的一段,数学概念上就是Cn群上两个元素的唯一连通路径上包括自己的所有元素。而循环子序列就有点麻烦了,我当然从直观上知道它怎么从子序列延展而来,比如可以跨过0元素了。但在Cn的结构上,是没有严格的谁在后面的关系的,那这里的前后顺序保持性就要重新定义了。比如,它究竟能不能跨过超过一圈的范围呢?如0:10的循环序列,0, 4, 9, 3, 7,这样轮了接近两圈甚至更多地,能不能算循环子序列呢?

显然不行啊,要是这样可以,那岂不是随便一个子集的任意排列都可以说是循环子序列了,无非就是多转几圈的问题。接着我又想了很多办法来限定这一串元素所连起来经历的子串要不能超过一圈,即没有重复元素被跨过,在首尾相邻的子序列连通前,还应该有剩余元素才是。而这显然直接等价于这个给出的子串的相邻元素的环上距离和要小于序列长度。

虽然基本也成型了,但写起来非常繁琐,好不直观,可以说几乎与实际我想描述的循环子序列的直觉感觉毫无关系了。这一定不是好的数学模型,好的数学模型应该在直觉上和严谨逻辑上是相通一致的,而不是各说各话。

于是在起草本文时,我忽然意识到,我那定义的所谓循环子序列,其实是循环序列上的子序列,而不是循环序列上的循环子序列(倒是子串没法循环,但也是循环子序列的特例)!即我之前想象的子序列本身是有头有尾的一小段,而并不是真的能循环!所以我重新更新了脑子里关于循环子序列的想象,应该是从循环序列里随机抠下来一些元素,并直接按照原位置的上从任意起点开始的多次下一个关系带来的顺序,直接形成一个新的循环序列才对!对比子序列的定义,其要求索引从最小的开始递增,这里只不过是变为从任何起点都可以转着圈地找下一个,但不要超过1圈,按顺序走完就是了。所以其数量就是真子集的个数,每个真子集元素都有依照原序列的给定循环结构,就这么简单,和子序列的概念就对应上了。从数值特征上看,那就是你给的这个循环序列,在原序列上的有向距离的和,要是牌叠长度才行,即:

循环子序列:一个循环序列的子集元素构成的循环序列,其上所有相邻关系元素在原循环序列上的位置有向差值的和等于原循环序列的大小。

构造方法很简单,确定子集后,从原循环序列任意元素开始依次找下一个元素完成遍历,遇到第一个子集中的元素后再遇到就和前面的连起来,直到首尾再相连即得。可见,一个子集对应一个循环子序列,模式上和序列又高度一致了。

特别地,如果这个差值的和为n倍循环序列的大小,则称为n阶循环子序列。算上这些序列,那就是任何给定一个原牌叠的循环子排列,都能够找到一个n阶循环子序列与之对应了,就是要看n等于多少的造化了。而这个阶次本身也是序列的一个重要隐藏特征,又可以算个能算分布的数值特征来描述一个角度的混乱程度。

有一个简单的推论是,2元循环子序列的阶只能是1,是不可能出现2阶和以上的。

但有了循环子序列的概念,那和鸽尾洗牌有什么关系呢?我们下期接着说。

精彩抢先看!

视频1 移动洗牌找牌

视频2 数牌找牌

视频3 终极三重感应找牌

图片

我们是谁:

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

图片

图片

图片

扫描二维码

关注更多精彩

鸽尾洗牌的秘密(一)——回顾与定义

明明有bug的扑克魔术怎么还能骗到人?(五)  ——大效果前,小瑕疵后

2024阿里巴巴全球数学竞赛决赛中的深度学习背景题解析(二)——应用与计算数学部分第6题

完美洗牌的秘密(二十一)——milk shuffle的应用三(天天四条龙等)

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

图片

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值