前几日在知乎上看到这个问题 求助:用java写出算法:54张扑克,分成上下两等份有规律的洗牌,多少次可以返回初始值?, 感觉所有回答都不够简洁优雅,于是在网上搜索资料,找到这篇论文,该论文证明了如果第一堆在上,那么洗牌次数为2(mod 2n - 1), 也就是说洗牌次数等于使得 2k≡1(mod2n−1) 成立的k。根据群论,因为2与2n - 1互素,所以
洗牌问题——偶数张扑克牌,分成两等份, 洗牌多少次回到原来顺序?
洗牌算法与群论:偶数扑克牌如何回到原始顺序
最新推荐文章于 2025-01-03 18:09:05 发布
本文探讨了一个洗牌问题,即如何在将偶数张扑克牌分为两等份后,通过特定洗牌方式使其回到初始顺序。根据论文,当第一堆在上时,洗牌次数为2的幂次模2n - 1的逆元,而当第二堆在上时,次数为2的幂次模2n + 1的逆元。通过群论中的性质,证明了洗牌次数存在且具有最小值。作者给出了Python算法实现,并指出该算法的时间复杂度为θ(洗牌次数)。

最低0.47元/天 解锁文章
1567

被折叠的 条评论
为什么被折叠?



