自然数分家 - 威佐夫博弈和Beatty定理
PKU-1067是一个石子游戏,这其实是一个威佐夫博弈问题, 英文维基百科 也有详尽描述。
问题的大概描述是: 有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
如果两堆余下物品分别在下面图标中数目时:
是接下去先手会输的局面,我们称这种问题中的必败态为奇异局势(ak,bk)。
可以看到,a0=b0=0,ak是未在前面出现过的最小自然数,而bk=ak+k。
进一步分析可以发现:
任何自然数都包含在一个且仅有一个奇异局势中,
由于ak是未在前面出现过的最小自然数,所以有ak>ak−1。
bk=ak+k>ak−1+k>ak−1+k−1=bk−1>ak−1。
其中ak=⌊kω⌋, 其中ω2=ω+1,即ω=1.618…即所谓黄金分割数,而bk=⌊kψ⌋,其中ψ=ω+1。
实际上an和bn构成了一个Beatty序列。
Beatty定理
设a,b是正无理数且a1+b1=1
记P={⌊na⌋∣n为任意的正整数},Q={⌊nb⌋∣n为任意的正整数}
(⌊x⌋指的是不好过x的最大整数)
则P与Q是Z+的一个划分,即P∩Q为空集且P∪Q为正整数集合Z+。
即对于任意满足条件的无理数a,b, 数列⌊na⌋和⌊nb⌋实现了正整数集的完美分家。
三家分赵
王守恩在2019年10月询问 ,{a(n)}∪{b(n)}∪{c(n)}正好构成正整数集吗?为什么?
其中:
{a(n)}={1, 4, 07, 09, 12, 15, 16, 19, 22, 25, 27, 30, 32, 34, 37, 40, 43, 45, 47, 50, 52, 55, 58, 60, 63, 65,...}
{b(n)}={2, 5, 08, 11, 14, 18, 20, 23, 26, 29, 33, 36, 38, 41, 44, 48, 51, 54, 56, 59, 62, 66, 69, 72, 75, 77,...}
{c(n)}={3, 6, 10, 13, 17, 21, 24, 28, 31, 35, 39, 42, 46, 49, 53, 57, 61, 64, 67, 71, 74, 79, 82, 85, 89, 92,...}
a(n)=n+⌊n421⌋+⌊n441⌋
b(n)=n+⌊n421⌋+⌊n42⌋
c(n)=n+⌊n44⌋+⌊n42⌋
lsr314分析发现 ,
貌似只要t>0且t2,t+t1,t+t2,t1+t21都是无理数,那么
an=n+⌊tn⌋+⌊t2n⌋,bn=n+⌊tn⌋+⌊nt⌋,cn=n+⌊t2n⌋+⌊nt⌋,
⌊x⌋表示x的整数部分,那么每个正整数刚好在an,bn,cn中出现一次。本题中t=241。
群雄逐鹿
王守恩继续问, 还可以有 {a(n)}∪{b(n)}∪{c(n)}∪{d(n)}正好构成正整数集吗?
lsr314继续做出解答
如果t1,t2,…,tk都是正数,且任意两个数的比值都是无理数,
ai(n)=∑j=1k⌊titjn⌋,i=1,2,…k.
那么每个正整数在数列a1(n),…ak(n)中恰好出现一次。
自然数大分家 - Fibonacci矩阵
mathe在csdn的博客 中, 如下定义一个无限阶矩阵m:
矩阵第0行正好是Fibonacci数列,也就是 m0,0=1,m0,1=2,m0,2=3,m0,3=5,m0,4=8,…
矩阵第k行中第一个数字是前面k-1行中都没有出现的最小正整数, 所以
m1,0=4,而mk,1=2mk,0−k (这个关系对于第0行也成立), 比如m1,1=2×4−1=7。
而第k行后面的任意一个数的递推关系同第一行类似,是当前行前面两个数的和。
比如m1,2=m1,0+m1,1=11,…
于是我们可以得到如下的Fibonacci矩阵
14691214⋮2710152023⋮31116243237⋮51826395260⋮82942638497⋮134768102136157⋮2176110165220254⋮34123178267356411⋮55199288432576665⋮893224666999321076⋮144521754113115081741⋮………………⋱
我们可以神奇的发现,这个矩阵正好包含了所有的自然数,而且每个自然数只出现一次,它实现了正整数集更大的分家。
链接中还提出了如下一些问题:
问题1)
我们计算所有的mk+1,0−mk,0,我们可以得到如下序列:
32332...
证明或否定:所有的mk+1,0−mk,0必然是2或者3.
问题2)
我们在一张白纸上先写下
32
两个数
然后从这行数第一个数字开始查看,每看到一个3,在后面添加三个数332;每看到一个2,在后面添加两个数32,
比如第一次操作,由于第一个数是3,添加332,所以数列变成:
32332
第二次操作,由于第二个数是2,添加32,所以数列变成
3233232
第三次操作,由于第三个数是3,添加332,所以数列变成
3233232332
一直这样下去
证明或否定,这样得到的一个序列正好是(1)中由所有mk+1,0−mk,0顺序排成的序列.
这个方法给出了一种快速构造上面矩阵的方案。