博弈论
Nim游戏
石子模型 地上有\(n\)堆石子,第\(i\)堆石子的数量为\(a_i\),甲乙二人交替取石子,每次只能从任意\(1\)堆中取,每次至少取\(1\)个,最后没有棋子可取的人输,问是否存在先手必胜的策略
结论 先手必胜态$a_1\oplus a_2 \oplus \dots \oplus a_n\ne 0 \(;先手必败态\)a_1\oplus a_2 \oplus \dots \oplus a_n = 0 $
定理1 必胜态的后继状态至少存在一个必败态
证明:设\(a_1\oplus a_2 \oplus \dots \oplus a_n=s\ne 0\),\(s\)的二进制位为\(1\)的最高位为第\(k\)位,则\(a_1\sim a_n\)中一定有奇数个数,其二进制位第\(k\)位为\(1\),此时选择一个\(a_i\),用\(a_i\oplus s\)替换表达式中的\(a_i\),有
为必败态,因为\(^1a_i\oplus s <a_i\),这是合法的状态转移
[1]因为\(a_i\)的某位\((k\)以下\()\)会从\(1\)变成\(0\)
定理2 必败态的后继状态均为必胜态
证明:设$a_1\oplus a_2 \oplus \dots \oplus a_n = 0 $,则相同位上\(1\)的个数均为偶数。此时,无论减少哪个数,都会使得异或和不为零
必胜态与必败态交替出现,末态\((a_1=a_2=\dots=a_n=0)\)为必败态
如何取胜 如果先手必胜,第一次应该如何取
for(int i = 1 ; i <= n ; i ++)
{
if((a[i]^s) >= a[i]) continue; //没法取
a[i] = a[i]^s;
break;
}
台阶模型 有\(n\)级台阶,第\(i\)级台阶上摆放\(a_i\)个石子,每次操作可以将第\(k\)级台阶上的石子移动一些到第\(k-1\)级台阶上,移动到第\(0\)级台阶(地面)上的石子不能再移动,如果没有石子可以移动,则输掉比赛,问是否先手必胜
结论 若奇数台阶上\(a_1\oplus a_3 \oplus \cdots \oplus a_{2k-1}\ne 0\),则先手必胜,反之,先手必败
有向图游戏
模型 给定一个有向无环图(DAG),图中只有一个起点,在起点上放一个棋子,两个玩家轮流沿着有向边推动棋子,每次走一步,不能走的玩家失败
\(mex\)运算 \(mex(S)\)表示不属于\(S\)中的最小非负整数,规范化的,有
例如\(mex(\{0,1,2\})=3\),\(mex(\{1,2\})=0\),特别的,\(mex(\phi)=0\)
\(SG\)函数 设状态\(x\)有\(k\)个直接后继:\(y_1,y_2,\cdots,y_k\),则有
这里的状态指的是棋子位置
\(SG\)定理 有\(n\)个有向图游戏组成的组合游戏,设起点分别为\(s_1,s_2,\dots ,s_n\),当
时,先手必胜;反之,先手必败
我们才有数学归纳法尝试证明:
(1)所有子游戏都处于终点状态,此时\(SG(s_i)=0(i=1,2,\dots,n)\),有
\(^2\)先手必败态,且无后继状态
(2)假设:
- 对于所有\(\bigoplus_{i=1}^nSG(s_i) = 0\)的状态,都是必败态,先手无论怎么操作,都会进入\(\bigoplus_{i=1}^nSG(s_i) \ne 0\)的状态
- 对于所有\(\bigoplus_{i=1}^nSG(s_i) \ne 0\)的状态,先手都可以操作进入\(\bigoplus_{i=1}^nSG(s_i) = 0\)的状态
(3)证明
这就是Nim游戏分析中的定理1和定理2,我们来仿照其证明
假设1 设当前异或和
对于\(S\)的二进制表示\((S^{(n)}表示第n位)\),设其非零最高位为\(k\),形式化的有
显然,存在\(2p-1(p>0)\)个\(SG(s_i)\),使得
从中取\(i=i_{j_0}\),令\(t=SG(s_{i_{j_0}})\oplus S\),因为\(t^{(k)}=0\),且\(\forall i >k,t^{(i)}=SG^{(i)}(s_{i_{j_0}})\),所以
根据\(SG\)函数的定义
由于\(t<SG(s_{i_{j_0}})\),因此\(t\in \{SG(y)|y是s_{i_{j_0}}的后继\}\),因此存在\(s_{i_{j_0}}\)的后继\(s'\),使得
因此先手一定可以选择\(s'\)状态,而新的状态
到达必败态
假设2 设当前异或和
设其中任意一个子状态\(s_j\to s_j'\),假设
则前后状态相等,有
根据异或的运算性质,可得
但是\(s_j'\)是\(s_j\)的后继,根据\(SG\)函数的定义,\(SG(s_j')\)不会存在于后继\(SG\)取值集合中,否则\(mex\)会取更小的数,与假设矛盾,因此必有
即
均为必胜态
[2]这里有一个理解上的误区,必败态是先手选择进入的,留下必败态给后手,\((0,0,\dots,0)\)是先手选择进入的,留给对手的自然是失败

浙公网安备 33010602011771号