博弈论与 Sprague-Grundy

共 18 题
📑 题目列表 18 题
#
★★★

1. Nim 游戏的必胜判定为何等价于各堆石子数的异或和非零?用数学归纳法证明,异或零态的任何移动都导致非零态,非零态总存在移动回到零态

用数学归纳证明 Nim 游戏必胜判定等价于各堆石子数的异或和非零?

  • Nim 异或和判定的两个方向
  • 异或零态任何移动都变非零
  • 非零态总存在移动回到零态

设异或和为 S。若 S=0,任何移动改变某一堆(如把 a_i 改为 a_i'<a_i),则新异或和 S' = S ⊕ a_i ⊕ a_i' = a_i ⊕ a_i' ≠ 0,因为 a_i ≠ a_i' 时异或不为零,故零态的任何移动都到非零态。若 S≠0,设 S 的最高位在 k,则存在某堆 a_i 的第 k 位为 1;令 a_i' = a_i ⊕ S(因 S 的最高位 k 处 a_i 为 1,异或后该位变 0 且更高位不变,故 a_i' < a_i),把 a_i 降为 a_i' 后新异或 S' = S ⊕ a_i ⊕ a_i' = S ⊕ a_i ⊕ (a_i⊕S) = 0。故非零态总存在移动回到零态。由此归纳:异或非零为先手必胜态(P/N 判定),异或零为必败态。

这是 Nim 的经典证明:零态是"冷态"(任何移动都进热态),非零态是"热态"(可一步到冷态)。归纳保证由终态(全零,异或为 0,必败)向上推,所有异或零态必败、非零态必胜。

boolean nimWin(int[] piles) {
    int s = 0; for (int x : piles) s ^= x;
    return s != 0; // 先手必胜
}
#
★★★

2. Sprague-Grundy 定理如何将任意公平博弈(impartial game)归约为 Nim?说明 SG 值的定义 g(position)=mex{g(successor)} 与 Nim 堆的对应

说明 Sprague-Grundy 定理如何把任意公平博弈归约为 Nim,并解释 SG 值定义与 Nim 堆的对应?

  • SG 值定义 g= mex{g(successor)}
  • 公平博弈与 Nim 的等价
  • 多游戏和的 SG 异或

对公平博弈(双方走法相同、无随机、无信息隐藏),定义 SG 值 g(pos)=mex{g(successor)},其中 mex 是集合外的最小非负整数。可证:SG 值为 0 的位置是必败态,非 0 为必胜态。SG 定理把任一公平博弈位置映射为一个等价的 Nim 堆(大小为 g(pos)),而多个独立公平博弈的和的 SG 值等于各分量 SG 值异或,正如 Nim 多堆的异或和。因此任意公平博弈的胜负判定归结为各不变子博弈 SG 值的异或是否为零。

mex 构造保证"SG 值 = 该位置等价 Nim 堆的大小",从而与 Nim 一一对应。SG 定理的核心是把复杂的组合博弈分解为独立子博弈,再用异或聚合。

#
★★★

3. Nim 游戏的必胜判定中异或和(XOR sum)为何是决定性指标,SG 定理如何推广到一般组合博弈?

解释异或和为何是 Nim 的决定性指标,以及 SG 定理如何推广到一般组合博弈?

  • 异或和作为 Nim 指标
  • 与 SG 定理的联系
  • 推广到一般公平博弈

对 Nim,异或和 S 是决定性指标:S≠0 时先手必胜,S=0 时必败。证明基于两个性质——零态任何移动变非零态、非零态可一步到零态。这实际上是 SG 定理在 Nim 上的体现:每堆石子是一个独立子博弈,堆大小为 a_i 时其 SG 值恰为 a_i,多堆异或即 SG 和。SG 定理将此推广:任意公平博弈若可分解为独立子博弈,则总 SG 值 = 各子博弈 SG 值的异或,据此判定胜负。这使 Nim 的异或判定成为一般组合博弈的模板。

异或和的"决定性"源于每堆恰好等于一个 Nim 堆的 SG 值。推广到一般博弈时,只需把每个位置算 SG 值,再用异或聚合,即把任意公平博弈化为广义 Nim。

#
★★★

4. Wythoff 游戏(两堆石子,可从一堆取任意或从两堆取相同数量)的冷位置 (⌊kφ⌋, ⌊kφ²⌋) 与 Beatty 定理的关系

说明 Wythoff 游戏的冷位置 (⌊kφ⌋, ⌊kφ²⌋) 与 Beatty 定理的关系?

  • Wythoff 游戏的冷位置公式
  • 黄金比例 φ 与 Beatty 序列
  • Beatty 定理:两序列互补覆盖正整数

Wythoff 游戏允许从一堆取任意颗,或从两堆取相同颗数。其冷位置(必败态)为 (⌊kφ⌋, ⌊kφ²⌋),k=1,2,…,其中 φ=(1+√5)/2,且 φ²=φ+1。Beatty 定理说:若 1/α+1/β=1 且 α,β 是无理数,则序列 ⌊nα⌋ 与 ⌊nβ⌋ 互补地覆盖所有正整数(无重复无遗漏)。这里 α=φ, β=φ² 满足 1/φ+1/φ²=1,故两序列互补。冷位置两个坐标用了这互补序列,既保证每个非负整数出现在某个冷位置的某一坐标,又保证每个冷位置都能被某一步转化成其他冷位置,从而构成完整的必败态集。

Beatty 序列的互补性保证了冷位置坐标覆盖性,是 Wythoff 冷位置公式成立的关键。黄金比例的出现源于 φ 满足 φ²=φ+1 的代数性质。

#
★★★

5. 为何 Nim 的'异或策略'在 Misère Nim(取最后一颗者输)中需要特殊处理,当所有堆都为 1 时的奇偶性翻转

解释 Misère Nim(取最后一颗者输)为何需要特殊处理,特别是所有堆都为 1 时的奇偶性翻转?

  • Misère Nim 规则
  • 全 1 堆时的奇偶性特殊处理
  • 与标准 Nim 的差异

Misère Nim 中取最后一颗者输。若直接套用标准 Nim 的异或策略,在"所有堆都为 1"时结论会翻转:标准 Nim 中 n 堆各 1 颗时,异或和 = n mod 2,n 为奇数时非零判先手必胜,但在 Misère 中先手取最后一颗会输,故奇数堆的 1 其实是必败。正确策略:若所有堆都为 1,则堆数为偶数时先手必胜(拿一半留一半,迫使对手取最后一颗);否则退化为标准 Nim 的异或判定。因此 Misère Nim 需在"全 1 堆"这一特殊情形翻转奇偶性。

差异源于终态定义不同:标准 Nim 终态(全 0)是必败,Misère 终态(全 0)反而是必胜(对手取最后一颗)。只有全 1 堆这一边界情形下异或判定会失效,故单独处理。

#
★★

6. Moore Nim(每次最多从 k 堆取石子)的判定中从异或变为各二进制位和对 k+1 取模,如何证明?

说明 Moore Nim(每次最多从 k 堆取)的判定为何变为各二进制位和对 k+1 取模,并给出证明思路?

  • Moore Nim 规则
  • 各二进制位和对 k+1 取模的判定
  • 证明思路(零态/非零态)

Moore Nim 中每次最多从 k 堆取任意数量。判定标准:把每堆石子写成二进制,对每个二进制位统计"该位为 1 的堆数",若所有位的堆数都被 k+1 整除,则此为必败态;否则必胜。证明思路与 Nim 相同:若所有位和都是 k+1 的倍数(态 A),任意一次操作最多改变 k 堆,每堆改变一个二进制的若干位,会使某些位的和变化,不可能仍保持所有位和都被 k+1 整除(因为最多 k 堆变化,每堆至少改变一位的总量不足以让所有位仍为 k+1 倍数);反之若某位和不是 k+1 倍数,总存在合法操作使所有位和回到 k+1 倍数。故该判定正确。

k=1 时退化为标准 Nim(位和模 2 即异或)。Moore Nim 把"模 2"推广为"模 k+1",本质是每堆变化有限位、每次最多 k 堆变化,从而保持"全模 k+1 为零"的零态。

#
★★

7. mex(最小不在集合中的非负整数)运算在 SG 定理中的角色中为何 mex 能保证'SG 值等于该状态等价 Nim 堆的大小'

说明 mex 运算在 SG 定理中的角色,为何它保证 SG 值等于等价 Nim 堆的大小?

  • mex 定义
  • mex 与 Nim 堆 SG 值的对应
  • 为什么 mex 保证等价性

mex 是"集合外的最小非负整数"。SG 值 g(pos)=mex{g(successor)}。用 mex 保证等价性:若位置能走到 SG 值为 0,1,…,g-1 的所有位置且不能走到 g 的位置,则它的 SG 值恰为 g,与一个大小为 g 的 Nim 堆(其可走到 0..g-1 的任意堆)有完全相同的"可转移集合"。因为 Nim 堆的 SG 值就是堆大小,而堆大小为 g 的 Nim 堆恰好能转移到大小 0..g-1 的所有堆,故用 mex 定义的位置 SG 值精确对应一个 Nim 堆。这样 SG 值退化为"等价 Nim 堆大小",胜负判定统一为异或。

mex 的关键在于"能到 0..g-1 且到不了 g"恰好刻画了 Nim 堆 g 的转移结构。这是 SG 定理能把任一公平博弈归约为 Nim 的机制。

#
★★

8. SG 定理中独立子游戏的 SG 值异或为何决定胜负,如何计算单个游戏的 SG?

说明独立子游戏的 SG 值异或为何决定胜负,以及如何计算单个游戏的 SG 值?

  • SG 和 = 各分量异或
  • mex 计算单游戏 SG
  • 胜负判定

对多个独立子博弈组成的和,总 SG 值 = 各子游戏 SG 值的异或。若为 0 则必败,非 0 则必胜。理由:异或和为零时,任何一步只改变一个子博弈的 SG 值(因为一步只影响一个分量),使异或和变非零;异或和非零时,总存在某子博弈可被调整(对应 Nim 的"把某堆降到 a_i⊕S")使异或和回零。计算单个游戏的 SG:记能到达的后继位置集合,g(pos)=mex{g(succ)},从终态(无后继,g=0)递推或记忆化搜索。

异或选择源于"一步只变一个分量"与 Nim 的异或结构完全一致。单游戏 SG 用 mex 递推,组合游戏用异或聚合,两者结合构成 SG 定理的完整应用。

#
★★

9. 二分图博弈中先手必胜当且仅当起点在最大匹配中,与最小顶点覆盖/最大匹配如何转换?

说明二分图博弈中先手必胜当且仅当起点在最大匹配中,并说明与最小顶点覆盖/最大匹配的转换?

  • 二分图博弈规则
  • 起点在最大匹配则先手必胜
  • 与最小顶点覆盖/最大匹配的 König 关系

二分图博弈中,棋子在二分图上移动,无法移动者输。判定:先手必胜当且仅当起点在某个最大匹配中。若起点被某最大匹配覆盖,则先手沿匹配边移动,后手只能走非匹配边,先手再沿匹配边回,如此保证先手总有合法移动(若后手走到 a,a 的匹配边——若 a 非匹配端点则其中包含终点——把后手送入死角),先手必胜。若起点不在任何最大匹配中,则后手可用类似策略。与最小顶点覆盖:由 König 定理,二分图最大匹配边数 = 最小顶点覆盖点数,且最大匹配与最小顶点覆盖可互相转换(从最大匹配构造最小覆盖的交替路径算法)。

关键是把"匹配"当作"必胜策略的占有"—匹配边提供先手的主导移动。König 定理连接最大匹配与最小顶点覆盖,是该博弈判定与图论结构间的桥梁。

#
★★

10. 有向图上的 SG 与记忆化中当图有环时为什么不能直接计算 SG,需要什么特殊处理?

说明有向图上计算 SG 时遇到环为何不能直接计算,以及需要何种特殊处理?

  • 有环导致 SG 递归不终止
  • 循环博弈的胜负判定
  • 特殊处理(拓扑排序/最长路径/博弈内不可达)

SG 值要求从终态开始按"无环"的 DAG 递推,即 g(pos)=mex{g(succ)}。若图有环,递归会无限循环(g 依赖自身的后继),无法用简单 mex 定义。处理方案:若环内实际上不可达(或博弈保证有限步结束),可先缩环为强连通分量再拓扑排序;若允许无限循环,则需引入"平局/无限步"概念,用更复杂的博弈理论(如判定是否存在必胜策略且保证终止)。常见竞赛处理:若某状态无论双方如何走都会终止,则环不影响 SG(因为最优策略不会进入永循环),直接按 DAG 算即可;否则需特殊标记。

SG 对无环博弈定义良好;有环引入"可无限博弈"的复杂性。工程上若环不影响最优策略则忽略,否则需用更一般的博弈判定(如递归+胜负三态:胜/负/平)。

#
★★

11. 必胜态/必败态的定义中 P-position/N-position 的递归判定在简单博弈中的应用?

给出必胜态/必败态(P-position/N-position)的定义,并说明其递归判定在简单博弈中的应用?

  • P/N 定义
  • 递归判定规则
  • 简单博弈的应用

P-position(必败态)是无论先手如何走,后手都有必胜策略的位置;N-position(必胜态)是先手存在必胜策略的位置。递归判定:终态(无合法移动)为 P;某位置若存在一个后继是 P,则它是 N(先手可走到必败态);若所有后继都是 N,则它是 P(先手无论走哪都进必胜态)。应用于简单博弈(如取石子、Chomp、棋盘游戏)时,从终态向上反推或记忆化搜索,即可判定每个状态的胜负。对大规模状态用 SG 值聚合,对小规模用 DP 表。

P/N 是博弈论的基础归约。递归定义给出"存在性"判定:N 态存在走向 P 的边,P 态所有边都走向 N。这构成自底向上或自顶向下(记忆化)的判定框架。

#

12. SG 定理与位运算(异或)的内在联系中组合博弈的和的 SG 值等于各分量 SG 值的异或,为何不是加法

解释组合博弈的和的 SG 值为何是各分量 SG 值的异或而非加法?

  • 异或符合"一步只变一个分量"结构
  • 加法为何不适用
  • 异或构成 Nim 的群结构

组合博弈的和中,一步只能在一个分量上移动,即新状态的后继是"一个分量的后继 + 其余分量不变"。SG 值异或满足:设 S = g1⊕g2⊕…⊕gn,若 S=0,任一步把某个 gi 改成 gi',则 S' = S⊕gi⊕gi' = gi⊕gi' ≠ 0;若 S≠0,存在把某堆 gi 改为 gi⊕S 使 S'=0 的合法移动(因 gi⊕S < gi)。这正复现 Nim 的异或结构,故 SG 和用异或。加法不适用:加法无法保证"一步变一个分量后总和必变非零"且"非零总能一步归零"的对称性质,且会破坏 Nim 堆的等价性。

异或满足"模 2 且可逆"的代数结构,恰与"一步只变一个分量"的博弈和空间匹配。加法不满足保持 P/N 判定的两个方向,故不是 SG 的合成运算。

#

13. SG 定理在竞赛中的经典应用中翻硬币游戏、无向图删边游戏(Tree Nim)如何建模为 Nim

说明翻硬币游戏、无向图删边游戏(Tree Nim)等经典比赛应用如何建模为 Nim?

  • 翻硬币游戏分解为独立翻动
  • 删边游戏(Green Hackenbush)的 SG
  • 归约为 Nim 堆

翻硬币游戏:把每个"正面"硬币看作一个独立子博弈,其 SG 值由该硬币位置决定(某位置正面的 SG = 该位置编号的某个值),所有非零 SG 硬币异或判定胜负,从而把整局归约为 Nim 的几堆。无向图删边游戏(Tree Nim / Green Hackenbush):删边的操作可用"colon principle"把树规约为 Nim 堆,即每个节点的 SG 值由其子树递归计算并使树整体对应一个 Nim 堆。这些游戏都通过 SG 值分解成独立子博弈后异或,即用 SG 定理统一建模为 Nim。

这些看似非 Nim 的游戏,其关键是把"一个动作"映射为"改变一个独立子博弈的 SG 值",从而复现 Nim 结构。SG 定理是这类归约的通用框架。

#

14. 不公平博弈(partizan game)为何不能直接用 SG 定理?简要说明 Conway 的 surreal numbers 思路

说明不公平博弈(partizan game)为何不能直接用 SG 定理,并简述 Conway 的 surreal numbers 思路?

  • 不公平博弈的定义
  • SG 定理的适用前提
  • surreal numbers 的扩展

不公平博弈(partizan game)中双方走法集合不同(如黑白棋中一方只能走黑子的位置),SG 定理要求双方可用走法相同(公平博弈),故不能直接用。SG 值基于"双方对称"的 mex 结构,在不公平博弈中会失效。Conway 用 surreal numbers(超现实数)扩展:把每个位置表示为 {L|R} 的"左选项集合 | 右选项集合",通过递归定义得到一种数(surreal number),它既包含普通数也包含游戏值;两个游戏的和即数的加法,胜负可通过比较数的大小判定。这为不公平博弈提供了与 SG 类似但更丰富的代数框架。

SG 只覆盖公平博弈;surreal numbers 用 {L|R} 记录双方不同选项,定义出更一般的游戏加法群,从而把组合博弈论从公平扩展到不公平。这是 Conway 的"On Numbers and Games"的核心思想。

#

15. Sprague-Grundy 值的计算中如何对独立子游戏求 SG 值异或,哪些经典游戏(Wythoff、Green Hackenbush)可用?

说明如何计算独立子游戏的 SG 值并异或,以及哪些经典游戏(Wythoff、Green Hackenbush)适用?

  • SG 值计算流程
  • 独立子游戏异或
  • Wythoff、Green Hackenbush 的应用

计算流程:对每个独立子游戏,枚举其所有可达后继状态,递归计算各后继的 SG 值,取 mex 作为当前状态 SG 值;终态 SG=0。对多个独立子游戏组成的和,把各子 SG 值异或,非零则先手必胜。经典应用:Wythoff 游戏两堆的 SG 值异或判定(每堆是独立子游戏),Green Hackenbush(删边游戏)用 colon principle 把树化成栈/堆的 SG 值,翻硬币、取石子等也适用。关键在于正确识别"独立子游戏"并保证每个子游戏状态可穷举。

SG 值计算需要状态空间小或可记忆化。Wythoff 因两堆独立成子游戏、Green Hackenbush 因树结构可分解,都满足"可分解为独立子游戏"的条件,故可用 SG 异或。

#

16. 计算一个博弈状态的 SG 值中以取石子游戏(每次可取 1-3 颗)为例,推导 g(n)=n mod 4

以"每次可取 1-3 颗"的取石子游戏为例,推导 SG 值 g(n)=n mod 4?

  • SG 递推计算
  • mex 求值
  • 周期性规律

对能取 1-3 颗的游戏,状态 n 的后继是 n-1,n-2,n-3。g(0)=0(终态)。g(1)=mex{g(0)}=mex{0}=1;g(2)=mex{g(1),g(0)}=mex{1,0}=2;g(3)=mex{g(2),g(1),g(0)}=mex{2,1,0}=3;g(4)=mex{g(3),g(2),g(1)}=mex{3,2,1}=0;g(5)=mex{g(4),g(3),g(2)}=mex{0,3,2}=1。可见 g(n)=n mod 4,周期为 4。SG 值为 0 的状态(n 为 4 的倍数)是必败态。

因一次最多取 3,SG 值只依赖前三个状态,mex 结果为 0,1,2,3 循环,故周期 4。这验证了"可取的步数集合"决定 SG 的周期结构。

#

17. 博弈论的工程场景中状态压缩+记忆化搜索求 SG,与对抗搜索(Minimax/Alpha-beta)的关系?

说明博弈论中状态压缩+记忆化搜索求 SG 与对抗搜索(Minimax/Alpha-beta)的关系及适用场景?

  • 状态压缩+记忆化求 SG
  • Minimax/Alpha-beta 对抗搜索
  • 两者的适用场景与融合

状态压缩+记忆化搜索适用于"状态空间有限、可枚举、公平博弈"的情形:用位掩码表示状态,递归计算 SG 值并记忆化,O(状态数) 完成。对抗搜索(Minimax/Alpha-beta)适用于"状态空间巨大无法穷举、带评估函数"的博弈(如象棋、围棋),用深度限制+启发式剪枝。关系:SG 是精确的博弈论解(限于公平博弈),Minimax 是近似搜索(可用 alpha-beta 剪枝、迭代加深)。工程上可结合:小规模公平博弈用 SG 精确求解,大规模非公平博弈用 Minimax+剪枝。

两者是"精确求解"与"启发式搜索"的两条路线。SG 强调状态可穷举与公平性,Minimax 强调启发式评估与剪枝,适用状态规模不同。

#

18. 常见组合博弈的 SG 中取石子、Nim 变形与 Green Hackenbush 的例子?

举例说明常见组合博弈(取石子、Nim 变形、Green Hackenbush)的 SG 值计算?

  • 取石子的 SG 递推
  • Nim 变形的建模
  • Green Hackenbush 的 SG

取石子(每次取 1-3)SG 为 n mod 4;Nim 每堆大小 a 的 SG 为 a,多堆异或判定;Nim 变形(如可每次取 Fibonacci 数颗、可取任意素数颗)则它的 SG 值序列需重新递推,例如"每次可取 1..k 或若干"会改变周期。Green Hackenbush:删边游戏用 colon principle——把树规约,每个"栈"(柱子)的 SG 值等于其长度,分叉用异或组合,最终整棵树对应一个 Nim 堆。这些例子都统一于"mex 递推 + 子游戏异或"框架。

不同取石子集合导致 SG 值不同但都可用递推求;Green Hackenbush 的树结构用返回边的异或规约成 Nim。SG 框架统一了这些看似不同的游戏。