【笔记】博弈论
【笔记】博弈论
0 基本概念 & 性质
0.1 博弈论
1 SG 函数
ps. 通过 SG 函数来理解三个基本模型,也是不错的选择。
1.2 定义
\(\text{SG}(x)=\text{mex}\{\text{SG}(y_i)\}\)(其中 \(y_i\) 为 \(x\) 的后继状态)
1.3 SG 定理
由 \(n\) 个博弈图组成的游戏,设起点(即每个连通分量内入读为 0 的点)分别为 \(s_{1}, s_{2}, \dots, s_{n}\)。
当 \(\text{SG}(s_{1})\oplus\text{SG}(s_{2})\oplus\cdots\oplus\text{SG}(s_{n})\neq 0\) 时,先手必胜;反之,先手必败。
1.3.1 证明
1.4 和有向图游戏的关系
如果一个有向图有多个起点,那就需要用 SG 定理了。
但是如果只有一个起点,我们关心的只有这一个起点的 SG 之是否 \(=0\),所以在求 SG 值的时候,也就可以只用求 SG 是 \(0\) 还是 \(1\)。
2 三个基本模型
2.2 布什博弈
2.2.1 概述
2.2.2 结论
若 \(m+1\nmid n\),先手必胜;反之,先手必败。
2.2.3 证明
构建决策树
3 例题
3.0 Links
3.1 取石子
Key:
本质上是求 SG 值,但是由于最终不许要用 SG 定理,于是 SG 值可以就为 0/1 表示是否先手必胜
令 \(sum=\sum a_i\)
先单独考虑操作 1:若 sum 为奇,必胜;为偶,必败。
可以发现操作 2 其实相当于某人跳过了一次操作,而不改变。
性质 1: 操作 2 就是用来浪费时间的,所以如果可以做就尽量做 。
后继状态:(当前为 \((x,y)\) 表示:全是 1 的堆数 | 其余最多操作次数 = 大于 1 的堆的总和 + 堆数 - 1,特别地,空集 = 0)
-
取走 1 个
-
取 x:\((x-1,y)\)
-
取 y:\((x,y-1)\)
ps. y 中不到最后只剩一堆的时候,不会出现堆的个数变为 1 的(性质 1),所以可以直接减。
-
-
合并
-
合两个 x:\((x-2,y+2+[y\neq 0])\)
ps. 特判 y 原先为空集。
-
合两个 y:\((x,y-1)\)
-
合一个 x 和 一个 y:\((x-1,y+1)\)
-
注意判断,从 y 转为 x 的情况。
3.2 Love this Game!(加强版)
3.3 小约翰的游戏
反 Nim 问题。
讨论:
-
全为 1:n 为偶,必胜;为奇,必败。
-
有一个不为 1:必胜。(本质上可以归类为 3)
先手一定可以通过一次操作,将状态转化为偶数个 1。
-
有多个不为 1:转化为了普通 Nim 问题
先手想要把情况变为 2,即要把不为 1 的堆拿成只剩一堆,然后让自己处理,于是就转化为了普通 Nim 问题。
4 二分图博弈
4.0 Links
https://zhuanlan.zhihu.com/p/359334008
4.1 概述
给定一个二分图,并在起点 \(S\) 上有一颗棋子,每人每轮可以将这颗棋子推一步,且不能走已走过的点,谁先不能动则输。
4.2 结论
如果对于所有的最大匹配都必须包含 \(S\),那么先手必胜;反之,后手必胜。
4.3 证明
直接看 Pecco 的知乎专栏文章 吧。
5 Green Hackenbush
我的理解是:带限制的 Nim 游戏。
5.1 概述
5.2 Principles
5.2.1 Colon Principle
对于一个节点 \(x\),如果其每个子儿子的子树都是一条链,\(x\) 的 SG 值为子儿子大小的异或和 \(S\)。
同时,这也等价于把 \(x\) 的整个子树换成长度为 \(S\) 的一条链(包括 \(x\)(由一开始 Bamboo Stalks 容易知道。
5.2.2 The Fusion Principle
任何两个环内节点都可以缩成一个点而不影响图的 SG 值。
推论: 任意一个奇环都可以缩成一条边,任意一个偶环都可以缩成一个点。
https://www.cnblogs.com/linyihdfj/p/17447123.html(需要 Ctrl+F
一下。
https://blog.csdn.net/qq_39239844/article/details/81196738(Colon Principle 证明
Trick
- 有种奇怪的感觉:最后只剩 1 的时候都比较关键。