suxxsfe

一言(ヒトコト)

博弈论总结

SG 定理

设游戏可以表示为有向无环图 \(G=(V,E)\),规定其中不存在平局,必胜态为其可以转移到一个必败态
那么对于其中某一状态 \(X\in V\),定义其 \(SG\) 函数值为:

\[SG(X)=\operatorname{mex}\{SG(Y)\},(X,Y)\in E \]

据此,状态 \(X\) 是先手必败当且仅当 \(SG(X)=0\)

归纳证明:假设定理对于当前的 \(G\) 成立,那么新加入一个状态 \(X\),若 \(SG(X)>0\),则必然存在一个 \(Y\) 使得 \(SG(Y)=0,(X,Y)\in E\),转移到一个必败态符合定义
\(SG(X)=0\),则无出边或任意的 \((X,Y)\in E\) 都有 \(SG(Y)>0\),则为必败态

游戏的复合

定义游戏 \(X,Y\) 的复合是 \(X+Y\),其中 \(X,Y\) 互相不影响且都在游戏 \(X+Y\)
对于游戏 \(X=X_1+\cdots+X_n\)\(SG(X)=\operatorname{XOR}_{i=1}^n SG(X_i)\)
证明:设 \(b=\operatorname{XOR}_{i=1}^n SG(X_i)\),则只需证 \(\forall a<b,\exists X'=X_1+\cdots+X_i'+\cdots+X_n,SG(X')=a\)\(\forall X',SG(X')\neq b\)
其中,\(X'\) 表示某一由 \(X\) 转移到的状态

对于第一个式子,设 \(d=b\operatorname{xor} a\),由于 \(a<b\)\(d\) 的二进制下最高位是最高的一个 \(b\)\(1\)\(a\) 不是 \(1\) 的位
由于 \(b\) 由所有 \(SG(X_i)\) 异或而来,必然存在某一 \(X_i\) 是的 \(SG(X_i)\) 的那一位也是 \(1\),因此 \(SG(X_i)\operatorname{xor} d<SG(X_i)\)
那么也必然存在 \(SG(X_i')=SG(X_i)\operatorname{xor} d\)
于是对于 \(X'=X_1+\cdots + X_i' +\cdots X_n\),有 \(SG(X')=b\operatorname{xor} d=a\)

对于第二个式子,设 \(\exists X',SG(X')=b\)
那么设 \(X'=X_1+\cdots + X_i'+\cdots X_n\),则可得 \(SG(X_i')=SG(X_i)\),矛盾

对于为何要用异或,更深刻的说明:https://www.zhihu.com/question/51290443/answer/125105697

另一种复合形式

若干游戏,每次可以一次进行最多 \(k\) 个、最少 \(1\) 个游戏,无法进行者输

\(\operatorname{xor}\) 是二进制的不进位加法,那么设 \(a \oplus b\) 是将 \(a,b\) 用二进制表示后,进行 \(k+1\) 进制下的不进位加法
则结论是 \(SG(X)=SG(X_1)\oplus SG(X_2)\oplus\cdots\oplus SG(X_n)\)

仍然是按照上面的证法
对于每个 \(a<b\) 都有 \(SG(X')\) 可以取到 \(SG(X')=a\),可以按位考虑
对于最高的 \(a\)\(b\) 小的那一位开始,此时通过减少某些位的值(\(1\)\(0\)),一定可以使得 \(b\) 在这一位上和 \(a\) 相等
那么若 \(X_i\) 在这一位减少了至少 \(1\),那这个数后面的可以任意取,都能保证 \(SG(X_i')<SG(X_i)\),也就是一定能取到
若对于某一位这些任意取的数仍无法使得 \(a,b\) 在这一位上相等,就让其他某些数在这一位减小,讨论一下发现这样做出改变的数不会超过 \(k\)

那对于那个不存在 \(SG(X')\) 使得 \(SG(X')=SG(X)\) 的要求,仍然反证,考虑存在一个集合 \(p_1,p_2,\cdots,p_u(u\le k)\),使得 \(SG(X_{p_1}')\oplus \cdots \oplus SG(X_{p_u}')=SG(X_{p_1})\oplus \cdots \oplus SG(X_{p_u})\)
每位独立,对于任意一位,因为最多改变 \(k\) 个数,则无法使得这一位上既存在数改变,\((k+1)\) 进制下不进位加法和还不变
因此只能有 \(SG(X_{p_i}')=SG(X_{p_i})\),矛盾

对应 nim 和 nim-k

anti-SG

  • 规定决策集合为空(就是没有出边)的人赢
  • 其他规则同 SG 游戏

考虑如何复合若干个 anti-SG 游戏,有结论:

  • 其中存在某游戏的 SG 值大于 \(1\),且 \(SG(X)\neq 0\)
  • 其中不能存在某游戏的 SG 值大于 \(1\),切 \(SG(X)=0\)

一样用归纳之类的证就行
这也就是 SJ 定理

对应 anti-nim

every-SG

  • 对于所有没有结束的单一游戏,必须对其进行一步决策
  • 其他规定同 SG 游戏

显然,只有最晚结束的一个单一游戏,可以决定整个游戏的胜负
而能赢的单一游戏,必然一定要赢
因此,对于必胜的游戏,我们希望它结束的尽量晚,而对于必败的游戏,希望它结束的尽量早
那么就有了时间上的考虑:对于 SG 为 \(0\) 的状态,希望知道它最快几步结束;对于 SG 非 \(0\) 的状态,希望知道它最慢几步结束
定义 \(\operatorname{step}(X)\) 函数来描述这个步数,有:

\[\operatorname{step}(X)=\begin{cases} 0 \ (X\text{ 是终止状态}) \\ \max(\operatorname{step}(v))+1 \ ((u,v)\in E,SG(u)>0) \\ \min(\operatorname{step}(v))+1 \ ((u,v)\in E,SG(u)=0) \\ \end{cases}\]

那么最终的定理就有了:先手必胜当且仅当 \(\operatorname{step}\) 函数最大的单一游戏是奇数
显然只有是奇数的时候最后一步被先手走

其他模型

巴什博奕

\(n\) 个石子,每次取 \([1,m]\) 个,取完者胜

直接求 \(SG\),发现 \(SG(x)=x\bmod (m+1)\)

威佐夫博弈

两堆石子,每次可以从一堆中取任意个,或从两堆中分别取出相同多个,取完者胜

发现并不是简单的复合
结论是,设两堆大小是 \(x,y\),且有 \(x<y\),则先手必败当且仅当 \((y-x)\frac{\sqrt{5}+1}{2}=x\)
证明

斐波那契博弈

\(n\) 个石子,先手任意取,后面每个人取的数量不能超过上个人的两倍,取完者胜

先手必败当且仅当 \(n\) 是斐波那契数
证明

Multi-SG

此类游戏允许对于某状态,他的某一后继是由若干单一游戏复合而成
他符合基本的 SG 函数理论,所以那些又单一游戏复合而成的后继的 SG 值就是那些游戏的 SG 的异或和
而此状态的 SG 值仍然直接取 \(\operatorname{mex}\) 就行

典型例子就是 nim 游戏加上一种把某一堆石子分裂成两堆非空棋子的操作
观察一下发现此时 SG 值有结论:

\[SG\left( x\right) =\begin{cases}x-1\left( x\mod4=0\right) \\ x\left( x\mod4=1 \lor 2\right) \\ x+1\left( x\mod4=3\right) \end{cases} \]

Shannon 开关游戏

有向图,先手每次删一条边,后手每次固定一条边(不能再被删),最后后手固定的边形成一颗生成树则后手胜,否则先手胜

结论是,当且仅当原图有两棵不共边的生成树的时候,后手有必胜策略,否则先手必胜
后手的必胜策略可以简单归纳证明,先手必胜的证明需要用到拟阵

树的删边游戏

一棵以 \(1\) 为根的有根树,每次的操作是删去一条边,并拿走所有与跟不相连的点,无法删的人输

考虑子树 \(u\)\(SG\) 值,从所有儿子 \(v\)\(SG\) 转移上来的时候实际上是一堆游戏复合起来
但每个游戏都可以通过删掉边 \((u,v)\) 来一步结束
这样设原来的子树 \(v\)\(G\),那么这个一步结束可以通过从 \(v\) 再往上连一个父亲得到 \(G'\) 来等效,我们有 \(SG(G')=SG(G)+1\)
简单的证明可以归纳一下,对 \(|G|\) 归纳,若 \(|G|=1\),显然 \(SG(G)=0,SG(G')=1\)
那么考虑 \(G\) 的某后继状态 \(H\),必然有 \(|H|<|G|\),设在 \(H\) 中给 \(v\) 再往上连一个父亲得到 \(H'\),根据归纳假设,有 \(SG(H')=SG(H)+1\)
对于任意 \(0\le i < SG(G)\),必有一个 \(H\) 使得 \(SG(H)=i\),那么现在对于 \(1\le i\le SG(G)\),必有一个 \(H'\) 使得 \(SG(H')=i\)
又因为可以直接切掉 \(v\) 和父亲的边得到 \(SG\)\(0\) 的后继状态,那么有 \(SG(G')\ge SG(G)+1\)
又因为不存在 \(H\) 使得 \(SG(H)=SG(G)\),所以不存在 \(H'\) 使得 \(SG(H')=SG(G)+1\)
于是得证 \(SG(G')=SG(G)+1\)

最后的结论也就是 \(SG(u)=\operatorname{XOR}_{(u,v)\in E} SG(v)+1\)

树的删边游戏2

一棵有根树,存在某些点上面挂了一个从这个点开始、从这个点结束的环,每次删掉一条边,拿走不与根相连的部分,无法删者输

无向图删边游戏

一个无向连通图,有一个点作为图的根,每次删去一条边,把不与根相连的部分拿走,无法删的人输

MinMax 树和 Alpha-Beta 剪枝

https://blog.csdn.net/weixin_42165981/article/details/103263211

posted @ 2021-10-19 08:00  suxxsfe  阅读(110)  评论(0编辑  收藏  举报