什么是SG?+ SG模板

日期:2019-07-24 10:10点击数:

首先,在PositionP位置定义第一个失败状态。
操作方法:反向转移
处于同一状态的两个不同位置相当于无
在ICG游戏中,游戏中的每种情况都可以表示为点数。
此外,如果存在情况i和情况j,并且j是i的后继(即,情况我可以转换为情境j),则使用从i到j的有向边,然后使用情境连接点代表。我和情况j。
接下来,您可以将整个游戏表示为有向无环图。根据ICG游戏定义,无法继续的情况是情况的结束,即情况P(第一个输家)。
在上图中,0度的所有点都可以标记为P点。
然后,根据ICG游戏的两个性质,所有点的引入可以颠倒为P或N.
对于可能发生游戏的情况x,请按如下方式定义sg的值:(1)如果当前情况x结束,则sg的值为0。
(2)如果当前情况x不是结论性的,则其值sg如下。sg(x)= mex{sg(y)|和x的后继者}。
Mex{a[i]}表示未出现在a中的最小非负整数。
例如,使用sg函数表示mex{0,1,2}= 3之前的图像,mex{1,2}= 0,mex{0,1,3}= 2,你。是P的顺序,sg(x)= 0。否则它是sg(x)0。
相同的sg值也满足N和P之间的转换率。对于情境x,其sg(x)0,必须存在以下情况y,sg(y)= 0。
对于情境x,其中sg(x)= 0,x的所有后续情况将是y,sg(y)0。
从前面的推理中,我们可以看到我们也可以描述可以用N和P-Position描述的游戏sg。
sg函数有一个非常方便的定理,称为sg定理。对于多个单独的游戏,X = x[1]。
n],每次我们只能改变一个人游戏的一种情况。
在这种情况下,整体情况中sg的值等于这些单独游戏中sg值的总和XOR。
首先,定义操作mex(minimalexcludant),这是应用于集合的操作。这表示不属于此集合的最小非负整数。
例如,mex{0,1,2,4}= 3,mex{2,3,5}= 0,mex{}= 0。
对于给定的有向非循环图,请为图的每个顶点定义Sprague-Grundy函数g,如下所示:g(x)= mex{g(y)|其中g(x)sg[x]。
示例:考虑石头问题。每次只有{1,3,4}个宝石可以有1堆n石头。你首先赢得了石头,那么每个数字的SG值是多少?
Sg[0]= 0,f[]={1,3,4},
当x = 1时,取1-f{1}个宝石,其余为{0},mex{sg[0]}={0},sg[1]= 1。
当x = 2时,取2-f{1}个宝石,{1},mex{sg[1]}={1},sg[2]= 0。
当x = 3时,3-f{1,3}个宝石,其余{2,0},mex{sg[2],sg[0]}={0,0},即sg[3]你可以参加= 1;
当x = 4时,取4-f{1,3,4}个宝石,剩余的{3,1,0},mex{sg[3],sg[1],sg[0]}={1,1,0},然后sg[4]= 2。
当x = 5时,5-f{1,3,4}个宝石,其余{4,2,1},mex{sg[4],sg[2],sg[1]}={20.1}然后sg[5]= 3;
是的
X012345678
Sg[x]010123201。
从1-n范围计算SG值。
f(存储可执行步骤的数量.f[0]表示可执行步骤的数量)
f[]需要从小到大排序
1
可选步骤的数量是从1到m的连续整数,可以直接取得。SG(x)= x%(m + 1)。
2
可选步骤数是可选步骤。SG(x)= x;
3
可选的步数是由GetSG()计算的一系列离散值。