博弈论小记
首先是经典的Nim游戏:
结论:先手必胜当且仅当石子数异或不为0
先手必败当且仅当石子数异或为 0
证明:考虑特殊情况,首先当所有石子数
为0时显然先手必败。
考虑设所有石子数异或为x,设x最高位1为
k,那么至少存在一堆石子数包含第k位,根据异
或运算的消去律,使等式两侧同时异或x,右侧
为0,而由于a ^ x < a因此一定存在这种操作,
而后手对于异或为0的局面进行操作一定无法维
持这种局面,那么最终结果即为所有石子数为0
先手必胜
Nim游戏变形一:K-Nim游戏:
游戏规则改为每次可以对若干堆石子同时
进行操作,每次操作可以取1~x堆石子
结论:先手必胜当且仅当石子数%(x + 1)不为0
先手必败当且仅当石子数%(x + 1) 为0
证明:同样的思维方式,考虑每次可以取x
堆石子,那么不妨假设两人的操作对象相同(即
两人在同一范围内进行博弈),考虑无论A的决
策是多少,B一定存在一种决策使得A,B两人取
石子总数为x +1,因此对于一堆成立,考虑先手
必败后先后手不变,先手必胜后先后手改变,设
先手必胜为1,先手必败为0,那么结论显然
例题:SDOI2011黑白棋
Nim游戏变形二:反Nim游戏:
游戏规则改为不能取石子的人获胜
结论:先手必胜:1:存在偶数堆石子且石子数为1
2:至少存在一堆石子数大于1且石子数异或不为0
先手必败:反之
证明:条件一显然
条件二考虑:
若存在一堆石子数大于1,假设剩余奇数堆
石子数为1,那么显然可以将石子数大于1全部
取走(将先手必败局面给对方),若存在偶数
堆石子,仍然可以将石子数大于1取剩1个石子
同理
考虑若存在至少两堆石子数大于1,首先若
异或为0,那么只有两种决策:1:取走任意石子
转化为异或不为0 2:取走一堆大于1的石子(
先手必胜),若异或不为0,那么一定存在一种
决策转化为上一种局面,得证
证明思路很值得学习
Nim游戏变形三:阶梯博弈
游戏规则改为:若干阶梯上有若干石子,
每次选择任意阶梯将任意石子移动到下一层
不能操作者获胜
结论:先手必胜当且仅当奇数阶梯石子数异或不为0
先手必败当且仅当奇数阶梯石子数异或 为0
证明:巧妙地转化
首先考虑奇数阶梯的结论显然,若对手操
作偶数阶梯,那么我方操作为将等量石子移动
到下一层阶梯,相当于偶数阶梯石子移动到另
一偶数阶梯,得证
(选择奇数阶梯的原因为0为偶数)
很多问题种并没有明显的“石子”,一种常用套路
为将距离,时间等转化为石子
例题:SDOI2019移动金币