2012-01-09 47 views
4

我的朋友提出这个问题给我;感觉就像在这里分享。缩分卡在数学

鉴于一副牌,我们将其分成2组,“他们交织”;让我们称这个操作为“拆分连接”。然后在生成的平台上重复相同的操作。

例如{1,2,3,4}变得{1,2} & {3,4}(分裂),我们得到{1,3,2,4}(加入)

此外,如果我们有一个奇数的卡,即,{1,2,3}我们可以像{1,2} & {3}(更大的半分割它第一)导致{ 1,3,2} (即n被分割为Ceil[n/2] & n-Ceil[n/2]

的问题,她问我是:

多少这样分割联接是需要得到原装甲板回来?

这让我疑惑:

如果甲板上有ñ卡,什么是多少分联接需要,如果:

  • ñ是什?
  • ñ是奇数?
  • Ñ是 '2' 的功率? [我发现,我们接下来需要的log(n)(基数为2)的分裂加入数...]
  • (随意探索不同的场景这样的。)

有一个简单的图案/式/概念相关ñ和分裂联接所需的数量?

我相信,这是数学探索,特别是因为它提供了Riffle[]方法好事。

+3

如何将拆分您的甲板上时,有奇数个项目? – Benoit 2012-01-09 12:33:49

+1

请写出适当的英文,并且不要用异常的收缩,表情符号和将所有“和”转换为&符号来清理问题。我们期待这里有专业的语气。 – BoltClock 2012-01-09 12:46:10

+1

@Benoit - 在这个问题中增加了1个策略,但如果你能找到更有趣的事情,也可以自由地采取相反的做法。 – fritz 2012-01-09 13:29:26

回答

1

老问题,我知道,但奇怪的没有一个人提出了一个实际的解决数学..

countrifflecards[deck_] := Module[{n = [email protected], ct, rifdeck}, 
     ct = 0; 
     rifdeck = 
     Riffle @@ 
      Partition[ # , Ceiling[ n/2], Ceiling[ n/2], {1, 1}, {} ] &; 
     NestWhile[(++ct; rifdeck[#]) &, deck, #2 != deck &,2 ]; ct] 

此处理的偶数和奇数的情况下:

countrifflecards[RandomSample[ Range[#], #]] & /@ Range[2, 52, 2] 

{1,2,4,3,6,10,12,4,8,18,6,11,20,18,28,如图5所示, 10,12,36, 12,20,14,12,23, 21,8}

countrifflecards[RandomSample[ Range[#], #]] & /@ Range[3, 53, 2] 

{2,4,3,6,10,12,4,8,18,6,11,20,18,28,5,10,12, 36,12, 20,14,12,23,21,8,52}​​

如果添加了一个卡到奇数情况下,附加卡都留在了底部,而不是改变你可以很容易地显示的顺序,因此奇数的结果只是n+1的结果。

ListPlot[{#, countrifflecards[RandomSample[ Range[#], #]]} & /@ 
     Range[2, 1000]] 

enter image description here

14

引述MathWorld

为n = 2,4的甲板,...返回到其原始顺序是1,2,4,3,6需要出混洗的号码, 10,12,4,8,18,6,11,...(斯隆的A002326),它只是2(mod n-1)的乘法级数。例如,由于2 ** 8 = 1(mod 51)(Golomb 1961),所以52张牌组成的牌组因此在8次洗牌后回到其原始状态。需要1,2,3,...的最少数量的卡2n洗牌后返回甲板的原始状态是1,2,4,3,16,5,64,9,37,6,...(Sloane's A114894)。

n奇数时的情况未得到解决。

请注意,该文章还包括一个Mathematica notebook,其功能可以探索洗牌。

+0

非常感谢这些指针。 将探讨不同的案例,看看我是否找到有趣的东西。 – fritz 2012-01-09 14:02:49

5

如果我们有一个奇数的卡n==2m-1,如果我们分裂卡,使得在各洗牌所述第一组包含m卡,第二组m-1卡,并且基团结合在一起,使得的没有两个卡相同的组最后彼此相邻,则所需的洗牌次数等于MultiplicativeOrder[2, n]

为了证明这一点,我们注意到,一个洗牌这是在k位置卡之后移动到位置2k0<=k<m2k-2m+1m<=k<2m-1,其中k是这样的:0<=k<2m-1。写模n==2m-1这意味着对于所有0<=k<n,新位置是Mod[2k, n]。因此,对于每张卡要返回到其原始位置,我们需要N洗牌,其中N是这样的,因为对于所有0<=k<n,因此NMultiplicativeOrder[2, n]的任何倍数。

请注意,由于对称性,如果我们以其他方式拆分卡座,结果将会完全相同,即第一组总是包含m-1卡和第二组卡m卡。我不知道如果你的替补会发生什么,也就是说,对于奇数洗牌,第一组包含m卡,并且用于即使洗牌m-1卡。

+0

这是美丽的(对称,我确实认为它不应该有所作为,但有时直觉可能会出错!)...在我的脑海中还有其他特殊情况...让我看看...!非常感谢... – fritz 2012-01-10 14:54:57