Algorithm 比赛中获胜球员的指数
Algorithm 比赛中获胜球员的指数,algorithm,recursion,number-theory,Algorithm,Recursion,Number Theory,N玩家玩游戏。它们的排列方式使它们形成一个规则的多边形。玩家编号从1到N。玩家按顺时针顺序依次投掷回飞棒。首先,玩家1通过多边形的中心投掷回飞棒。如果N为偶数,则回飞棒击中对方玩家,被击中的玩家退出游戏。如果N是奇数,则对方点没有玩家,因此回飞棒飞回投掷回飞棒的玩家并击中他,使他离开游戏。玩家离开后,游戏将以相同的方式与N-1玩家继续(即,他们再次进行常规(N-1)-gon)。最接近最后一个移动玩家的玩家现在轮到他了 游戏一直持续到只剩下一名玩家为止。获胜球员的索引是否有任何封闭形式的表达式,即
N
玩家玩游戏。它们的排列方式使它们形成一个规则的多边形。玩家编号从1
到N
。玩家按顺时针顺序依次投掷回飞棒。首先,玩家1
通过多边形的中心投掷回飞棒。如果N
为偶数,则回飞棒击中对方玩家,被击中的玩家退出游戏。如果N
是奇数,则对方点没有玩家,因此回飞棒飞回投掷回飞棒的玩家并击中他,使他离开游戏。玩家离开后,游戏将以相同的方式与N-1
玩家继续(即,他们再次进行常规(N-1)
-gon)。最接近最后一个移动玩家的玩家现在轮到他了
游戏一直持续到只剩下一名玩家为止。获胜球员的索引是否有任何封闭形式的表达式,即N
?或者任何快速(对数或更小)的方法来计算指数
如果f(N)
表示答案,那么我算出了一个简单的递归,即f(2n+1)=f(2n)+1
,因为在奇数情况下,玩家1
在第一步出局,然后玩家2
移动。但在这种情况下就没有了。谢谢你的帮助
前几个值:n-->f(n)
2-->1
3-->2
4-->4
5-->5
6-->1
7-->2
8-->3
9-->4
10-->5
11-->6
12-->8
13-->9
14-->11
15-->12
16-->14
另一个递归如下:
如果f(2n-1)>=n
,f(2n)=f(2n-1)+2(mod 2n)
。
否则,f(2n)=f(2n)+1(mod 2n)
如果你把每个索引的生存时间写下来作为一个排列,很容易看出这一点
将递归应用于零交叉点,我们发现第n个零交叉点位于4^(n+2)/3
有鉴于此,下面是找到第n个游戏赢家的算法:
k <- floor((log(3)+log(n))/log(4))+2
m <- 4^(k+2)/3
if n < 2m:
f(n) <- (n-m+1)%n
otherwise:
f(n) <- (n+2-m+(n-2*m)/2)%n
另一个递归:如果f(2n-1)>=n,f(2n)=f(2n-1)+2(mod 2n)。否则,f(2n)=f(2n)+1(模2n)。如果你把每个索引的生存时间写下来作为一个排列,很容易看出这一点。找到零交叉的表达式,你就有了一个闭合形式。我想这是可能的。我想把这个序列添加到斯隆的序列中。有我可以信任你的电子邮件地址吗?