尼姆是A.<一个href="//www.parkandroid.com/wiki/combinatorial-games-definition/" class="wiki_link" title="组合游戏" target="_blank">组合游戏,两名球员交替轮流从几堆中采取物体。唯一的规则是,每个玩家必须在轮到至少一个对象,但是它们可能会在一次转弯中取出多个对象,只要它们都来自同一堆。
nim是最着名的例子<一个href="//www.parkandroid.com/wiki/combinatorial-games-definition/" class="wiki_link" title="公正的比赛" target="_blank">公正的比赛在这款游戏中,两名玩家的行动始终相同,因此唯一的区别在于其中一名玩家先走。从某种意义上说,对于任何初始配置都已经找到了确切的策略,这个问题也完全解决了。
基本的尼姆一开始是两个玩家和几个玩家堆,每个包含几个对象.偶尔,堆积也被称为桩,并调用对象石头.
又必须至少占一块石头,但只要他们都来自同一个堆,它们可能需要多个石头。它被允许制作一个空洞,有效地从游戏中取出堆。当播放器无法移动时,游戏结束。当然,只要有一块石头,就可以拿到那块石头,从而可以移动。因此,如果没有石头左,则可以重新显示结束条件。
在普通的尼姆,输家是无法移动的玩家。根据组合博弈论的惯例,这被称为正常条件,正常的博弈论使最后一个参与者走一步棋取得胜利。在misere尼姆,无法移动的玩家获胜;这相当于玩家输掉最后一个石头。
考虑以下比赛的例子。最初有三个桩<年代p一个nclass="katex"> 石头分别。爱丽丝和鲍勃正在玩爱丽丝开始。
桩1 | 桩2 | 桩3. | 移动 |
起始位置 | |||
爱丽丝需要<年代p一个nclass="katex"> 1号堆中的石头 | |||
2.鲍勃需要<年代p一个nclass="katex"> 3号堆中的石头 | |||
爱丽丝需要<年代p一个nclass="katex"> 2号堆中的石头 | |||
4.鲍勃需要<年代p一个nclass="katex"> 来自桩的石头1 | |||
5.爱丽丝需要<年代p一个nclass="katex"> 来自桩3的石头 | |||
6.鲍勃需要<年代p一个nclass="katex"> 来自桩的石头2 | |||
7.爱丽丝需要<年代p一个nclass="katex"> 来自桩3的石头 | |||
鲍勃需要<年代p一个nclass="katex"> 来自桩3的石头 | |||
9.爱丽丝需要<年代p一个nclass="katex"> 来自桩的石头2 |
在正常情况下,爱丽丝赢了,因为爱丽丝拿走了最后一颗石头,因此鲍勃没有移动。在misère游戏中,爱丽丝会输,但在这里,爱丽丝会赢<年代p一个nclass="katex"> 从第3堆移到第7步的石头,留给Bob的是堆的大小<年代p一个nclass="katex"> 从而迫使Bob接受最后一个对象。
在上面的游戏中,爱丽丝已经发挥了完美的游戏,永远不要让鲍勃能够抢夺胜利。这可以推广到一般策略中。
的<年代trong>nim-sum 两个非负整数<年代p一个nclass="katex"> 和<年代p一个nclass="katex"> 定义如下。代表<年代p一个nclass="katex"> 和<年代p一个nclass="katex"> 作为<一个href="//www.parkandroid.com/wiki/binary/" class="wiki_link" title="两个不同的幂的和" target="_blank">两个不同的幂的和.把出现两次的2的幂消掉,然后把剩下的数加起来。nimsum也被计算机科学家称为XOR。
例如,<年代p一个nclass="katex"> 可以如下计算。我们有<年代p一个nclass="katex"> 和<年代p一个nclass="katex"> .我们取消<年代p一个nclass="katex"> 出现两次,然后把剩下的加起来<年代p一个nclass="katex"> ,给予<年代p一个nclass="katex"> .
可以证明<年代p一个nclass="katex"> 是<一个href="//www.parkandroid.com/wiki/associative/?wiki_title=associative" class="wiki_link new" title="联想" target="_blank" rel="nofollow">联想,从而制作若干数字的尼泊尔<年代p一个nclass="katex"> 定义的。
现在,给定一个普通的nim位置(桩的尺寸)<年代p一个nclass="katex"> ,如果玩家移动获胜<年代p一个nclass="katex"> ;确定一堆牌就能找到获胜的一步棋<年代p一个nclass="katex"> 和一些<年代p一个nclass="katex"> 这样<年代p一个nclass="katex"> ,从堆里拿出几块石头<年代p一个nclass="katex"> 这样<年代p一个nclass="katex"> 石头留下了。如果<年代p一个nclass="katex"> ,则玩家要移动就输了。
例如,在上面的游戏中<年代p一个nclass="katex"> ,我们看到了<年代p一个nclass="katex"> ,<年代p一个nclass="katex"> ,所以通过减少第一桩来移动(在这种情况下)赢得胜利<年代p一个nclass="katex"> 石头<年代p一个nclass="katex"> 石头。在那之后,<年代p一个nclass="katex"> ,因此理论上,玩家移动(在这种情况下鲍勃)失去,只要对手完全发挥着。
在misere尼姆,策略几乎是一样的。只要在建议搬家后,至少会有一堆大小<年代p一个nclass="katex"> 或者更大的,遵循正常的尼姆策略。不过,如果在建议搬家之后,就不会有堆大小了<年代p一个nclass="katex"> 或者更大,走不同的棋:
换句话说,正确的移动是留下奇数堆积<年代p一个nclass="katex"> .(在正常播放中,应该有一个偶数堆积的大小<年代p一个nclass="katex"> 相反,是为了让尼姆和为零。)
下面的证明是一般的尼姆的策略,由C. Bouton给出。
当且仅当堆大小的尼姆和不为零时,移动的玩家在普通尼姆中获胜。
我们将从简单的基本情况开始:如果堆的大小都是零,那么移动的玩家就输了,nimsum也为零。从现在开始,假设不是所有的堆大小都为零。
首先,我们观察到,对于所有非负整数,尼姆和服从下列几个性质<年代p一个nclass="katex">
- 结合性:<年代p一个nclass="katex">
- 换向:<年代p一个nclass="katex">
- 身份:<年代p一个nclass="katex">
- 自反:<年代p一个nclass="katex">
- 一次性计算多个数的nimsum是可能的:将所有数写成不同的2的幂的和,找出所有出现奇数次的2的幂,并对每个2的幂的一次出现求和。例如,<年代p一个nclass="katex"> .
假设桩的大小为<年代p一个nclass="katex"> 在搬家之前<年代p一个nclass="katex"> 后移动。假设移动是在桩上<年代p一个nclass="katex"> ;然后为所有人<年代p一个nclass="katex"> ,<年代p一个nclass="katex"> .让<年代p一个nclass="katex"> 和<年代p一个nclass="katex"> .我们有
现在我们将证明两个结果。
结果1:如果<年代p一个nclass="katex"> ,然后<年代p一个nclass="katex"> .如果原始大小的nimsum为零,那么移动中的玩家就输了(他们必须让nimsum非零)。
我们声称<年代p一个nclass="katex"> .的确,假设是这样
因此<年代p一个nclass="katex"> .但这与移动玩家在堆上移动的事实相矛盾<年代p一个nclass="katex"> ,因此必须使尺寸不同。
因此,以来<年代p一个nclass="katex"> , 我们有
结果2:如果<年代p一个nclass="katex"> ,可以制作<年代p一个nclass="katex"> .如果原始尺寸的nim总和不为零,则移动玩家正在获胜(它们可以使Nim-Sum Zero)。
考虑到2的最大功率,<年代p一个nclass="katex"> ,不大于<年代p一个nclass="katex"> .必须至少有一个<年代p一个nclass="katex"> 这样它也包含<年代p一个nclass="katex"> ,否则<年代p一个nclass="katex"> 不能出现在<年代p一个nclass="katex"> .现在,把<年代p一个nclass="katex"> .价值<年代p一个nclass="katex"> 减少<年代p一个nclass="katex"> ,最多增加<年代p一个nclass="katex"> (每个2的剩余次方组成<年代p一个nclass="katex"> 增加了价值;例如<年代p一个nclass="katex"> 和<年代p一个nclass="katex"> 给<年代p一个nclass="katex"> ),所以<年代p一个nclass="katex"> .此外,
这证明了这个定理。<年代p一个nclass="katex">
上面为misère Nim给出的策略是正确的:遵循正常的Nim策略,除非移动的玩家将使所有堆的大小小于<年代p一个nclass="katex"> 石头,移动的玩家使成堆的数量<年代p一个nclass="katex"> 完全是奇数而不是偶数。
唯一的变化是移动玩家需要减少单桩的尺寸<年代p一个nclass="katex"> 或更多到少于<年代p一个nclass="katex"> 其他桩的大小不超过<年代p一个nclass="katex">
假设这些桩是<年代p一个nclass="katex"> , 在哪里<年代p一个nclass="katex"> 和<年代p一个nclass="katex"> .然后<年代p一个nclass="katex"> .如果<年代p一个nclass="katex"> ,这意味着<年代p一个nclass="katex"> ,矛盾。所以移动的玩家赢了。显然,移动的玩家在第一堆中可能只有0或1个石头,因为它至少从一开始就有<年代p一个nclass="katex"> 石头。
一旦移动的球员决定移动,游戏的其余部分被迫;有一个奇数<年代p一个nclass="katex"> 大小的堆和对手开始时,对手也会拿走最后一颗石,从而输掉。
这证明了它的正确性。<年代p一个nclass="katex">
尼姆有许多变化。最着名的是正常的nim和蛋泡;在若干教科书中,正常的尼姆被认为是标准游戏,蛋清尼姆是变体,而在其他方面,这是另一个方式。由于NIM是一个非常基本的游戏,通过简单地添加一个额外的规则,可以获得许多可能的变体;此列表不打算涵盖所有可能性,只有众所周知的可能性。
一种变体被称为<年代trong>减法的游戏.这相当于Nim,但是所取的石头的数量被限制在一些正整数集合内:例如,第一个<年代p一个nclass="katex"> 数字或平方数。通常,只有一个堆播放。
通常,尼姆在堆中挤在一起的石头。一个变型将石头放在行中,以便在行的中间占据着行的石头分成两个。换句话说,玩家的举动是从堆中至少一块石头,并且可选择将堆分成两堆。<年代trong>Kayles用一堆堆放,允许分裂,但玩家可能最多需要<年代p一个nclass="katex"> 一次石头。<年代trong>道森的国际象棋是Kayles的另一种变体,玩家最多能拿多少<年代p一个nclass="katex"> 一段时间的石头;然而,只有一个石头只允许,如果它是堆中唯一的石头,而且服用两块石头不允许分裂。<年代trong>圆形的尼姆玩的时候,石头最初是排成圆圈的,所以第一次玩的时候,堆起来的石头不能被劈开;此外,一个人只能拿不超过<年代p一个nclass="katex"> 石头。
尼姆的概括是<年代trong>八进制游戏.玩家们轮流从一堆石头中取出几块石头,就像往常的尼姆一样;但是,控制何时以及如何获取和/或分割堆的规则被简洁地记录为一个八进制数。八进制游戏<年代p一个nclass="katex"> ,数字<年代p一个nclass="katex"> 指定卸下后允许剩余剩余数量<年代p一个nclass="katex"> 一堆石头。<年代p一个nclass="katex"> 是总和
作为一个例子,道森的国际象棋有八进制的游戏表示法<年代p一个nclass="katex"> :
正规的尼姆有八进制游戏符号<年代p一个nclass="katex"> .Kayles有八进制的游戏符号<年代p一个nclass="katex"> .
八进制游戏还有更多的变体。第一个数字,对应于去除<年代p一个nclass="katex"> 石头,可以镶嵌进去<年代p一个nclass="katex"> 表示将堆一分为二(不拿任何石头)是一种允许的移动。通过使用更高的基数,我们可以表达允许将堆分成3个或更多堆的游戏。
指数-<年代p一个nclass="katex"> 尼姆是一个尼姆的变体,其中允许玩家在单匝中从一个以上的桩中取石头。这可以与减法游戏结合,限制移除的石头总数或从桩中取出的石头数量。
Wythoff的游戏是指数的变体 -<年代p一个nclass="katex"> 尼姆,从受影响的所有桩中移除的石头数量必须是相同的。通常,Wythoff的游戏只有两堆。战略非常不同;解决了双桩游戏,涉及使用Beatty的序列<年代p一个nclass="katex"> 和<年代p一个nclass="katex"> .
格伦迪的比赛甚至更有不同的石头不能被采取。唯一允许的举动是将堆分成两个不同尺寸的桩。这仍将结束游戏,因为桩的数量将受到石头数量的限制,并且它不断增加。
不平衡的尼姆有一个额外的规则,即任意两个堆的大小可能不相等。没有对象的堆可能被计算为堆,也可能不被计算为堆;在前一个选项中,这使得结束位置不同,如<年代p一个nclass="katex"> 在哪里<年代p一个nclass="katex"> 是堆的数目。
更古怪的变体也是如此<年代trong>贪婪的尼姆在这种情况下,玩家只能从当前最大的一堆石头中取石头——如果有很多的话,任何这样的最大一堆石头都可以<年代trong>建筑尼姆在这里,选手们从排位开始<年代p一个nclass="katex"> 石头进入<年代p一个nclass="katex"> 桩在播放NIM游戏之前,因此在建筑阶段结束之前未知起始位置。
斯普拉格-格伦迪定理得到了更充分的发展<一个href="//www.parkandroid.com/wiki/sprague-grundy-theorem/" class="wiki_link" title="在这一页上" target="_blank">在这一页上.
Sprague-Grundy定理
公平博弈中的任何位置都相当于一定大小的尼姆堆。