Featured image of post 拿石子游戏的必胜策略是如何找到的:尼姆游戏(Nim)与组合博弈论

拿石子游戏的必胜策略是如何找到的:尼姆游戏(Nim)与组合博弈论

从二进制异或(XOR)尼姆和、必胜态(N-position)与必败态(P-position)的严格证明,到最小排除值(mex)、格兰迪数(Grundy Number)、斯普拉格-格兰迪定理(Sprague-Grundy Theorem)与反常规则(Misère Play)的完整数学解析。

引言:简单规则背后的绝对必然性——公平组合博弈与策梅洛定理

桌面上放着三堆石子,数量分别为 $3$ 颗、$4$ 颗和 $5$ 颗。两名玩家轮流行动,每次可以选择任意一堆,从中拿走至少 $1$ 颗石子(也可以把整堆拿光)。拿走最后一颗石子的人获胜。这就是流传数百年、在阿伦·雷乃的电影《去年在马里昂巴德》中闻名遐迩的尼姆游戏(Nim)。表面上看,这似乎是一个考验心理博弈与算力的智力游戏;但在数学家的眼中,从游戏开始的第一秒起,胜负就已经被完全锁死:只要先手玩家掌握了隐藏在二进制位运算中的代数不变量,无论后手玩家如何挣扎,先手都能以 $100\%$ 的概率获胜。

在现代数学中,这类游戏被称为公平组合博弈(Impartial Combinatorial Games)。它满足五个核心公理:(1) 两名玩家轮流行动;(2) 完全信息(Perfect Information),不存在隐藏手牌或视野盲区;(3) 确定性(Deterministic),没有任何掷骰子或洗牌等随机因素;(4) 公平性(Impartiality),在任意给定局面下,两名玩家所允许的合法移动集合完全相同(这与国际象棋或围棋等偏党博弈 Partisan Games 不同,在象棋中白方只能走白子、黑方只能走黑子);(5) 有限终止条件(Finite Termination),游戏必然在有限步内结束,不会陷入无限循环。在标准规则——即正规博弈约定(Normal Play Convention)——下,无法进行合法移动的玩家判负(等价于走出最后一步的玩家获胜)。

根据策梅洛定理(Zermelo’s Theorem)在有向无环图(DAG)上的逆向归纳法,公平组合博弈中的所有局面都可以被唯一且不相交地划分为两类:$\mathcal{P}$-局面(Previous-player winning position,前手必胜态/当前玩家必败态)与$\mathcal{N}$-局面(Next-player winning position,后继行动者必胜态/当前玩家必胜态)。它们的递归定义极其优美:所有终局状态(无路可走的状态)都是 $\mathcal{P}$-局面;如果一个局面至少存在一步合法移动能够到达某个 $\mathcal{P}$-局面,则它是 $\mathcal{N}$-局面;如果一个局面的所有合法移动都只能到达 $\mathcal{N}$-局面,则它是 $\mathcal{P}$-局面。

  flowchart TD
    A["Impartial Game Position G"] --> B{"Compute Grundy Value g(G)"}
    B -->|"g(G) > 0"| C["N-Position: Next Player Wins"]
    B -->|"g(G) = 0"| D["P-Position: Previous Player Wins"]
    C -->|"Optimal Move: Choose option G' with g(G') = 0"| D
    D -->|"Every Legal Move: Flips at least one bit"| C

1. 查尔斯·布顿的破译(1901):二进制异或(Nim-sum)与两大守恒引理

如果堆数很多、每堆石子有上百万颗,在状态图上直接做逆向归纳会产生指数级爆炸。1901年,哈佛大学数学家查尔斯·伦纳德·布顿(Charles Leonard Bouton)发表了里程碑式的论文,彻底解决了任意堆数、任意石子数的尼姆游戏。他发现,决定尼姆游戏生死的钥匙,是将每一堆石子的数量写成二进制,并计算它们的按位异或和(Bitwise XOR,又称尼姆和 Nim-sum)。

设当前局面为 $(n_1, n_2, \dots, n_k)$,定义尼姆和 $S = n_1 \oplus n_2 \oplus \dots \oplus n_k$。按位异或 $\oplus$ 实质上是在二元有限域 $\mathbb{F}_2 = ext{GF}(2)$ 上不进位的二进制加法(满足交换律、结合律,且任何数与自身异或为零:$x \oplus x = 0$)。布顿定理断言:一个尼姆局面 $(n_1, \dots, n_k)$ 是必败态($\mathcal{P}$-局面),当且仅当其尼姆和 $S = 0$;它是必胜态($\mathcal{N}$-局面),当且仅当 $S eq 0$。

为什么这个简单的异或公式能够完美刻画 $\mathcal{P}$-局面与 $\mathcal{N}$-局面?证明仅需两条优雅的代数引理: 第一,从 $S = 0$ 出发,任何合法移动必然导致 $S' eq 0$。假设当前 $S = n_1 \oplus \dots \oplus n_k = 0$,玩家将第 $i$ 堆石子从 $n_i$ 减少到 $n_i' < n_i$。由于 $n_i' eq n_i$,它们在二进制表示下至少有一位不同,因此 $n_i \oplus n_i' eq 0$。新局面的尼姆和为 $S' = S \oplus n_i \oplus n_i' = 0 \oplus (n_i \oplus n_i') eq 0$。这意味着处于 $S=0$ 的玩家无论怎么走,都会被迫将 $S' eq 0$ 的必胜权交还给对手。 第二,从 $S eq 0$ 出发,必然存在至少一步合法移动使得 $S' = 0$。观察非零数 $S$ 的二进制表示中最高位的 $1$(Most Significant Bit, MSB),设其位于第 $d$ 位。因为 $S$ 的第 $d$ 位是 $1$,在参与异或的 $n_1, \dots, n_k$ 中,必定有奇数个(从而至少有一个)堆 $n_i$ 在第 $d$ 位上也是 $1$。选中这个 $n_i$,令目标数量为 $n_i' = n_i \oplus S$。由于 $n_i$ 与 $S$ 在最高非零位 $d$ 上同为 $1$,异或后 $n_i'$ 的第 $d$ 位变成了 $0$,而高于 $d$ 的位保持不变,因此严格满足 $n_i' < n_i$!这是一个完全合法的拿取操作(拿走 $n_i - (n_i \oplus S)$ 颗石子),且移动后的新尼姆和为 $S' = S \oplus n_i \oplus n_i' = S \oplus n_i \oplus (n_i \oplus S) = 0$。以开篇的 $(3, 4, 5)$ 为例:$S = 3 \oplus 4 \oplus 5 = 2 = (010)_2 eq 0$,最高位 $1$ 在第二位(权值 $2$)。检查三堆石子,$n_1 = 3 = (011)_2$ 在该位为 $1$,于是令 $n_1' = 3 \oplus 2 = 1$,即从第一堆拿走 $2$ 颗石子,留下 $(1, 4, 5)$,此时 $1 \oplus 4 \oplus 5 = 0$,先手稳操胜券!

$$ S = n_1 \oplus n_2 \oplus \dots \oplus n_k = \bigoplus_{i=1}^k n_i $$$$ \begin{aligned} n_1 = 3 &= (011)_2 \\ n_2 = 4 &= (100)_2 \\ n_3 = 5 &= (101)_2 \\ \hline S = 3 \oplus 4 \oplus 5 &= (010)_2 = 2 \neq 0 \quad (\mathcal{N}\text{-position}) \end{aligned} $$$$ n_1' = n_1 \oplus S = 3 \oplus 2 = (011)_2 \oplus (010)_2 = (001)_2 = 1 < 3 \implies (1, 4, 5) \text{ has } 1 \oplus 4 \oplus 5 = 0 \quad (\mathcal{P}\text{-position}) $$

2. 斯普拉格-格兰迪定理(1935/1939):万物皆尼姆(Everything is Nim)

布顿解决尼姆游戏三十多年后,罗兰·斯普拉格(Roland Sprague, 1935)与帕特里克·格兰迪(Patrick Michael Grundy, 1939)各自独立地发现了一个震撼整个离散数学界的普适定理:不仅是尼姆游戏,宇宙中任何一个满足正规博弈约定的有限公平组合博弈,在数学结构上都完全同构于一堆特定大小的尼姆石子!

为了建立这一同构,我们需要引入最小排除值(Minimum Excluded Value, $ ext{mex}$)与格兰迪数(Grundy Value,又称尼姆数 Nimber)。对于非负整数的有限子集 $A \subset \mathbb{N}_0$,$ ext{mex}(A)$ 定义为不属于 $A$ 的最小非负整数(例如 $ ext{mex}(\emptyset) = 0$,$ ext{mex}(\{0, 1, 3\}) = 2$,$ ext{mex}(\{1, 2\}) = 0$)。对于博弈图中的任意局面 $u$,其格兰迪数 $\mathcal{G}(u)$ 递归定义为所有一步可达后继局面 $v$ 的格兰迪数集合的 $ ext{mex}$。 由 $ ext{mex}$ 的定义立即得出两条关键性质:(1) $\mathcal{G}(u) = 0$ 当且仅当没有任何后继局面的格兰迪数为 $0$,即 $u$ 是必败态($\mathcal{P}$-局面);(2) 若 $\mathcal{G}(u) = g > 0$,则对于任意满足 $0 \le m < g$ 的整数 $m$,都必然存在至少一个后继局面 $v$ 使得 $\mathcal{G}(v) = m$!这岂不正是含 $g$ 颗石子的单堆尼姆游戏的性质吗(从 $g$ 颗石子可以一步变成 $0, 1, \dots, g-1$ 颗石子)?

更进一步,当我们把多个相互独立的公平博弈 $G_1, G_2, \dots, G_k$ 组合成一个析取和博弈(Disjunctive Sum) $G = G_1 + G_2 + \dots + G_k$(玩家每回合任选其中一个子博弈走一步,所有子博弈都无路可走时游戏结束)时,斯普拉格-格兰迪定理(Sprague-Grundy Theorem)证明了:复合局面的格兰迪数恰好等于各个独立子博弈格兰迪数的按位异或! 这意味着,即便一个子博弈允许在减少规模的同时“增加”到某个更大的格兰迪数(相当于在尼姆堆上加石子),对手也总是可以立刻将它还原回原来的数值(相当于抵消加石子的动作)。因此,任何复杂的图博弈、分割博弈或棋盘博弈,只要算出每个独立组件的 $\mathcal{G}$ 值,就能瞬间化约为标准的尼姆异或求和!

$$ \text{mex}(A) = \min \{ m \in \mathbb{N}_0 \mid m \notin A \}, \qquad \mathcal{G}(u) = \text{mex}\big\{ \mathcal{G}(v) \;\big|\; u \to v \big\} $$$$ \mathcal{G}(u) = 0 \iff u \in \mathcal{P}\text{-position}, \qquad \mathcal{G}(u) > 0 \iff u \in \mathcal{N}\text{-position} $$
  flowchart TD
    G1["Subgame G1: Grundy Value g(G1)"] --> XOR["Bitwise XOR Sum: S = g(G1) XOR g(G2) XOR g(G3)"]
    G2["Subgame G2: Grundy Value g(G2)"] --> XOR
    G3["Subgame G3: Grundy Value g(G3)"] --> XOR
    XOR -->|"Sprague-Grundy Isomorphism"| NIM["Equivalent to 3-Heap Nim (g(G1), g(G2), g(G3))"]

3. 经典博弈应用与反常规则(Misère Play)的陷阱

斯普拉格-格兰迪定理赋予了我们解剖无数复杂游戏的手术刀:

  • 减法博弈(Subtraction Games, 如巴什博弈 Bash Game):每次只能拿走 $1$ 到 $m$ 颗石子。直接计算可知 $\mathcal{G}(n) = n mod (m+1)$,当且仅当 $n$ 是 $m+1$ 的倍数时先手必败。
  • 分裂博弈:凯尔斯保龄球(Kayles)与道森象棋(Dawson’s Chess):一排 $n$ 个保龄球瓶,每次可以击倒 $1$ 个或相邻的 $2$ 个球瓶。奇妙之处在于,从中间击倒球瓶会将原本的一排分裂成左右两个互不干扰的子排 $a$ 和 $b$!根据斯普拉格-格兰迪定理,分裂后的局面等价于两个独立子博弈的析取和,其格兰迪数直接由 $\mathcal{G}(a) \oplus \mathcal{G}(b)$ 给出。通过动态规划递推,我们可以轻松在 $O(n^2)$ 时间内算出任意长度凯尔斯博弈的必胜策略。
  • 反常博弈约定(Misère Play Convention,拿走最后一颗石子者输):如果把规则倒过来,让拿走最后一颗石子的人判负,会发生什么?许多初学者误以为只需把 $\mathcal{P}$ 和 $\mathcal{N}$ 简单反转即可,这是致命的错误!布顿证明了反常尼姆(Misère Nim)的精确修正法则:只要场面上还有至少两堆石子的数量大于 $1$,你的走法与正规尼姆完全相同(依然保持 $S = 0$);唯有当你的走法将使场面上所有剩余堆的大小都变成 $1$ 时,你不能再追求 $S=0$,而必须调整拿取数量,使得场面上留下奇数个大小为 $1$ 的堆(即在全 $1$ 残局中令 $S=1$)!然而,对于一般的公平博弈,反常规则彻底摧毁了斯普拉格-格兰迪定理的普适性——不同游戏在反常规则下不再能简单缩约为单个整数,直到 21 世纪初普兰贝克(Thane Plambeck)与西格尔(Aaron Siegel)提出反常商幺半群(Misère Quotients)理论,才揭开了反常博弈代数的冰山一角。
博弈类型 / 概念核心数学结构 / 判据先手必胜条件($\mathcal{N}$-局面)时间复杂度 / 理论地位
标准尼姆(Normal Play Nim)按位异或尼姆和 $S = igoplus_{i=1}^k n_i$$S
eq 0$$O(k)$ 位运算,一切公平博弈的基石
减法博弈 $S=\{1,\dots,m\}$模周期格兰迪函数 $\mathcal{G}(n) = n mod (m+1)$$n
ot\equiv 0 \pmod{m+1}$$O(1)$,周期性 $ ext{mex}$ 序列
凯尔斯博弈(Kayles, 分裂博弈)$ ext{mex}\{\mathcal{G}(a) \oplus \mathcal{G}(b)\}$$\mathcal{G}(n)
eq 0$($n \ge 72$ 起呈现周期 $12$)$O(n^2)$ DP 或利用最终周期性 $O(1)$
一般正规公平博弈析取和斯普拉格-格兰迪定理 $\mathcal{G}(\sum G_i) = igoplus \mathcal{G}(G_i)$$igoplus_{i=1}^k \mathcal{G}(G_i)
eq 0$完美同构于单堆尼姆与有限域 $\mathbb{F}_2$ 特征2域
反常尼姆(Misère Play Nim)残局阶段反转奇偶性若存在 $n_i > 1$ 则 $S
eq 0$;若全为 $1$ 则 $S = 0$(偶数堆)一般反常博弈需用 Misère Quotients 交换幺半群
$$ \mathcal{G}(G_1 + G_2 + \dots + G_k) = \mathcal{G}(G_1) \oplus \mathcal{G}(G_2) \oplus \dots \oplus \mathcal{G}(G_k) $$$$ \mathcal{G}(\text{Kayles}(n)) = \text{mex}\Big\{ \mathcal{G}(a) \oplus \mathcal{G}(b) \;\Big|\; a + b = n - 1 \text{ or } a + b = n - 2 \Big\} $$
comments powered by Disqus