博弈论
有向图游戏
有一个有向图,图上有一个棋子,Alice 和 Bob 轮流移动棋子,不能移动的人算负。
SG 函数
首先,对于有向图上没有后继的点 \(x\),\(\text{SG}(x)=0\).
对于任意一个点 \(x\),设其后继状态为 \(y_1,y_2...y_m\),\(\text{SG}(x)=\text{mex}(\text{SG}(y_1),\text{SG}(y_2)...\text{SG}(y_m))\).
\(\text{mex}(S)\) 表示 \(S\) 集合中最小的没有出现的非负整数。
设 \(s\) 为有向图的起点,
若 \(\text{SG}(s)=0\),先手必败,否则先手必胜。
若有 \(n\) 个有向图,每次可以移动任意一个图的棋子:
若 \(\text{SG}(s_1)\otimes \text{SG}(s_2) \otimes ... \otimes \text{SG}(s_n)=0\),先手必败,否则先手必胜。
Nim 游戏
有 \(n\) 堆石子,每堆有 \(a_i\) 个,Alice 和 Bob 轮流取任意一堆的任意个石子,不能取的算负。
考虑每堆,首先 \(\text{SG}(0)=0,\text{SG}(i)=\text{mex}(\text{SG}(i-1),...\text{SG}(0))=i\).
则若每堆的 \(\text{SG}(a_i)\) 异或起来为 \(0\),先手必败,否则先手必胜。