博弈论 初步
1.0 定义
1.1 公平组合游戏
-
双人,回合制
-
信息完全公开
-
没有随机因素
-
以玩家无法行动为结束且必然在有限步内结束
-
没有平局
由此可知,公平组合游戏的博弈图是有限大小的 DAG.
1.2 一些称呼
对于先手有必胜策略的状态,称为(先手)必胜态,记为 P
对于后手有必胜策略的状态,称为(先手)必败态,记为 N
如果当前状态可以转移到必败态,那么当前状态将是必胜态
如果当前状态不能转移到必败态,那么当前状态将是必败态
也就是说,一个状态是 P,当且仅当存在一个后继状态为 N(或者没有后继状态)
1.3 \(\rm mex\) 函数
\(\forall S \subseteq \mathbb{N}\) 定义 \(\mathrm{mex}(S) = \min\{x \mid x \in \mathbb{N} - S\}\).
2.0 基本问题与定理
2.1 策梅洛定理
对于公平组合游戏的任意一个状态,要么为 P 要么为 N.
根据公平组合游戏的博弈图归纳证明
2.2 Bash Game
一个经典的公平组合游戏:有一堆 \(n\) 个石子,两个玩家轮流拿石子,规定每次至少取一个,最多取 \(m\) 个,最后取光者获胜
根据策梅洛定理,对上述问题的博弈图状态打表归纳观察得如下结论:
- 先手必败当且仅当 \((m + 1) \mid n\) 否则先手必胜。
证明只需按照转移方式按照 P, N 的定义归纳即可。
2.3 Nim Game
有 \(n\) 堆石子,数量分别是 \(a_1, a_2, \cdots, a_n\),规定每次选择一堆石子,对该堆石子最少选一个,最多不设限,取光者获胜
同样根据策梅洛定理,对上述问题的博弈图状态打表归纳观察得如下结论:
- 先手必败当且仅当 \(\oplus_{i = 1} ^ n a_i = 0\),否则先手必胜。
对于 N 态,假设取第 \(i\) 堆石子取到只剩 \(a_i'\) 个,那么整体异或和改变量 \(a_i \oplus a_i' \ne 0\) 可知 N 态一定无法转移至任何 N 态。
对于 P 态,令 \(\oplus_{i = 1} ^ n a_i = s \ne 0\) 令 \(s\) 的最高位为 \(k\),一定存在 \(i\) 使得 \(a_i\) 在第 \(k\) 位为 \(1\) 则 \(0 \le a_i \oplus s < a_i\),在第 \(i\) 堆取 \(a_i - a_i \oplus s\) 个石子即可转移到一个 N 态。
2.4 Sprague-Grundy(SG) 定理
当公平组合游戏中认为不能行动者失败时,存在一个状态函数 \(\mathrm{SG}(A)\) 对所有状态满足:
- \(A\) 为 N 态当且仅当 \(\mathrm{SG}(A) = 0\)
- \(\mathrm{SG}(A) = \mathrm{mex}(\{\mathrm{SG}(B) \mid A \to B\})\)
- 若局面 \(A\) 能分为若干个互相独立的子状态 \(A_1, A_2, \cdots A_k\) 则:\(\mathrm{SG}(A) = \oplus_{i = 1} ^ k \mathrm{SG}(A_i)\)
首先不难发现 \(\rm SG\) 函数可以用 \(\rm dp\) 的方式构造,对于没有后继状态的状态 \(A\) 有 \(\mathrm{SG}(A) = \mathrm{mex}(\varnothing) = 0\) 为 N 态。
否则,根据性质二构造:\(\mathrm{SG}(A) = \mathrm{mex}(\{\mathrm{SG}(B) \mid A \to B\})\) 下面证明这个构造得出的函数满足性质一三。
性质一:按照博弈图归纳显然。
性质二:根据归纳,等价于证:对于任意的正整数序列 \(a_{1 \sim k}\) 有 \(\mathrm{mex}(\{\oplus_{i = 1} ^ k b_i \mid \forall 1 \le i \le k, \exists 1 \le i \le k, b_i < a_i, \forall j \ne i, b_j = a_j\}) = \oplus_{i = 1} ^ k a_i = s\)
\(s\) 取不到证明与 Nim 游戏一致,\(\forall s' < s, s'\) 存在等价于 \(\exists i, a_i > a_i \oplus (s \oplus s')\).
令 \(s\) 与 \(s'\) 从高到低第一个不相同的位置为 \(p\),因为 \(s' < s\) 则 \(s\) 在该位为 \(1, s'\) 在该位为 \(0\),此时 \(s \oplus s'\) 最高位也为 \(p\),因为 \(s\) 在 \(p\) 上为 \(1\) 那么一定存在一个 \(a_i\) 使得 \(a_i\) 在第 \(p\) 位也为 \(1\),然后与 Nim 游戏一致。
2.5 威佐夫博弈
有两堆大小分别为 \(a, b\) 的石子,先手后手轮流取石子(至少一个),每次可以取出一堆中的任意数量石子,或在两堆中取出相同数量的石子,不能取者失败
我们记 \((a_i, b_i)(a_i \le b_i)\) 为一组 N 态,将所有 N 态按照以 \(a_i\) 为第一关键字,\(b_i\) 为第二关键字排序得到一个二元组序列,有:
- \(a_i = \mathrm{mex}(\{a_1, b_1, a_2, b_2, \cdots, a_{i - 1}, b_{i - 1}\}), b_i = a_i + i\)
证明:对于任意的 N 态,发现一个 \(a\) 仅有可能与一个 \(b\) 匹配,反之亦然,那么单独取一堆石子显然不可能到达另一个 N 态。
若在两堆同时取石子,则两堆差值不变,但显然差值为 \(i\) 的 N 态是唯一的,因此 N 态不可能能转移到 N 态。
记 \(b - a = d\),若 \(a \ne \mathrm{mex}(\{a_1, b_1, a_2, b_2, \cdots, a_{d - 1}, b_{d - 1}\})\),下面证 \((a, b)\) 可以转移到一个 N 态。
若 \(a > a_d\) 则在 \(a, b\) 中同时取出 \(a - a_d\) 即可。
否则 \(a \in \{a_1, b_1, a_2, b_2, \cdots, a_{d - 1}, b_{d - 1}\}\),分两种情况讨论:
- 若 \(a = a_i\) 则定有 \(b_i = a_i + i = a + i < a + d = b\) 则直接在 \(b\) 中取出 \(d - i\).
- 若 \(a = b_i\) 则定有 \(a_i \le b_i = a < b\) 则直接在 \(b\) 中取出 \(b - a_i\).
2.5.1 Betty 定理
对于两个无理数 \(x, y\),若其满足 \(\frac{1}{x} + \frac{1}{y} = 1\),令两个集合 \(P = \{p \mid p = \lfloor nx\rfloor n \in \mathbb{N ^ *}\}, Q = \{q \mid q = \lfloor ny\rfloor n \in \mathbb{N ^ *}\}\),定理指出:
定理等价于:对于任意的 \(k \in \mathbb{N ^ *}\) 有 \(k \in P \vee k \in Q\) 且二者不同时成立。
先证前者,反证法:假设存在 \(k, k \notin P, k \notin Q\) 则:\(\exists n, m, nx < k < (n + 1)x - 1, my < k < (m + 1)y - 1\).
移项得:\(\frac{k + 1}{n + 1} < x < \frac{k}{n}, \frac{k + 1}{m + 1} < y < \frac{k}{m}\) 继而有:\(\frac{n + m}{k} < \frac{1}{x} + \frac{1}{y} < \frac{n + m + 2}{k + 1} \Rightarrow \frac{n + m}{k} < 1 < \frac{n + m + 2}{k + 1}\)
则 \(n + m > k - 1, n + m < k\) 矛盾。
类似地可以证明前者。
2.5.2 威佐夫博弈在 Betty 定理下的形式
将 N 态分 \(a, b\) 写成两个序列 \(A, B\),发现这两个序列满足 \(A \cap B = \varnothing, A \cup B = \mathbb{N ^ *}\),那么可以猜想存在两个无理数 \(x, y\) 其生成的两个正整数集合 \(P, Q\) 来刻画 \(A, B\).
由于 \(b_i = a_i + i\) 猜想是否存在 \(y = x + 1\),联立 \(\frac{1}{x} + \frac{1}{y} = 1\) 解得:
那么根据归纳一定有:\(a_i = \lfloor \frac{1 + \sqrt{5}}{2}i \rfloor, b_i = \lfloor \frac{3 + \sqrt{5}}{2}i \rfloor\),即可 \(\mathcal{O}(1)\) 判定一个状态是否为 N 态。
2.6 斐波那契博弈
有一堆 \(n\) 个石子,先手后手轮流取,先手一开始可以取任意多个但不能取完,以后每次取的人不能超过上一个人的两倍,不能取者失败
- 先手必败当且仅当 \(n\) 为斐波那契数
证明先略过,在下面的 3.5.2 中给出。
3.0 经典模型
3.1 Nim 游戏变种
3.1.1 阶梯 Nim
有 \(n\) 堆石子 \(a_1, \cdots, a_n\),规定每次选中一堆石子 \(i\),从其中选择至少一个石子移动到 \(i − 1\) 位置(最后石子都堆在 \(0\) 位置,\(0\) 位置无法被选择),取光者胜利
- 对于任意的状态 \(A\),有:$\mathrm{SG}(A) = a_1 \oplus a_3 \oplus a_5 \oplus \cdots $
证明:与 \(\rm SG\) 函数的证明基本相同。
3.1.2 Moore’s Nim
有 \(n\) 堆石子,数量分别是 \(a_1, a_2, ..., a_n\),规定每次选择至多 \(k\) 堆石子,对这些堆石子中的每一堆最少选一个,最多不设限,取光者获胜
- 先手必败当且仅当对于二进制下每一位,石子中该位个数为 \(1\) 的数的个数为 \(k + 1\) 的倍数。
证明:假设取出第 \(i_1, i_2, \cdots i_m\) 这些堆中的石子至 \(b_{i_1}, b_{i_2}, \cdots b_{i_m}\).
反证法,假设一个 N 态能到另一个 N 态,因为至多选 \(k\) 堆石子,那么每一位上为 \(1\) 的个数只能不变。
此时我们从高位往低位归纳证明,只有所有数在每一位上没有任何变化才能出现这样的情况。
对于最高位,显然不能出现有数 \(0 \to 1\) 这样这个数就会变大,所以只会出现有数 \(1 \to 0\) 但一旦出现了这种情况,这一位上 \(1\) 的个数和就不可能保持不变,因此这一位上所有数不会改变。
接下来假设 \(i + 1\) 到最高位所有数都没有任何改变,考虑第 \(i\) 位,同样发现不可能存在 \(0 \to 1\) 的情况,归纳完毕。
此时只需证任意的 P 态能到达 N 态即可。
同样按照从高位到低位构造,如果当前位 \(1\) 的个数为 \(k + 1\) 的个数,那么直接跳过。
否则我们的策略是尽可能将 \(1 \to 0\) 以保证数字变小,注意到如果某个位置 \(1 \to 0\) 后那么后面的位就可以任意操作。
那么如果我们将一个位 \(1 \to 0\) 那么就将他后面的位全部变成 \(1\) 来保证接下来有充足的 \(1\) 可以选,这样总是能使得每一位 \(\equiv 0 \bmod (k + 1)\).
3.1.3 Rest Nim
有 \(n\) 堆石子 \(a_1, \cdots, a_n\),规定每次选中一堆石子 \(i\),取走至少一个石子之后,将剩下的石子划分成若干堆,取光者胜利
- 本题状态的 \(\mathrm{SG}\) 函数与 Nim 游戏的 \(\rm SG\) 函数一致。
证明:根据 \(\rm SG\) 函数性质三,只需证一堆石子的 \(\rm SG\) 函数为石子数量即可。
按照石子数量归纳,假设目前求 \(n\) 个石子的 \(\mathrm{SG}(n)\),首先不使用划分操作,可以得到 \(0 \sim n - 1\) 这些 \(\rm SG\) 值。
继而只需证:\(\forall n, k, a, a_i \in \mathbb{N ^ {*}}, \sum\limits_{i = 1} ^ k a_i < n, \oplus_{i = 1} ^ k a_i \ne n\)
令 \(n\) 的最高位为 \(p\),若 \(\forall 1 \le i \le k, a_i < 2 ^ p\) 则显然不可能。
否则按照 \(n\) 从小至大归纳:可知这样的 \(a\) 至多只有一个,于是原问题若成立则等价于 \(n\) 去掉最高位后的数成立,矛盾。
3.1.4 网格 Nim
有一个 \(n \times m\) 的网格,每个格子里面有一堆石子,规定每次选中一堆石子 \((i, j)\),从其中选择至少一个石子移动到 \((i − 1, j)\) 位置或者 \((i, j − 1)\) 位置(注意不能移出网格,也就是说,最终所有石子都会落到 \((1, 1)\) 处),不能操作者失败
考虑一维的情况,就是阶梯博弈。
注意到阶梯博弈的本质是考虑了每次棋子移动的通性,在这里,如果将棋盘按照 \((i, j), i + j\) 的奇偶性进行黑白染色,每次棋子的移动一定在黑白子之间。
因此这个问题有:\(\mathrm{SG}(A) = \oplus_{i = 1} ^ n \oplus_{j = 1, 2 \mid (i + j)} ^ m a_{i, j}\) 证明与阶梯博弈一致。
3.2 删边游戏
3.2.1 树上删边游戏
给定一棵有根树,Alice 和 Bob 轮流删去一条边,删去一条边后,与根节点不相连的部分被删除,无法操作者失败
根据 \(\rm SG\) 函数性质三,我们目标求出一颗子树的 \(\rm SG\) 值,只需要知道一颗子树带上与根连接的一条 孤立边 的 \(\rm SG\) 值。
前者由后者得到,我们考虑后者如何有前者得到即可得到仅关于子树 \(\rm SG\) 值之间的递推式。
记一棵树为 \(T\),根带上一条孤立边后为 \(T'\) 其实就等价于将 \(T\) 的根与一个新建虚点相连,以虚点为根的树的 \(\rm SG\) 值。
根据打表观察我们得到:\(\mathrm{SG}(T') = \mathrm{SG}(T) + 1\),证明是容易的,因此我们可以知道子树之间 \(\rm SG\) 值的转移:
这个性质称为克朗原理(Colon’s Principle)
3.2.(1.5) 带环树删边游戏
给定一个无向联通图,保证这个联通图由一棵树加上若干个只与这棵树有一个交点的简单环构成,Alice 和 Bob 轮流删去一条边,删去一条边后,与给定关键点 \(x\) 不相连的部分被删除,无法操作者失败
考虑求出这个仙人掌的一颗生成树,对于带环的点 \(u\) 按照环大小的奇偶性分类:
- 若 \(u\) 带的环大小为偶数,那么删去环上任意一条边后一定分为两个奇偶性不同的链,\(\mathrm{SG} = 0\).
- 若 \(u\) 带的环大小为奇数,那么删去环上任意一条边后一定分为两个奇偶性相同的链,\(\mathrm{SG} = 1\).
于是可以直接将偶环缩成一个点,奇环缩成一个点带上一条孤立边加一个点,转化为树上删边游戏。
3.2.2 无向图删边游戏
给定一张无向联通图,存在一个关键点 \(x\),每次删去一条边,和 \(x\) 不相邻的部分被删除,不能操作者失败
我们拓展 3.2.(1.5) 中的做法,有如下事实:
- 将偶环替换成一个新点,奇环替换成一个新点连出一条边,原图中连向环的边全部连向新点,图的 \(\rm SG\) 值不会改变
这个性质称为:融合原理(Fusion Principle)
进一步地,我们可以得到如下推广:
- 对于一个边双连通分量,其 \(\mathrm{SG}\) 值只与其边数的奇偶性有关,偶数则为 \(0\) 奇数则为 \(1\)
因此我们可以将边双联通分量按照边的奇偶性缩成一个点或一个点加一个孤立边和点,同样转化成了树上的问题。
以上的融合原理和推广证明非常复杂,在此略过不证。
3.3 无向图游走游戏
3.3.1 无向图游走游戏
给定一个无向图 \(G\),初始有一个棋子在 \(s\),轮流操作,每次选择一条边,让棋子沿着这条边走过去,之后删除之前所在节点,不能操作者失败
- 先手必胜当且仅当 \(s\) 在所有最大匹配当中
充分性:取 \(G\) 的任意一个最大匹配 \(M\),先手的决策是每次走到该点在最大匹配上的匹配点。
后手只能走到 \(M\) 上的一个匹配点,否则将这条交错路取反可以得到一个 \(s\) 不在其中的最大匹配 \(M'\),矛盾。
这样一来先手一定存在一种必胜策略,接下来考虑必要性。
若存在一个最大匹配 \(M, s\) 不在其中,则先手第一步一定会走到一个在 \(M\) 中的点,否则存在一条增广路,矛盾。
接下来后手一定可以走到 \(M\) 当中的匹配点,先手还是只能走到 \(M\) 内,否则类似地可以推出矛盾。
3.3.2 (选择起点)无向图游走游戏
给定一个无向图 \(G\),初始有一个棋子,第一轮中,先手可以选择将 \(s\) 置于任意节点,之后,后手先手轮流操作,每次选择一条边,让棋子沿着这条边走过去,之后删除之前所在节点,不能操作者失败
- 先手必败当且仅当 \(G\) 存在完美匹配
根据 3.3.1 易证
3.3.3 树上游走游戏
给定一棵树 \(T\),先手选择一个点 \(s\),放下一个棋子,后手先手之后轮流操作,如果当前棋子在 \(s\),那么操作者可以选择一个还没有被删除的,在树 \(T\) 中 \(s\) 的祖先节点和子树节点转移过去,之后删去 \(s\),不能操作者失败
\(|T| ≤ 10 ^ 6\)
将所有 祖先-子孙 边链上,问题等价于这张图是否存在完美匹配。
注意到一个点 \(u\) 与子树内所有点 \(v\) 之间都有边,令 \(f_u\) 为以 \(u\) 为根的子树内至少还需要多少个祖先与之匹配才能构成完美匹配,转移显然,复杂度线性。
3.4 翻硬币游戏
有 \(n\) 枚硬币排成一排,有的正面朝上,有的反面朝上,我们从左至右依次将每个硬币标号为 \(1 \sim n\)。先手后手轮流操作,每次一个人按照某种约束翻硬币(比如一次翻的数量有限制,或翻的位置连续等),但为了保证游戏在有限次操作内结束,强制规定 每次最右侧翻转的硬币必须是从正面翻转到反面,不能操作者失败。
在这个公平组合游戏当中,存在结论:
- 任意局面 \(A\) 的 \(\mathrm{SG}\) 值为单独考虑每个正面向上的硬币单一存在(将其他硬币全部设置为向下)时 \(\mathrm{SG}\) 值的异或和。
首先,考虑这么一个转化问题:有 \(n\) 个格子,一开始有些格子里有球,有些没有球,每次将最靠右的有球的格子去掉一个球,然后按照要求在左边的一些格子加入一些球。
我们可以归纳证明,这个问题的 \(\rm SG\) 值和将每个格子去掉尽可能多的偶数个球后对应原问题的 \(\rm SG\) 值相同
于此同时,对于这个问题而言,我们考虑将局面 \(A\) 拆分成两个局面 \(B, C\) 其中 \(B\) 为去掉最后一个有球格子里面一个球的局面,\(C\) 为仅保留那个球的局面。
此时显然两个问题独立操作后叠加的结果就是局面 \(A\) 进行任意一次操作后的结果,那么不断进行上述拆分就可以得到原本问题的结论在转化问题当中类似的结果。
此时将重复的部分抵消就可以得到原问题结论成立了。
3.4.1 通用解法
根据上面强大的性质,我们只需要求出有一个硬币在位置 \(i\) 时的 \(\rm SG\) 值即可,并且 \(\rm SG\) 的转移也是非常容易的。
因此这类问题一般而言打表非常方便,从而可以很快地得到结论,在此不再补充一些经典模型。
3.5 \(k\) 倍动态减法游戏
有这样一类问题,问题模型建立在一堆 \(n\) 个石子上:先手后手轮流从一堆石子当中取出若干石子,先手第一次取不能取光,每次取的石子数不能超过上一次取的石子数的 \(k\) 倍,不能取者失败
这类问题的难点在于这轮游戏和上一轮游戏之间是会互相影响的,因此状态并不简单地由石子数量来决定。
3.5.1 \(k = 1\)
我们首先来考虑 \(k = 1\) 的问题,有结论:
- 先手必败当且仅当 \(n\) 为 \(2\) 的幂次
当先手处于 P 态时,我们有如下必胜策略:每次取走当前石子个数 \(n\) 的 \(\mathrm{lowbit}(n)\) 个石子,下面证明这样一定必胜。
首先后手显然不可能取完所有剩下的石子,不妨设取走了 \(k(k < n - \mathrm{lowbit}(n))\) 个,那么一定有:\(\mathrm{lowbit}(n - \mathrm{lowbit}(n) - k) = \mathrm{lowbit}(k)\),那么先手下次再取 \(\rm lowbit\) 一定是可行的。
当先手处于 N 态时,首先他第一次不能取完,接下来后手能像先手在 P 态一样的操作获胜。
3.5.2 \(k = 2\)
可以发现,这就是斐波那契博弈,下面来证明其成立:
考虑 \(n\) 的齐肯多夫表示法,令 \(n = \sum\limits_{i = 1} ^ k f_{c_i}(\forall i > 1, c_i \ge c_{i - 1} + 2)\)
当先手处于 P 态时,我们运用类似 \(k = 1\) 情况中的必胜策略,每次取走最低位的 \(f_{c_1}\),下面证明接下来有类似 \(k = 1\) 的情况发生。
首先 \(c_2 \ge c_1 + 2 \Rightarrow f_{c_2} > 2f_{c_1}\),因此接下来后手一定无法取完。
其次,假设接下来后手取了 \(k = \sum\limits_{i = 1} ^ s f_{d_i}(\forall i > 1, d_i \ge d_{i - 1} + 2)\) 那么一定有 \(n - f_{c_1} - k\) 的最低位为 \(f_{d_1 - 1}/f_{d_1 + 1}\)
我们知道 \(\mathrm{lowbit}(n - f_{c_1} - k) \le f_{d_1 + 1} \le 2f_{d_1} \le 2k\) 那么接下来先手还是能每次取走 \(\rm lowbit\)
而当先手处于 N 态时,类似地可以证明其必败。
3.5.3 \(k \ge 3\)
有了 \(k = 1, 2\) 的铺垫,首先我们一样地假设 N 态构成的数列为 \(a\),下面考虑如何求 \(a\).
首先,发现 \(k = 1, 2\) 都是一个递推数列,我们猜想 \(k \ge 3\) 也是一个递推数列,首先一定有 \(a_1 = 1\).
观察 \(k = 1, 2\) 的递推式,发现都包含 \(i - 1\) 项,这为下面的找规律打下了基础。
接着借助打表,我们不难得到如下结论:
这个结论的证明可以直接由拓展得到,在此不做这个特殊化结论的证明。
但我可能有一个猜想?可能这样形式的递推数列都有与齐肯多夫定理类似的分解定理存在?
3.5.4 拓展
有一堆 \(n\) 个石子:先手后手轮流从一堆石子当中取出若干石子,先手第一次取不能取光,假设上一轮对方取了 \(x\) 个石子,则这一轮取的石子数不能超过 \(f(x)\),其中 \(f\) 是一个函数:\(f : \mathbb{N ^ *} \to \mathbb{N ^ *}\) 且 \(f\) 不降。
- 同样的,假设 N 态构成数列为 \(a\),有 \(a_1 = 1\) 且:
- 若 \(\exists i, f(a_i) < a_i\) 则 \(a_i\) 是最后一个 N 态。
首先证明性质一成立。
一方面,我们证明 \(\forall x < a_p, a_{i - 1} + x\) 都是 P 态。
若 \(x\) 为必败态,那么 \(f(x) < a_{i - 1}\),那么先手直接取掉 \(x\) 个,接下来留给后手的一个局面是:必败态 \(a_{i - 1}\),且初始能取的数还小于 \(a_{i - 1}\),显然此时后手必败。
若 \(x\) 为必胜态,那么我们让先手控制到类似第一种情况的局面发生,首先让先手后手将 \(x\) 个石子取完。
具体地,首先先手可以限制后手一定是恰好最后取完 \(x\) 个石子中最后一个的一方,那么只需要存在一种后手最后一次取掉的石子 \(y\) 满足 \(f(y) < a_{i - 1}\) 即可得证。
若 \(f(y) \ge a_{i - 1}\) 因为 \(y < a_p\) 则 \(y\) 一定不是一个 N 态,否则 \(p\) 会减小。
那么 \(y\) 一定是一个 P 态,先手可以使用 \(y\) 的必胜策略使得最后拿走的石子数 \(< y\) 来不断调整。
另一方面,我们证明 \(a_{i - 1} + a_p\) 是 N 态。
首先先手一定不会直接取掉不少于 \(a_p\) 个数,否则后手可以直接取完剩下所有数。
假设先手一开始取了 \(x(x < a_p)\) 个数,由于 \(a_p\) 是 N 态,后手一定存在策略使得先手后手先取完了 \(a_p\) 然后将剩下 \(a_{i - 1}\) 个局面让给先手来取。
假设后手在取完 \(a_p\) 个石子中的最后一个石子时取了 \(y\) 个石子,若 \(f(y) \ge a_{i - 1}\) 那么一定有 \(a_{p - 1} < y < a_p\)
此时后手可以类似与第一部分证明中的方法调整使得最后获胜。
对于性质二:按照石子数量归纳,首先 \(a_i + 1\) 一定为 P 态。因为 \(f(1) \le f(a_i) < a_i\),因此先手直接取 \(1\) 即可。
接下来考虑证明任意的 \(a_i + x\) 都为 P 态,前提是 \(a_i + 1, a_i + 2, \cdots a_i + x - 1\) 都是 P 态。
若 \(x \le a_i\),那么开始直接取走 \(x\),满足 \(f(x) \le f(a_i) < a_i\) 后手一定必败。
否则,根据归纳可知 \(x\) 一定为 P 态,因此先手一定可以保证双方先取完 \(x\) 且 \(x\) 中最后一个石子由先手取走,假设先手最后取走了 \(y\)。
若 \(f(y) \ge a_i \Rightarrow y > a_i\) 根据归纳 \(y\) 也是一个 P 态,同样类似可以调整使得先手获胜。
3.6 Every SG 游戏
这类问题一般模型是:若干个互相独立的子公平组合游戏,先手后手轮流操作,每次操作如果存在一个子游戏没有停止这个游戏就必须操作,不能操作者失败
首先,我们有观察:
- 对于每个子游戏,若先手必胜,则先手一定会按照一种必胜方式走;若先手必败,后手一定会按照一种必胜方式走
考虑前者,后者类似。
首先对于先手来说,最后一定是让自己赢,如果存在某个时刻先手走到了 P 态,并且根据先手的策略,此时在全局权衡下能让后手放弃让自己赢是不可能的,因为后手让自己赢也是对称的策略,所以这样一来最后赢的必定是后手,与假设矛盾。
- 对于 P 态的子游戏,先手一定会尽可能拖延时间,后手一定会加速结束;对于 N 态的子游戏,先手一定会加速结束,后手一定会拖延时间
同样仅考虑前者,后者类似。
如果先手并没有拖延时间,而后手在能拖延的地方尽可能拖延了时间,这样对先手显然不优,因为最后结束的游戏决定谁会胜出。
这样一来,对于每个子游戏它的运行时间都是确定且有限的,可以用 \(\rm dp\) 求出,令 \(f_u\) 为状态 \(u\) 的运行时间,则:
那么显然最后先手必胜当且仅当运行时间最长的子游戏时间为奇数