先辨规则与条件,再选方法:组合博弈找必败态,策略博弈找均衡,概率题明确样本空间,数字谜题用枚举、递推与搜索。以下取石子游戏均采用取走最后一个者获胜的规则。
公平组合博弈
双方在同一局面拥有相同的合法着法。“必败态”指轮到行动的一方在对手最优应对时必败。
尼姆游戏
Nim 异或判定
规则:每次只从一堆取任意正数,可取完整堆。
策略:异或和为 0 是必败态。非零时,把某堆 x 减至 x⊕s,使总异或和归零。
例子:3⊕4⊕5=2;首手从 3 取走 2,留下 1⊕4⊕5=0。
取最后一个者负的反尼姆,需要另判终局。
展开原理
从异或和为 0 的局面出发,任何合法行动都会使它非零;从非零局面出发,总能减小某一堆,使异或和归零。因此,每次把 0 留给对手,就能保持优势。s 表示当前所有堆数量的异或和。
巴什博弈
Bash Game 凑固定和
规则:一堆 n 个,每次取 1~m 个。
策略:m+1 的倍数是必败态。首手取余数,此后对手取 k,你取 m+1−k。
例子:每次取 1~4 个时,30 个先手必败;32 个先取 2。
允许取数必须连续为 1~m,离散取数集合需重新分析。
展开原理
对手取 k 个,你取 m+1−k 个,两手总共取 m+1 个,局面按固定周期递减。从 m+1 的倍数出发,无论取多少都会离开这个集合;从其他局面则可一步回到集合。
威佐夫博弈
Wythoff's Game 黄金分割
规则:从一堆任取,或两堆同时取相同正数。
判定:两堆排序为 a≤b,令 k=b−a;若 a=⌊kφ⌋,就是必败态。φ=(1+√5)/2。
例子:(1,2)、(3,5)、(4,7)、(6,10)、(8,13) 都是必败对。
含终局 (0,0)。准确位置由取整公式决定,不是斜线上的所有点。
展开原理
两列黄金分割取整数列互补,并且 bₖ−aₖ=k。必败对之间不能一步互达,其他局面总能一步到达某个必败对。例如 (2,3) 可把第二堆减为 1,得到排序后的 (1,2)。
斐波那契尼姆
Fibonacci Nim Zeckendorf 分解
规则:首手不能取完;之后每次最多取对手上一手的 2 倍。
策略:将 n 分解为不相邻斐波那契数之和,记最小项为 z(n)。当前上限 r≥z(n) 时可取最小项制胜,否则必败。
例子:20=13+5+2,首手取 2;初始 n 本身为斐波那契数时先手必败。
不仅要看剩余 n,还要看当前允许取数的上限 r。
展开原理
每个正整数都能唯一分解为不相邻的斐波那契数之和。可用贪心法反复取“不超过剩余值的最大斐波那契数”,最后一项就是 z(n)。首手上限为 n−1;若 n 本身是斐波那契数,z(n)=n,首手便无法取到制胜项。
Sprague–Grundy 定理
SG Theorem mex 与异或
计算:当前 SG 值是全部后继 SG 值的 mex,即未出现的最小非负整数;终局值为 0。
策略:独立子游戏的 SG 值按位异或;总值为 0 是必败态,非零时设法一步变为 0。
例子:mex{0,1,3}=2;两个子游戏值为 3、5,总值 3⊕5=6。
适用于正常玩法、无无限对局的公平游戏;每回合只动一个子游戏。
展开原理
SG 值由全部合法后继的值决定。没有后继时 mex∅=0;例如后继值为 {0,1,3},当前值就是 2。普通尼姆的一堆 n 个石子满足 g(n)=n,其他游戏不能直接用物品数量代替 SG 值。
巧克力博弈
Chomp 策略窃取
规则:毒格在左下角;选一格,吃掉它及其右上方矩形,吃毒格者负。
结论:除 1×1 外,矩形初始棋盘先手存在必胜策略,可用策略窃取证明。
边界:存在性证明不直接给出一般棋盘的制胜首手。
只吃右上角一格是证明的起点,不是所有棋盘的通用制胜着法。
展开原理
先手先只吃右上角一格。若这一手能赢,结论成立;否则后手存在制胜回应。但先手本可在第一手直接走这个回应,得到同一局面,再采用原本后手的制胜策略,产生矛盾。这个证明说明必胜策略存在,却没有构造通用的制胜首手。
策略博弈
纳什均衡:其他人的策略不变时,任何人单独改变策略都无法提高自己的收益。
囚徒困境
Prisoner's Dilemma 占优策略
收益顺序为(自己,对手)。
| 自己 \ 对手 | 合作 | 背叛 |
|---|---|---|
| 合作 | (3,3) | (0,5) |
| 背叛 | (5,0) | (1,1) |
结论:无论对手怎样选,背叛都更有利;唯一纳什均衡是双方背叛。
要点:均衡 (1,1) 比共同合作 (3,3) 更差,个体最优未必带来集体最优。
展开原理
对手合作时,自己背叛得 5,比合作的 3 高;对手背叛时,自己背叛得 1,比合作的 0 高。因此背叛是严格占优策略。常见模型还加上 2R>T+S,表示共同合作比轮流占对方便宜的平均收益更高。
石头剪刀布
Rock–Paper–Scissors 混合策略
规则:同时出手,石克剪、剪克布、布克石。
策略:赢 +1、输 −1、平 0 时,各以 1/3 概率随机出手,期望收益为 0;无纯策略均衡。
收益不对称时,均衡概率需要重新计算;等概率结论针对标准对称收益。
展开原理
任何一种固定手势都有能击败它的最佳回应,因此不存在纯策略均衡。在标准对称收益下,等概率出三种手势,让对手选择任何手势的期望收益都为 0。
海盗分金
Pirate Game 逆向归纳
规则:5 人分 100 枚金币,依次提案;赞成票至少半数则通过,否则提案人出局。
策略:从末轮倒推。1 号自己投赞成,再给 3、5 号各 1 枚,比他们下一轮的 0 更好。
含提案人投票;偏好依次为生存、金币,同收益时否决。改为严格过半需重新倒推。
展开原理
从只剩 4、5 号开始倒推:4 号靠自己的一票即可拿走 100。剩 3 人时,3 号给 5 号 1 枚即可通过;剩 4 人时,2 号给 4 号 1 枚即可通过。因此轮到 1 号时,3、5 号在下一轮都会得 0,各给他们 1 枚即可买到两票。
蜈蚣博弈
Centipede Game 从终点倒推
规则:轮流决定终止或继续;继续可增加总收益,并把决定权交给对手。
结论:图中末轮 B 选 16 而不是 8;逐轮倒推,得到首轮 A 停止的均衡。
依赖有限已知终点、给定收益与理性为共同知识;改变前提后应重新推导。
展开原理
括号内依次是 A、B 的收益。最后一轮 B 选停止得 16,优于继续后的 8;A 预见此结果,上一轮选停止得 8,优于继续后的 4。再向前推,B 选 4 而非 2,A 选 2 而非 1,因此首轮停止。
重复囚徒困境
Infinitely Repeated PD 未来惩罚
策略:无限重复时,双方先合作;一旦出现背叛,之后永久背叛,即 Grim Trigger。
判定:持续合作的折现收益不少于单次背叛后接受惩罚的收益时,合作可维持。
例子:T=5、R=3、P=1 时,δ≥1/2。
以牙还牙 Tit for Tat 只复制上一轮行动,需另算条件;有限已知轮数也不能直接套用。
展开原理
持续合作的折现收益为 R/(1−δ);背叛当轮拿到 T,此后每轮拿到 P。比较两者得到合作阈值。惩罚阶段的双方背叛本身是单次博弈的均衡,因此惩罚可信;阈值等号处表示两种选择收益相同。
斗鸡博弈
Chicken Game 两个纯策略均衡
收益顺序为(自己,对手)。
| 自己 \ 对手 | 转向 S | 直行 G |
|---|---|---|
| 转向 S | (0,0) | (−1,+1) |
| 直行 G | (+1,−1) | (−10,−10) |
结论:一方转向、另一方直行,是两个纯策略均衡;双方直行的结果最差。
补充:本组收益还有混合均衡:各以 1/10 概率直行。
能改变对方预期的是可信且可观察的承诺,口头宣称不会自动改变行动空间。
展开原理
对手转向时,自己直行得 +1,高于转向的 0;对手直行时,自己转向得 −1,高于直行的 −10。若对手直行概率为 q,自己直行的期望收益为 1−11q,转向为 −q;令两者相等,得到混合均衡 q=1/10。
概率与统计
概率结论依赖样本空间、抽样方式和信息获取机制。先明确条件,再计算条件概率或期望。
蒙提霍尔问题
Monty Hall 开门规则决定概率
条件:三扇门后等概率放一辆车、两只羊。主持人知道车在哪,总打开一扇未选的羊门,且总允许换门。
结论:坚持原门赢的概率为 1/3;始终换门赢的概率为 2/3。
判断:换门获胜恰好等于“第一次选错”,该事件的概率就是 2/3。
主持人随机开门、可能开出车,或只在特定情况下让你换门时,必须重新建模。
展开原理
固定初选 1 号门,按车的位置分三种等概率情况:车在 1 号时换门输;车在 2、3 号时,主持人必须打开另一扇羊门,换门都赢。这里比较的是始终换门的总体胜率。若额外条件是“主持人恰好打开指定门”,还需明确主持人有多个羊门可选时的开门规则。
生日悖论
Birthday Problem 先算全部不同
条件:生日相互独立,在 365 天上均匀分布,忽略闰日。问题是任意两人同生日。
结论:23 人时概率约 50.7%;50 人约 97.0%;70 人约 99.9%。
方法:先计算所有人生日都不同的概率,再用 1 减去它。
公式适用于 n≤365;n≥366 时概率为 1。“有人与你同生日”是另一个问题。
展开原理
第 1 人生日任意,第 2 人避开已有日期的概率为 364/365,第 3 人为 363/365,依次相乘。23 人共有 253 对可比较,配对数按平方量级增长;不同配对的撞生日事件并不相互独立。
散列到 M 个等可能桶时,出现碰撞所需的样本规模也是平方根量级。
男孩女孩悖论
Boy or Girl 先说明如何得知
条件:理想模型中两孩性别独立,男孩女孩各 1/2;随机抽取两孩家庭,再筛选“至少一个男孩”。
结论:按长幼顺序,剩下 BB、BG、GB 三种等概率情况,两人都是男孩的概率为 1/3。
变体:若已知老大是男孩,答案为 1/2;若随机观察一名孩子,看到男孩,另一名是男孩也为 1/2。
“至少一个是男孩”这句话本身不足以确定抽样机制,问法和信息获取方式都要写清。
展开原理
按家庭筛选时,BB、BG、GB、GG 各占 1/4,排除 GG 后 BB 占 1/3。随机观察一名孩子则不同:BB 家庭必然让你看到男孩,BG、GB 只有一半机会,因此观察到男孩后,BB 的权重变为 1/2。
疾病检测与假阳性
Base Rate & Bayes 基准率与后验概率
假设参数:患病率 1%,灵敏度 99%,假阳性率 5%。
按万人计:患病 100 人中 99 人阳性;健康 9,900 人中 495 人阳性。
结论:全部 594 名阳性者中有 99 名患病,后验概率为 1/6,约 16.7%。
灵敏度是“已患病者检出阳性的概率”,不能直接当成“阳性者患病的概率”。
展开原理
令 p 为患病率、s 为灵敏度、f 为假阳性率,阳性可能来自真阳性或假阳性两条路径:
上面的数字是用于计算条件概率的假设例子。分母必须包含来自健康人群的假阳性,不能只看检出率。
圣彼得堡悖论
St. Petersburg Paradox 期望值与效用
规则:反复抛公平硬币,首次正面出现在第 k 次时,奖金为 2 的 k 次方。
结论:每种结果对期望的贡献都为 1,因此理想模型中的数学期望无穷大。
理解:期望奖金与期望效用是不同的评价。只对奖金取对数时,确定性等价为 4。
“4”依赖特定效用模型;考虑初始财富、入场费或兑奖上限后,不能把它当成通用票价。
展开原理
首次正面恰在第 k 次的概率为 2 的负 k 次方。若采用 u(X)=ln X,只评价奖金本身,则:
实际把效用施加在最终财富上时,还需要指定初始财富和费用;有限的最高奖金也会改变数学期望。
辛普森悖论
Simpson's Paradox 分组权重反转
现象:A 在每个分组中的成功率都高于 B,合并后却可能低于 B。
| 分组 | A 成功 / 总数 | B 成功 / 总数 |
|---|---|---|
| 简单组 | 4/5 = 80% | 350/500 = 70% |
| 困难组 | 20/100 = 20% | 1/10 = 10% |
| 合并 | 24/105 ≈ 22.9% | 351/510 ≈ 68.8% |
核查分组与权重,也要结合抽样设计和因果关系;不能机械认定分组结果总比总体结果更真实。
展开原理
合并成功率是各组成功率的加权平均。A 有 100/105 的样本来自困难组,B 有 500/510 来自简单组,两组采用了不同权重,因此总体排序可以反转。若对 A、B 使用完全相同的非负分组权重,每组都较高的一方在加权后仍会较高。
数字谜题与搜索
先固定允许的运算与动作,再选择枚举、同余、递推、二分或最优停止。
24 点
24 Game 穷举表达式树
规则:四个数各用一次,使用加、减、乘、除和括号,目标为 24;中间可出现分数或负数。
方法:反复选择两个数合并为一个结果,递归搜索;减法、除法要考虑两个顺序,除数不能为 0。
例子:3、3、8、8 可组成 8÷(3−8÷3)=24。
使用有理数精确运算,避免浮点误差;不要只搜索一种括号结构。
展开原理
四个操作数共有 5 种二叉括号结构。未去重的枚举上界为 4!×4³×5=7,680,包含重复式和除零等无效式。
将牌面记为 1~13、忽略花色、允许重复,四数多重集合共有 1,820 种。在仅用四则运算和括号的规则下,以有理数穷举可得 1,362 种有解、458 种无解;这些组合在真实抽牌中并不等概率。
韩信点兵与中国剩余定理
Chinese Remainder Theorem 同余方程组
问题:人数除以 3 余 2、除以 5 余 3、除以 7 余 2,求最小正整数解。
结论:最小正解为 23;全部整数解为 23+105k,其中 k 为整数。
原理:模数两两互质时,同余方程组在模数乘积的意义下有唯一解。
模数必须为正;若不互质,需先检查余数在各公因子模下是否兼容。
展开原理
70 在模 3 下等于 1,在模 5、7 下等于 0;21 对模 5 起同样作用;15 对模 7 起同样作用。因此 2×70+3×21+2×15=233 满足全部条件,减去两倍 105 得到 23。模数不互质但条件兼容时,解的周期改为模数的最小公倍数。
约瑟夫环
Josephus Problem 递推与编号
规则:n 人编号 1~n 围成一圈,从 1 号开始报 1,报到 k 者出局,下一人重新报 1。
结论:k=2 时有上面的闭式;41=32+9,因此幸存者为 2×9+1=19。
通用方法:逐步从 1 人递推到 n 人即可求任意 k 的幸存编号。
先约定从谁开始、如何报数,以及编号从 0 还是 1 起;不同约定会改变结果。
展开原理
使用从 1 开始的编号,递推关系为:
若使用从 0 开始的编号,则初值为 0,每轮对“上一轮结果加 k”取模。k=2 时,也可将 n 的二进制最高位 1 移到末尾;41 的 101001₂ 变为 010011₂,即 19。
猜数字与二分
Binary Search 一问一比特
问题:秘密整数在 1~N 中,每次可问一个答案可靠的是非问题。
策略:询问“是否大于当前区间中点”,每次将候选范围尽量减半。
结论:最坏至少需要向上取整的 log₂N 问,二分可达到此下界;1~1,000 只需 10 问。
这里计算的是二元问答次数。允许的回答类型或存在回答错误时,模型和界限会改变。
展开原理
q 个二元答案最多区分 2 的 q 次方种情况;要区分 N 个整数,必须满足 2^q≥N。二分将两条分支的候选数量尽量平衡,因而达到这一最坏情况的下界。这也给出了 1 比特信息的直观含义。
秘书问题
Secretary Problem 最优停止
条件:总人数 n 已知、到达顺序随机、能力无并列;只能比较已见者的相对名次,每次取舍不可撤回,目标是选到全体最佳。
策略:先跳过前 r 人并记住最高水平,之后选第一个超过此前所有人的候选人;若始终没有,则选最后一人。
结论:n 很大时 r 约为 n/e,成功率趋于 1/e≈36.8%;n=10 时最优跳过 3 人,成功率约 39.9%。
37% 是渐近规则;未知总数、可回头或收益目标不同的找房等场景,不能直接套用。
展开原理
若最佳者出现在第 k 位,策略成功的条件是前 k−1 人中的最佳者落在最初跳过的 r 人中。对最佳者的位置求和,可得有限 n 下的成功率:
对整数 r 逐一求最大值即可,不必强行向下取整 n/e。大样本令 x=r/n,成功率近似为 −x ln x,在 x=1/e 处达到最大。
水罐问题
Water Jug 最大公因数与搜索
规则:容量 a、b 为正整数,两桶初始为空;可装满、倒空,或互倒至源桶空或目标桶满,水源充足。
判定:要在其中一桶量出 c 升,必须且只需满足 gcd(a,b) 整除 c,且 c 不超过较大桶容量。
例子:3 升、5 升桶量 4 升,最短可用 6 步;图中状态按(3 升桶,5 升桶)记。
若目标改为“两桶合计 c 升”,或不能倒掉水,就要重新定义目标和合法动作。
展开原理
合法动作始终保持两桶水量为 gcd(a,b) 的整数倍,因此整除条件是必要的;贝祖定理及反复互倒给出可达性。求最少步骤时,把状态 (x,y) 看作图上的节点,以一次装满、倒空或互倒为一条边,从 (0,0) 做广度优先搜索;等成本边的 BFS 会给出最短方案。
常用符号
| 符号 | 快速解释 |
|---|---|
| ⊕ | 按位异或,不是普通加法 |
| mex | 未出现的最小非负整数,如 mex{0,1,3}=2 |
| ⌊x⌋、φ | 向下取整;黄金分割数 φ=(1+√5)/2 |
| T、R、P、S | 单方背叛、共同合作、共同背叛、单方合作的收益 |
| δ | 未来收益的折现因子,0≤δ<1 |
| P(A∣B) | 已知 B 成立时 A 的条件概率 |
| E[X]、CE | 随机变量的期望;给定效用模型下的确定性等价 |
| gcd(a,b) | a、b 的最大公因数 |
| x≡a (mod m) | x 除以 m 的余数与 a 相同 |
| e | 自然对数的底,约 2.71828 |
先检查这六件事
- 胜负规则:最后行动者胜还是负?
- 行动限制:每回合能动几堆、取多少,是否受上一手影响?
- 信息与顺序:同时还是轮流,终点是否已知?
- 收益与偏好:金币、存活、投票门槛和惩罚方式是否写明?
- 概率模型:随机顺序、独立、均匀、基准率和信息获取方式是否成立?
- 搜索目标:求任意解、最短方案,还是最大化选中最佳者的概率?
计算与实现
| 任务 | 实现方法 | 关键条件 |
|---|---|---|
| 尼姆判定与制胜手 | 对各堆异或,再扫描一遍寻找可减小的堆 | 固定字长整数下,时间 O(堆数),额外空间 O(1) |
| 巴什判定 | 求 n 除以 m+1 的余数 | 允许取数恰为连续的 1~m |
| 威佐夫判定 | 排序,求差 k,再计算 ⌊kφ⌋ | 大整数应避免浮点舍入误差 |
| 斐波那契尼姆 | 贪心求不相邻斐波那契分解的最小项 | 同时记录本回合的取数上限 |
| 一般有限 SG 游戏 | 把局面看作无环图,记忆化计算后继的 mex | 实际开销由状态数、后继数和 mex 的实现决定 |
| 生日概率 | 顺序累乘“全部不同”的概率,再取补集 | n≤365 时 O(n);更大 n 直接为 1 |
| 24 点 | 选两数合并并递归,或枚举 5 种括号结构 | 用有理数处理分数和除零;可按状态去重 |
| 中国剩余定理 | 扩展欧几里得求逆元并合并同余式 | 互质用乘积周期;非互质先检验兼容性 |
| 约瑟夫环幸存者 | 一维递推 | 通用 O(n) 时间、O(1) 额外空间,不必模拟完整圈 |
| 猜数字 | 维护闭区间,每问剔除约一半候选 | O(log N) 个可靠的二元问题 |
| 秘书问题阈值 | 反向累计调和和,比较各个整数 r | O(n) 时间;n 很大时使用约 n/e 的近似 |
| 两桶最短量水方案 | 对整数状态 (x,y) 做 BFS | 状态数至多 (a+1)(b+1),动作成本必须相同 |
参考与延伸阅读
- Ben Lynn:Nim 与 Grundy 值
- Yale:Nim 与异或判定
- Allen 与 Ponomarenko:Fibonacci Nim 的制胜手
- Gabriel Nivasch:Wythoff’s Game
- IMSc:The Game of Chomp
- Yale Open Courses:重复博弈与可信惩罚
- Berkeley:Monty Hall 的主持人规则与条件概率
- Harvard:概率、贝叶斯、生日问题与蒙提霍尔
- Blitzstein 与 Hwang:条件概率与辛普森悖论习题解
- MIT:数论、状态机与离散概率教材
- Ferguson:经典秘书问题与有限时域最优停止
- 算法复杂度速查表 · Python 3 速查表