Note - 博弈论
巴巴博弈!
以下的“必胜”“必败”均指当前局面下先手必胜或必败。
Nim 游戏
应该是最基础和经典的博弈论。
为防止不知道 Nim 游戏,把 Nim 游戏的规则放在这:
地上有 \(n\) 堆石子,每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。每次只能从一堆里取。最后没石子可取的人就输了。假如甲是先手,且告诉你这 \(n\) 堆石子的数量。判断是否存在先手必胜的策略。
我们发现,一个局面必胜当且仅当先手可以通过一步将其转换成必败局面,同理一个局面必败当前仅当先手不能通过一步将其转换成必败局面。
我们直接给出结论:当所有堆的石子个数异或和为 \(0\) 时,这个局面是必败的;反之,是必胜的。我也不是很清楚这个结论是怎么从无到有推出来的
以下称一个局面的异或和为一个局面所有堆的石子个数的异或和。
我们考虑一个平凡的必败局面,即 \((0, 0, \dots, 0)\)。显然这是必败的,因为你已经输了。显然这个局面的异或和为 \(0\)。
然后我们发现,如果异或和不为 \(0\),那么我们可以通过 \(a_i \gets a_i \oplus s\) 的方式将其转化为异或和为 \(0\) 的局面。如果异或和为 \(0\),我们发现无论如何操作都不可能让异或和保持为 \(0\)。于是发现最优策略下的局面会在异或和为 \(0\) 与异或和不为 \(0\) 之间交替。又发现每次操作后石子总数至少减小 \(1\),所以最终必然会出现 \((0, 0, \dots, 0)\) 的局面。
设 \(s\) 的最高位为第 \(k\) 位,那么一定存在一个 \(a_i\) 使得 \(a_i\) 第 \(k\) 位为 \(1\),把这个 \(1\) 异或为 \(0\) 后无论低位怎么变,\(a_i \oplus s\) 都不可能大于等于 \(a_i\),所以一定存在 \(a_i\) 使得 \(a_i \oplus s < a_i\),所以异或和不为 \(0\) 时的操作总是存在。
然后我们发现我们得出了 Nim 游戏的必胜策略。

浙公网安备 33010602011771号