nim游戏/阶梯nim游戏+SG函数/SG定理

引子

  考虑下面一个问题:
  给出N堆石子。A 和 B 轮流操作,A 先手。操作者在每一轮中必须取走一堆石子中的任意数量个石子(不能不取)。取完最后一个石子的人胜利。求谁胜。

SG函数

  对于每一堆石子,我们可设SG(i)=mex({SG(j)}),其中j为i的一种转移,而mex表示集合中最小没有出现过的自然数。设边界条件SG(0)=0。这样的话,SG(x)=x,且当SG(x)为0时,x为必败态P-position(即先手必败),否则为必胜态N-position(因为只有一堆)。
  那么对于多堆呢?难道我们要用SG(i)中的i去表示一种场面,也即由多堆石子构成的一个集合吗?这样转移起来显然复杂度堪忧。

SG定理

  这时我们就需要用到:Sprague-Grundy定理(SG定理):
  游戏和的SG函数等于各个游戏SG函数的Nim和。这样就可以将每一个子游戏分而治之,从而简化了问题。
  那么对于这个问题,SG(X)(X为一个集合)=SG(x1)^SG(x2)^SG(x3)^…^SG(xn)(xi∈X)。其实这个结论我以前就知道,只不过不会证明。
  但这个定理的证明却也不复杂,基本上就是按照两种position的证明来的。
  根据定义,证明一种判断position的性质的方法的正确性,只需证明三个命题: 1、这个判断将所有无法进行任何移动的局面(也就是terminal position)判为P-position;2、根据这个判断被判为N-position的局面一定可以移动到某个P-position;3、根据这个判断被判为P-position的局面无法移动到某个P-position。
  对于第一个命题,treminal position肯定是{0,0,0,…,0},那么异或和肯定也为0。
  对于第二个命题,N-position即为异或和不为0的状态,设它的异或和为S,那么若x为S在二进制下的最高位,则肯定有一堆石子的数量≥ 2 x (不然它那个x怎么来的),设这堆的数量为x1。又因为x1>S^x1,所以我们先把x1拎出来,使S变成两个子状态x1和S^x1,再将x1取剩S^x1,然后再合并为0。举例来说,若S为 ( 011011 ) 2 ,x1为 ( 010110 ) 2 ,则S^x1为 ( 001101 ) ,将x1取剩S^x1后,S则为 ( 000000 ) 2
  对于第三个命题,你取石子肯定会改变它的异或和,所以你没办法把异或和从0变成0。

nim游戏

  那么,nim游戏又是什么呢?
  Nim游戏是博弈论中最经典的模型,它又有着十分简单的规则和无比优美的结论
  Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG(可能不太严谨):1、有两名选手;2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动;3、对于游戏的任何一种可能的局面,合法的移动集合只取决于这个局面本身,不取决于轮到哪名选手操作、以前的任何操作、骰子的点数或者其它什么因素; 4、如果轮到某名选手移动,且这个局面的合法的移动集合为空(也就是说此时无法进行移动),则这名选手负。根据这个定义,很多日常的游戏并非ICG。例如象棋就不满足条件3,因为红方只能移动红子,黑方只能移动黑子,合法的移动集合取决于轮到哪名选手操作。

阶梯nim游戏

  阶梯nim游戏有一个经典的模型:给出N级阶梯,每级阶梯上有若干个石子,两人轮流操作。操作是将某一阶梯上的石子移任意数量个到下一级阶梯。先将所有石子移至第0层的人获胜。求先手是否必胜。
  这种问题的SG值其实就等于奇数层的石子数的异或和。即SG=SG(1)^SG(3)^SG(5)^…^SG(n)。SG=0先手必败,否则先手必胜。
  这是为什么呢?
  因为如果先手将偶数层的石子移到了奇数层,后手则可以将同等数量的石子从那个奇数层移到下一级偶数层(反正最低的第0层是偶数层)。这样,SG值并不会变化,所以相当于先手没有操作。而且假如后手有更优的走法,它不随着先手移,那么先手反而会将胜利让给后手。也就是说,先手这样操作,后手的利≥先手的利。
  那么,如果先手将奇数层的石子移到偶数层,即可类比成普通的取石子游戏:将某一堆石子取走若干个。因为我们总是可以从奇数层移到偶数层的,只要某个奇数层有石子;也就相当于在普通的取石子游戏中,我们总是可以取走石子的,只要某一堆还有石子。

例题

  我其实没有做过多少这种题。。。
【JZOJ4024】【佛山市选2015】石子游戏 这道题是SG函数,需要一点转化,初学者(比如博主)可能比较难想到。
【JZOJ4178】【NOI2015模拟YDC】游戏 这道题是阶梯nim,也需要一些转化。

猜你喜欢

转载自blog.csdn.net/qq_36551189/article/details/80658677