300000
English | Français | فارسی | 中文 | Українська | Azerbaijani | ខ្មែរ | Tiếng Việt | Bahasa Melayu | Deutsch如何玩i糖果游戏
- 每位玩家轮流从棋盘上取糖果。
- 将被移走的糖果取决于所选糖果处在的象限
- 第四象限从所选糖果的上方和左侧移除所有糖果,第一象限从上方和右侧移除,第三象限移除下方和左侧,第二象限移除所选糖果的下方和右侧。
如何获胜:
- 移走最后糖果的玩家赢得游戏。
轮到玩家1
总游戏数:257964
玩家获胜:34917
电脑获胜:223067
Access to 'Some food for thought' (SFFT) for the iChomp game can be purchased in the online shop
玩家获胜:34917
电脑获胜:223067
Access to 'Some food for thought' (SFFT) for the iChomp game can be purchased in the online shop
您将在本教程中学习的算法能够以最佳方式进行大量的游戏,因此值得您花费一些时间来学习。教程的关键是著名的Sprague-Grundy理论。如果你想在没有学习Sprague-Grundy理论的情况下,获得玩i糖果游戏的提示,那么请向下滚动到相应的部分。在详细介绍之前,我们需要明确几个术语。
-
:组合游戏:双人游戏,信息完全,最终达到不能移动状态时可以分出胜负结果的游戏。
公正游戏:组合游戏的一种,其允许的移动仅取决于位置,而与轮到哪个玩家无关。此外,收益是对称的。 换句话说,玩家1和玩家2之间的唯一区别是玩家1先行。例如:糖果游戏。
派别游戏:非公正游戏。例如:国际象棋。
一般玩法:走最后一步的玩家胜利,也就是说,无路可走的玩家失败,无利可获的玩家失败。
困境玩法:走最后一步的玩家失败。
我们的游戏网站上引入的游戏使用一个象限和困境玩法。
- 我们的游戏采用困境玩法,因为拿走最后一根火柴的玩家失败。
- The Chomp game as it's played on our game page uses misere play, since the player who takes the last candy loses.
- 因为一般玩法意味着拿走最后一块瓷砖的玩家获胜。因此,先手玩家可以直接拿走左上角的最后一块瓷砖。
- 在i糖果游戏中,拿走最后一块瓷砖的玩家获胜,所以该游戏是一般玩法。
-
从一开始就把左上角的(有毒)糖果位置取消,那么拿到最后一颗糖果的玩家就是一般玩法的获胜者。在困境玩法中,保留左上角的有毒糖果,最后拿有毒糖果的玩家其实就是一般玩法中失败的一方。
因此,保留左上角的糖果并采用困境玩法与不保留糖果并采用一般玩法得到的游戏结果是一样的。
- :i糖果游戏旨在成为四个Chomp游戏的结合,四个游戏同时进行,并且均遵循一般玩法。这种结合让i糖果游戏在两个维度上得到美的提升,具体内容将在下文描述。此外,如果使用Sprague-Grundy理论,i糖果游戏并不比糖果游戏难,具体内容也将在下文进行描述。
-
The class of games that it applies to are impartial combinatorial games. This theory does two things for us:
- :它适用的游戏类别是__公正组合游戏___。 这个理论为我们做了两件事:
- 它为我们提供了一种算法,来确定每场比赛(即每个位置)的一个数字(我们将其称为SG值),当且仅当它是一个致败位置时,该数字为0(在关于组合博弈论的文献中称为'P-位','P'表示上一玩家取得了胜利)。这意味着如果这个SG值是1,2,3 ......那么这就是制胜位置(在文献中称为'N'位置)。在这种情况下,无论哪位玩家,如果他在以最佳方式进行比赛,只要采取下一个步骤就可以取得胜利。
- SG理论的第二个目的是描述如何赢得由同时进行的几个位置组成的游戏。这种结合而成的游戏中的移动是通过在组合的任何一个位置中进行移动来完成的。
- 玩家需要知道每个组合位置的SG值。为了了解每个组合位置的SG值,玩家需要知道任何一个组合位置中的每次移动之后的SG值。这是要以最佳方式进行比赛所必需的。
- 例如:在尼姆博弈中,有一行两行或者更多行火柴。如果我们知道每一行的SG值,那么SG理论就是告诉我们如何通过从任意一行中取出适当数量的火柴来以最佳的方式完成这个游戏。
-
i糖果游戏是由Caribou Contests设计并在其网页上运营的糖果游戏的新版本。i糖果游戏中的'i'代表'各向同性',即所有方向都被平等对待。
在普通的糖果游戏中,取走一颗糖果的同时就移走了它东面和南面的所有糖果。所以东面和南面有特别的作用。糖果
在i糖果游戏中,根据取走的糖果中离中心位置最近的糖果的位置来决定移走另外哪些方向的糖果。比如,如果离中心位置最近的糖果在中心位置的西北部,那么取走的糖果西面和北面的糖果都会被移走。
取消人为规定通常都会让游戏在数学上变得更美,比如取消东面和南面有特殊作用这一规则。
i糖果游戏还从另一个角度对糖果游戏进行了美的提升。
在糖果游戏中,左上角的糖果跟其他糖果是不同的。如果题板上只剩左上角的这一颗糖果,那么游戏就结束了。如果还有其他糖果可以取走,那游戏继续。玩家如果在没有左上角的糖果的情况下开始游戏,那么所有的糖果就都相同,没有毒糖果。但这本身也是一个人为规定,因为它偏偏规定没有左上角的糖果而不是没有其他糖果。
在i糖果游戏中,所有的糖果一开始就都在而且都是相同的。取走任意一颗糖果都被不会直接导致游戏结束。
这儿出现了一些问题:
-
答案是否定的。举例来说,尼姆博弈在只有一行火柴的时候就很简单。在一般玩法下,玩家可以直接取走所有火柴取得胜利。在困境玩法下,玩家可以只留下一根火柴取得胜利。但是,当把这样只有一行的尼姆博弈结合在一起形成多行的尼姆博弈,它就不再那么容易了。
糖果游戏也是如此,一般玩法下,单独的没有毒糖果的糖果游戏是很简单的,玩家可以直接取走所有糖果取得胜利。但是4个这样的糖果游戏结合起来就不容易了。
- i糖果游戏在数学上比糖果游戏更有美感,因为它既没有把东面和南面特殊化,也没有让某一颗糖果区别于其他糖果。为了获得数学上的美感,i糖果游戏好像比糖果游戏困难,但是SG理论可以帮助解决。知道一定尺寸的糖果游戏的所有位置的SG值就足以轻易地算出4倍于该尺寸的i糖果游戏的所有位置的SG值,也就可以用最佳方式去玩4倍尺寸的i糖果游戏。
-
答案是否定的。举例来说,尼姆博弈在只有一行火柴的时候就很简单。在一般玩法下,玩家可以直接取走所有火柴取得胜利。在困境玩法下,玩家可以只留下一根火柴取得胜利。但是,当把这样只有一行的尼姆博弈结合在一起形成多行的尼姆博弈,它就不再那么容易了。
在SG理论中有一个称为XOR的数学运算。如果你对SOR运算不熟悉的话,以下部分将对你有所帮助。
-
Or,或简称XOR,是对二进制数据执行的逻辑运算。使用二进制数据,我们可以使用两个值之一:真(= 1)或假(= 0)。 两个二进制值的XOR运算通过下表定义。
a b a XOR b 1 1 0 1 0 1 0 1 1 0 0 0
虽然对1(真)或0(假)这两个值进行XOR运算很简单,但是我们的游戏需要我们能对两个数字进行XOR运算。这也是可以做到的,不过在此之前需要加入一个新的步骤。
第一步就是要把数字转换成二进制的,比如说,把基数10转换成基数2。
-
以下算法就是用来把基数10中的数字n转换到基数2的。(提示:20 = 1):
- 求2的最高指数p,使2p <= n。
- 记录1并从n减去2p。
- 如果p = 0则停止,否则从p中减去1并继续。
- 如果2p > n则记录0,否则从n减去2p并记录1。
- 回到第3步。
根据这个算法得到的一系列1和0,就是数字n在二进制的表达法。例子如下:
把数字13转换为二进制。第一步,找到小于等于13的2的最高指数,也就是2^3, 或者说 8。第二步,记下一个1,并用13减去8,由此得到5。接下来,计算 2^(3 - 1) = 2^2 = 4。因为4 <= 5,所以记下一个1,然后用5减去4,得到1。下一个更小的2的指数是2^1 = 2。 2 > 1,所以记下一个0。下一个2的指数是2^0 = 1,等于此时的数字n,1,所以我们记下1,并用1减去1,得到0。
在把两个数字都转换成二进制之后,就可以对这两个数字的二进制表达法使用XOR算法了。得到的XOR值的二进制结果可以根据需要转换回十进制。例子如下:
计算6和13的XOR值。6和10的二进制表达法分别是 6 = 110, 13 = 1101。首先我们在较小的数字左边开头加上零,使两个数字的位数一致,也就是 6 = 0110。然后我们就可以把它们排序,并对每个数字进行XOR运算:
0110 XOR 1101 ------ 1011
有,6 XOR 13 = 1011 (二进制) = 1 x 2^3+0 x 2^2+1 x 2^1+1 x 2^0 = 8+2+1 = 11 (十进制)。
接下来有几个问题,用以检验我们对XOR算法的理解。
- 对任意数字m,有m XOR m = 0,因为0 XOR 0 = 0, 1 XOR 1 = 0。
- 是的,因为1 XOR 0 = 0 XOR 1 (=1)。
- 0 XOR m = m因为0 XOR 0 = 0 , 0 XOR 1 = 1。
- 如果m中的一个数字和0进行XOR运算,那么这个数字不变(因为 0 XOR 0 = 0 ,1 XOR 0 = 1)。如果m中的一个数字和1进行XOR运算,那么这个数字就会变(因为0 XOR 1 = 1 and 1 XOR 1 = 0)。所以进行XOR n运算,和n中的1对应的数字全都会改变。
-
以下算法就是用来把基数10中的数字n转换到基数2的。(提示:20 = 1):
-
下面的算法可以算出任何公正组合游戏中的任意位置P的SG值。我们通过糖果游戏来进行说明。
- 每一个致败位置的SG值都是0。在糖果游戏中,西北角的糖果是唯一一个没有下一步的位置,所以它是一个SG值为0的致败位置。
- 我们需要算出从位置P通过一步可以到达的所有位置的SG值。所以,若位置P有n个糖果,则有n-1种可能:除了西北角的糖果,所有的糖果都可以取走并同时移走它东面和南面的糖果。
- 位置P的SG值是除开n-1个一步能到的SG值后的最小非负数。
这个算法是循环的,因为为了计算位置P的值,我们需要知道从位置P通过一步可以到达的所有位置的SG值。但它依然有用,因为需要计算的SG值与糖果更少的小一点的位置有关,而可能的最小位置的SG值是已知的。
- 当你选中一个糖果的时候,它和其他会被移走的糖果会高亮显示。当你点击了选中的糖果,这个糖果上的数字就是一般玩法(不是困境玩法)下,这个象限的SG值。你可以在‘SG值十进制’中去找这个数字:在这个象限旁边会有这个象限没有显示的数字中最小的一个。
如何加快SG值的计算:
因为许多不同的位置可以通过一步走到一个相同的位置,而且在计算更大的位置时一直重复出现,如果每次都重新计算会是对时间和精力的浪费。因此,只要位置P的SG值计算好了以后就应该被储存起来。
如果想要计算达到一定尺寸的所有位置的SG值,以下方法会很有效。首先唯一的只有一个糖果的位置(在西北角)SG值是0。接着用上面的方法来计算有两个糖果的位置的SG值,接着是有三个糖果的,等等。
-
i糖果游戏由4个糖果游戏构成,每一个占一个象限。
- 首先我们要用‘困境玩法’得规则来算出这四个糖果游戏所有位置的SG值。空象限不是糖果游戏的位置,所以我们规定它的值为-1。
- 然后给每个值加1。
- 算出由此得到的四个数字的二进制表达法。
- 然后算出4个二进制值的XOR值,得到该位置的SG值(二进制)。如果这个值是零,它就是一个致败位置,否则就是制胜位置。
-
加1是为了从‘困境玩法’下的SG值中获得‘一般玩法’下的糖果游戏位置的SG值。原理是下面这个定理。
定理:
--------
在‘一般玩法’下(也就是不常用的糖果游戏玩法--拿走走后一个糖果的玩家获胜)要获得糖果游戏位置的SG值,就需要在‘困境玩法’下(常用的糖果游戏玩法--拿走最后一个糖果的玩家失败)的相同位置的SG值上加1。
-
详细的归纳法证明:
基础情况(1个糖果):
-------------------
简体在“一般玩法”下,没有糖果的空题板是致败位置,因此SG值为零。 此外,在“一般玩法”下,有一个糖果(在左上角)的题板唯一可能的步骤是移除该糖果,产生SG值为0的位置。 因此,在“一般玩法”下,不能通过一个步骤就达到的最小非负SG值是1,所以在“一般玩法”下具有一个糖果的位置的SG值就是1。
在'困境玩法'下,有一个糖果的位置是SG值为0的致败位置。
因此,对1个糖果的位置,“一般玩法”下的SG值比“困境玩法”的SG值大1。
归纳步骤
---------------
归纳假设(n个糖果):
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
我们假设存在一个数字n,使对于> = 1且<= n的所有位置,“一般玩法”下的SG值比“困境玩法”下的SG值大1。 归纳假设(n+1个糖果):
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
我们将证明所有有n + 1个糖果的位置也是如此。
归纳步骤(n个糖果 - > n + 1个糖果):
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
“一般玩法”和“困境玩法”在任何位置来说都允许相同的步骤,除了'一般玩法'还允许通过拿走左上角的糖果来移除所有的糖果。
如果位置有n + 1个糖果,那么采取一个步骤产生的位置最多有n个糖果,我们可以在这个位置使用归纳假设:
因此,“一般玩法”下可能的SG值列表是通过给“困境玩法”下可能的SG值列表中每个值增加1得到的,另外还要加上直接取走所有糖果的值0。
因此,在“一般玩法”下无法获得的最小非负数比在“困境玩法”下无法获得的最小非负数大1。 换句话说,对于自身有n + 1个糖果的位置,“一般玩法”下的SG值比“困境玩法”下的SG值大1。 ∎(证明完成。)
-
详细的归纳法证明:
-
目的是进行移动,使得到的位置SG值为零。 无论移动的步骤是什么,都必须在4个象限之一。 这意味着进行移动的位置的SG值和其他3个未改变的象限的SG值通过XOR算法之后必须得到0。 当且仅当其他3个SG值通过XOR算法之后得到的值刚好是在移动后的新象限的SG值时才会出现这种情况(有关证明,请参见下文)。 因此游戏程序如下:
- (simple) Case: Two of the 4 quadrants have the same SG-value. Then XOR of these two equal values will give zero so both quadrants are to be ignored.
- 如果另外两个象限的SG值相等,则整个位置的SG值为零,该位置为致败位置。 然后从任何象限中移除一个糖果以拖延时间并让对手更容易因犯错而不能以最佳方式进行游戏。
- 如果其他两个象限的SG值不相等,则选择SG值较大的象限。 下一步是在该象限单击有另一个象限的SG值的糖果。 结果是四个象限,两两成对,各有相等得SG值,总XOR值为零,也就是一个失败位置。
- (普通)案例:
- 计算i糖果游戏的4个象限的SG值,假定它们分别是w,x,y,z(每个都是糖果游戏对应象限的SG值加1)然后将它们转换为二进制。
- 从这四个数字中找到一个最左边的位置,在这个位置上只有奇数个1。 例如,如果这4个数字是
w = 11011
那么最靠左的有1的位置是第5个位置(从右边开始计算位置)。 w和y在那里有1,即 两个数字(w和y)在那里有1。 两个是偶数,因此我们需要忽略这个位置。 下一个位置是第四个位置,也是从右侧算起。 第四个位置也是偶数个数字在那里有1(w和x)。 我们需要再次忽略这个位置。 第3个位置有3个数字有1(x,y,z)。 3是奇数,所以我们选择这3个数中的任意一个,例如,y = 10100。
x = 1101
y = 10100
z = 100- 如果在所有位置都有偶数个1,那么所有4个数字的XOR值都为零,这就是一个致败位置。 例如
w' = 11011
每个位置的有1的数字都是偶数个。 这4个数字的XOR值为零,这是一个致败位置。 在这种情况下,从任何象限中移除一个糖果以拖延时间并让对手更容易因犯错而不能以最佳方式进行游戏。
x'= 1011
y' = 10110
z' = 110 - 如果至少有一个位置有奇数个1,那么我们找到这个数字,如上面的y(不是y')。
- 我们对其他3个数字进行XOR算法,在本例中就是,w XOR x XOR z = 11011 XOR 1101 XOR 100 = 10011。 这个值总是小于我们选择的数字,这里y = 10100(参见下面的证明)。
- 在它的值被选了的象限中,本例中为y,我们进行走一步使它的SG值等于其他3个值的XOR值,本例中为10011。
- 要确定取走哪个糖果,有两种方式,要么将10011转换为十进制(= 1 x 1 + 1 x 2 + 0 x 4 + 0 x 8 + 1 x 16 = 19),然后点击有19的图块,要么我们以二进制计算10100 - 10011 = 1并将其转换为十进制(= 1),就知道要取走的糖果的值比y(= 20)的值小1。 取走编号为19的糖果。
-
请回忆有关如前所示的XOR算法的属性,以回答以下问题。
-
通过使用之前学到的XOR规则,我们得到了
y XOR u
= y XOR w XOR x XOR y XOR z
= y XOR y XOR w XOR x XOR z
= 0 XOR w XOR x XOR z
= w XOR x XOR z.
-
新的XOR值将是
(y XOR u) XOR w XOR x XOR z
= (w XOR x XOR z) XOR (w XOR x XOR z)
= 0
因为任何数字m的m XOR m = 0。
这意味着整个题板的新SG值将为零,因此这将是一个致败位置。
-
根据定义:当且仅当存在能产生SG值为0,1,...,(y-1)的位置的步骤时,才会存在SG值为y的位置。 因此,如果y>(y XOR u),则必须存在一个步骤,使SG值(y XOR u)
还有待回答的是:-
提示:
之前,我们学习XOR算法的属性时,已经了解到:XOR u可以把u中的1全都变为0。
如果u!= 0,那么u包含着2的最大的幂,假定该数为2p。 2的幂必定出现4个SG值中的奇数中,所以至少有一个,假定是y。
这意味着,当计算y XOR u时,y中的这个1被u中相应的1翻转为0。 y中可能还有其他二进制数字位于此1的右侧会被翻转。 如果y中此1右侧的数字为零且u中该1右侧的数字为1,则会出现y - (y XOR u)的最大可能值。 在那种情况下,u = 111..111将y = * 100..00(其中*代表任意位数)改为y XOR u = * 011..11。 他们的区别是:
y − (y XOR u)
= 2p − (2p−1 + 2p−2+ ... +20)
= 2p − (2p−1 + 2p−2+ ... +20)× (2-1)/(2-1)
= 2p − (2p−1)/(2-1)
= 1.
这意味着y至少比(y XOR u)大1。 ∎
-
通过使用之前学到的XOR规则,我们得到了
-
首先,选择'难度:困难',以保证电脑采取最佳方式。 如果你仍然获胜,那么你最佳地完成了每一步。
每个象限的SG值显示在十进制和二进制中。 确认此数字是象限中未显示的最小值。
下面显示了称为u的4个SG值的XOR值。 如果两个1位于相同位置,只需将4个SG值中的任意一对1更改为0,即可验证u的值。 然后将剩余的1放入一个二进制数并将其转换为十进制。
按如上所述进行游戏:
- 找到4个SG值中的一个,例如y,它在与u最左边的1对应的位置应该有1。
- 以二进制形式计算y XOR u,然后将其转换为十进制。
- 在y象限中单击有y XOR u的糖果。
- 以这种方式进行游戏直到获胜。
- 再次开始游戏,但这次随机走第一步。 除非你很幸运,无意地走了制胜招,否则即使你尽力以最佳方式进行比赛,你也无法取得胜利。
上述所有说明都默认玩家知道4个象限的SG值,也就是说,他知道在每次可能的操作后每个象限的SG值。
-
为了计算一个位置的SG值,需要知道从该位置一步之内可以达到的所有位置的SG值。 这是一个循环的过程。 因此,我们需要糖果数最少的位置开始,逐步展开计算。
-
只有1个糖果(在左上角)是一个致败位置,因此SG值为0。
有2个糖果(在顶行或左列),唯一可能的步骤是移走一个糖果,以保持SG值0的上述位置。 因此,通过一个步骤无法实现的最小非负SG值是1,所以有2个糖果的位置的SG值是1。
在顶行中有3个糖果,玩家可以移走一个或两个糖果,并获得SG值1和0,因此SG值为2。
同样,顶行中有n个糖果的位置的SG值为n-1。
让我们考虑3个糖果的情况,顶行2个,最左列2个。 我们只能移走一个糖果,得到SG值为1而不是0,因此无法获得的最小SG值是0就是是该位置的SG值。 这是一个致败位置。
Can you find the SG-value of a position with m+n-1 tiles of which n are in the top row and m tiles are in the left column?
- 玩家只能从顶行或左列中取走糖果。 因此,SG值与有两个象限时相同,一个在顶行中具有n个糖果,一个在左列中有m个糖果。 所以,SG值是(m-1)XOR(n-1)。 这与只有两排并且是‘一般玩法’的尼姆博弈是一样的,这种情况下玩家只能用一步移走某一行。
-
这些位置的公式更复杂。 据我们所知,目前没有发表过相关公式。 你可以尝试证明糖果较少的位置的公式。
设n和m为第一行和第二行的糖果数。
如果n是偶数,那么
k = (n-2)/2
如果m是偶数,那么
a = m/2
SG值= 2*k+a+1
否则(m是奇数)
a = (m-1)/2
如果 a <= (k/2) ,那么 SG值 = 2*k-a
否则 SG值 = 3*(k-a)
否则(n是奇数)
k = (n-1)/2
如果m是偶数,那么
a = m/2
如果a <= (k/2) ,那么 SG值 = 2*k-a
否则 SG值 = 3*(k-a)
否则(m是奇数)
a = (m-1)/2
SG值 = 2*k+a+1
- 选择最小的题板高度,使象限中只有两行糖果。在应用上述公式之后,你应该发现得到的SG值比‘SG值十进制’下面显示的值小1:因为这些公式是用于‘困境玩法’的,而i糖果游戏用的是‘一般玩法’。
-
只有1个糖果(在左上角)是一个致败位置,因此SG值为0。
-
首先,我们有一个结论:糖果游戏的规则不区别东西两个方向。
- 因为东和南两个方向是镜面对称的,所以它们的SG值是一样的。
- 两个象限都可以忽略。为什么?两个象限在困境玩法下具有相同的SG值,并且在一般玩法下加1后也具有相同的SG值。这两个相等值的XOR值为零。因此,两个象限对整个题板位置的SG值没有影响。
-
玩家应该采取一个能使四个象限的SG值两两相等且镜像对称的步骤,假定它们的SG值为A和A,以及B和B。这样,4个象限的组合的SG值是A XOR A XOR B XOR B = 0 XOR 0 = 0或(A XOR B)XOR(A XOR B)= 0,该值总是0。玩家就创造了致败位置。
同样地,玩家不应该采取这样一个步骤:它使两个象限对称、另外两个的可以由对手通过一个步另一个变成相同的位置。这将给对手机会创造致败位置。
-
这里有一些问题,你可以测试你对糖果游戏,i糖果游戏和SG理论的理解。
- 是的。如果一个位置的SG值为零,那么它就是一个致败位置(因为没有步骤能使其为零,因此不存在制胜招,因此它是一个致败位置)。如果SG值大于零,则这意味着存在一个步骤使下一位置的SG值为零,因此存在制胜招。
- 不是。要玩糖果游戏,我们需要找到能创造致败位置的步骤。?如果不存在这样的步骤那么这个位置就是一个致败位置,在这里可以采取任意步骤。?但是,如果存在这样的步骤,玩家就可以停止寻找了。不需要SG值。
- 只有在玩像i糖果游戏这样的几个糖果游戏的就结合游戏时才需要SG值。
-
要玩糖果游戏,我们需要找到能创造致败位置的步骤。如果不存在这样的步骤那么这个位置就是一个致败位置,在这里可以采取任意步骤。但是,如果存在这样的步骤,玩家就可以停止寻找了。
确定一个位置的SG值通常比找制胜招更难。为了找到SG值,总是必须搜索所有步骤以找到所得位置的所有SG值并确定通过一个步骤无法得到的最小非负值。这个就是该位置的SG值
例如,在我们的(Caribou)计算中,我们能够确定最多可以有93个糖果的题板的所有致败位置(以及制胜位置)。通过可比较的计算工作,我们能够计算出最多82个糖果的所有糖果游戏的位置的SG值。
在此意义上,确定SG值在计算上比确定制胜招更难。
-
在尼姆博弈中,一排火柴的SG值就是火柴的数量。(请通过应用上述注释来确认如何在尼姆博弈中计算一排火柴的SG值。)火柴排数多的尼姆博弈复杂的地方仅仅在于要用XOR算法计算不同排的SG值 ,来得到所有排结合在一起后SG值。
在糖果游戏中,获取一个位置的SG值(一个象限中)的计算成本很高。在i糖果游戏中,一旦知道了4个象限的SG值,这些值也需要进行XOR计算,但这比找到一个象限的SG值要容易得多。
为了最佳地进行糖果游戏,不需要知道一个位置的SG值,知道制胜招就足够了,但如上所示,它们的差异并不大。
所以答案是否定的,与糖果游戏相比,以最佳方式玩i糖果游戏并不困难。
- 可以。某位置的SG值是一个步骤不能生成的最小值。
-
可以。可以通过增加题板尺寸,然后单击“显示移动的SG值”来查看例子。例如,该位置
###
##
#
有3个获胜动作,全部都会创建SG值为0的位置。我们甚至找到了一个有7个获胜招的位置:
+ 10 6 15 2 20 21 14 22 11 0 23 7 26 13 7 11 9 14 0 19 5 17 11 14 18 0 24 23 8 3 19 2 0 20 11 4 0 5 1 8 0 0 4 23 25 24
关注或订阅更新: