阶梯博弈
1.使用SG函数
首先假设一个局面的 \(SG\) 函数值是所有奇数层石子数异或起来。
这样只需要证明一个状态是所有后继的 \(mex\),换句话说证明两点:一个状态不可达它自己;一个状态的后继的 \(SG\) 函数值包含所有比它小的自然数。
一个状态肯定不可达它自己,因为操作是减少一堆的石子数,或增加一堆的石子数,而一些数异或起来,改变其中的一个值不可能不改变异或和。
一个状态肯定可以通过减少一堆的石子数可让 \(SG\) 函数达到所有比自己 \(SG\) 函数值小的自然数。这个就是说,对于序列 \(A\),设 \(S=\bigoplus_{i=1}^{n} A_i\) 若一个数 \(t\) 满足 \(S\bigoplus t<S\),一定存在一个 \(A_i\) 满足 \(A_i\bigoplus t<A_i\)。
可以考虑如果 \(S\bigoplus t<S\),一定存在一个二进制位,\(t\) 中和 \(S\) 中都为 \(1\),并且由于其在 \(S\) 中为 \(1\) 所以一定存在一个 \(A_i\) 此位为 \(1\)。找到这样的二进制位中最高的,那么 \(t\) 在此位之上都是 \(0\)。于是直接找此位为 \(1\) 的 \(A_i\) 异或上 \(t\) 即可。
所以这个 \(SG\) 函数符合定义,自然有只有异或和为 \(0\) 的时候先手必胜,否则先手必败。
2.不使用SG函数
设当前是必胜态,先手一定能通过移动奇数层的石子玩 Nim 游戏达到必败态。设当前是必败态,如果挪动偶数层的石子,另一方可以把挪动的石子挪动会偶数层,故而操作之后下一次轮到我的还是一个必败态。
不难发现未说明判定方法就使用了“必胜态”的定义,所以逻辑也许是“如果有这么一种状态,它必然胜利,那么会怎么怎么样”,但是这似乎并不显然。

浙公网安备 33010602011771号