Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 比赛中获胜球员的指数_Algorithm_Recursion_Number Theory - Fatal编程技术网

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)。如果你把每个索引的生存时间写下来作为一个排列,很容易看出这一点。找到零交叉的表达式,你就有了一个闭合形式。我想这是可能的。我想把这个序列添加到斯隆的序列中。有我可以信任你的电子邮件地址吗?