公平组合游戏:双方操作形式相同,先手操作一次后相当于交换先后手。
Part 1 Nim 游戏
有 个非负整数 ,双方轮流选择一个 并将 减少任意正整数,不能操作者输。
先抛结论,先手必胜当且仅当 。
证明考虑归纳,显然 的状态满足该结论。假设对于某个状态 ,已经证明其能到达的所有状态(满足 且和 不相同的状态 )满足该结论,那么设当前异或和为 :
- 若 那么无论怎么操作都会到达异或和不为 的状态,即当前状态先手必败;
- 否则设 为 的二进制最高位,那么一定存在某个 满足 该位也为 ,那么有 ,所以先手可以通过将 修改为 来到达异或和为 的状态,即当前状态先手必胜;
即 也满足该结论,证毕。
Part 2 DAG 走路游戏和 SG 定理
有一个有向无环图,初始某个点上有一个棋子,双方轮流沿着有向边推动棋子,无法操作者输。
几乎所有公平组合游戏都能转换为该游戏。
对于节点 ,设 ,其中 是 的所有后继节点, 表示最小的不在集合 中的非负整数。
特别的,若 没有后继节点,则 。
SG 引理断言:
多个棋子情况下,棋子集合为 的 DAG 走路游戏先手必胜当且仅当 。
证明考虑归纳,边界情况显然满足。
对于 的所有后继 ,显然 ,且走到 的 是没有意义的,因为可以走回某一个 的 。
由于 都存在一个 满足 ,所以这就是一个 Nim 游戏,根据 Nim 游戏的结论即可证明 SG 引理。
同理,有推论:
SG 定理:多个棋子情况下,棋子集合为 的 DAG 走路游戏满足 。
证明依旧是归纳,边界情况显然成立。
对于一个状态 ,显然 是无法达到的,而对于 的 ,证明类比 Nim 游戏结论的证明,这些 一定都能达到,故 。
Part 3 一些特殊的游戏
3.1 二分图游戏
有一个二分图,初始有一个棋子在 ,每次可以将棋子移到相邻的点,不能移动到重复的点,无法操作的人输。
结论
定理 3.1:一个点 先手必胜当且仅当其在所有最大匹配中。
证明
首先若 不和任何点相连时显然满足定理 3.1。
先手必败情况证明:
考虑若存在某个最大匹配 ,满足 不在 中,那么与 有边相连的点 ,一定都在匹配 中(否则 可以加入匹配 ),那么后手只要每次移动到 中对应匹配点上即可。
先手必胜情况证明:
若 在所有最大匹配中,那么先手可以随便选择一个最大匹配 ,从 走到其匹配点 ,并把匹配 删掉。
由于 在所有最大匹配中,所以此时 一定还是最大匹配,而 不在匹配 中,故是先手必败情况。
判断一个点是否在所有最大匹配中是简单的,只要删掉这个点跑一次最大匹配和删点前的最大匹配比较即可。
如果要判断每个点是否在所有最大匹配,那么可以跑网络流,再判断能否退流。具体的,对于匹配 ,判断是否存在 到 的路径即可,若有则 不在所有最大匹配中。
3.2 翻转黑白棋游戏
局面上有一些黑白棋,棋子总数不变,每次操作形如:
- 若 为白色则可以翻转满足 的集合 中棋子的颜色( 为集合组成的集合);
操作保证不能无限进行,终止局面为全黑。
结论
定理 3.2:用白棋位置的集合来表示一个局面,则 ,即可以看作是若干个只有一个白棋的独立游戏。
证明
首先只有一个白棋的情况显然满足。
而对于一个局面 ,显然其能进行的操作为 ,故拆成独立游戏后并不影响可行的操作集合。而取反了集合 的操作相当于让总的 SG 值异或上 ,由于颜色翻转相当于异或 ,而两个 会抵消,故当前局面满足结论。