浅谈SG函数和博弈论
曦行夜落
2021-02-23 14:14:45
## 结论大家都讲过了,这里来重点研究$SG$函数的所以然
(看到这里大都直接感性理解或者上结论决定来写写)
[参考资料](https://zhuanlan.zhihu.com/p/20611132)
### 【Part1——策梅洛定理】
我们考虑对于一个游戏,他满足以下的特点
- 两人单挑,轮流操作
- 信息公开透明
- 没有随机因素
- 有限步内必然结束
- 不存在平局
#### 策梅洛定理:对于这样的一个游戏,任何一个局面先手或者后手其中之一必然存在必胜策略
证明:
- 如果已经到了最终状态,按照游戏规则,必然有一方已经获胜
- 如果当前状态**所有**后继都导向先手必胜,那么本状态先手必败
- 如果当前状态**可以**导向先手必败,那么本状态先手必胜
所以每一个状态的胜负都可以被确定
所以这些游戏可以使用记忆化搜索暴力解决
#### 举例:报数游戏
显然这符合上述五项要求
一个数字初始为$0$,甲乙两人每次加上$1,2,3$中其中一个,达到$21$的人立刻获胜
设$S[x]$表示数字为$x$时胜负确定情况,$1$先手必胜,$0$先手必败
那么$S[21]=0$,因为此时先手没得报,无子可动判负
根据上述证明过程,可以发现
$18,19,20$均可以通过一次报数转移到必败状态$21$,所以他们全都是必胜态,以此类推,可以得出本游戏先手有必胜策略,$S[0]=1$
### 【Part2——状态的组合I】
参见[题面](https://www.luogu.com.cn/problem/P2197)
对于Nim游戏来说,无论几堆石子,我们都可以把石子一堆一堆拉出来讨论
像Nim游戏这样的可拆分游戏,满足两个条件
- 双方操作对等,操作集合只和局面有关
- 双方游戏目标相同
这样的情况下,双方不需要考虑这一步走完以后下一个人操作集合不同的情况,是一个公平游戏
这样的情况下,把游戏拆分成子游戏(比如把每一堆石子单拉出来讨论,或把某几堆单拉出来讨论)不会有任何影响,因为子游戏中操作和目标依然对等,所以这样的游戏是可拆分的
#### 那么进一步讨论胜负状态的组合
如果一个游戏满足五项要求和公平游戏原则,比如Nim游戏,那么他的胜负状态不仅可以确定,而且可以随着子游戏的组合而组合
这里考虑两个子游戏的组合,因为一旦实现了两个子游戏之间的组合,就可以实现任意个的组合
(这里的游戏规定无子可动判负)
- **假如我面前摆着两个必败的游戏,实际上我必败**
必败的走一步必然走到必胜的(证明过程)
等会对面再把另一个变成必败的,我又收到了两个必败游戏
最后我会收到两个无子可动的终盘游戏,我败了
- **假如我面前摆着一败一胜的游戏,实际上我必胜**
必胜的走一步能走到必败的(证明过程)
对面会收到两个必败,对面一定会输
- **假如我面前摆着两个必胜游戏,我不能确定**
随便举个例子,对于Nim游戏,随便拉出来一堆,先手肯定必胜,因为直接取光就好
但如果面前放着两堆呢?
这时候就要讨论了吧?
但是Nim游戏不是可以确定的吗?
我们先前的努力,並不是全部白费的,因为我们发现,必胜局面和必胜局面是不可以相提并论的——
### 【Part3——SG函数的登场】
考虑一堆石子的情况
$0$是必败态,显然
$1$是必胜态,直接拿掉就好
$2$是必胜态,但是特殊情况出现了
$2$可以转移到$1$这个必胜态,也可以转移到$0$这个必败态
显然你要赢往必败态转移就好,但是实际情况中,肯定不止这一堆,上面已经说明了两个局部的必胜无法达成总体的必胜
这时候引入一个概念——**状态的阶数**
对于必败态,阶数为$0$
对于$1$这样的只能转移到必败态的必胜态,阶数为$1$
而对于$2$这样的,既可以转移到必败态,也可以转移到$1$阶状态的必胜态,阶数为$2$
同样,对于$3$,他可以转移到$0,1,2$,所以是$3$阶状态
**阶数的定义:能转移到$0$至$n-1$中任一阶状态的状态,称为$n$阶状态**
接下来找主角出来:
**定义状态$x$的阶数为$SG(x)$**
由此可见,$SG(x)>0$时$x$为必胜态,$SG(x)=0$时$x$为必败态
同时根据上述原则,还可以观察出$SG(x)$的计算方法
$SG(x)=mex \{ SG(y)|x->y \} $
其中$mex$表示集合中未出现的最小的整数,$x->y$表示$y$是$x$的后继状态
这就很好理解了,这个整数以下的所有阶数都可以被取到,那么这个整数就是状态的阶
所以$mex$是这样出现的哦
### 【Part4——状态的组合II】
回过头来看放在我们面前的两个必胜态
- 如果二者同阶,那么不管我怎么动,对面总能反手丢给我两个同阶状态,最后我会面对两个零阶状态然后输掉
- 如果二者不同阶,那么我可以丢给对面两个同阶状态,他输定了
观察出来,不难发现两个同阶状态放一起必败,不同阶必胜,再回去看看两个必败和一胜一败的分析,更加证实了我们的观点
### 【Part5——SG定理】
那么我们来探究一下对于$x$和$y$的组合状态$z$即$x+y=z$,$SG(x),SG(y),SG(z)$的关系吧
先找规律
$SG(x)=0,SG(y)=0$,两必败组合为必败,$SG(z)=0$
$SG(x)=1,SG(y)=0$,一个一阶态和一个必败态,后继只能是两个必败态,所以$SG(z)=1$
$SG(x)=1,SG(y)=1$,同阶状态必败,$SG(z)=0$
又因为每个子游戏之间地位平等,$SG$组合满足**交换律**,**结合律**
那么推广到一个$SG(x)=k,SG(y)=0$呢?
那么只有$x$可以被降阶到$0$至$k-1$阶,所以$SG(z)=k$
初步总结一下,$SG$数的组合运算满足以下规律
- 交换律,结合律
- 单位元是$0$,也就是和零阶组合阶数不变
- 逆元是自己,也就是和同阶组合必败
**到这里我们根据性质初步猜测$SG$按照异或组合**
再考虑$SG(x)=1,SG(y)=2$
那么后继状态存在下面的阶数组合
$SG(x')=0,SG(y)=2,SG(z_1)=2$
$SG(x)=1,SG(y'_1)=1,SG(z_2)=0$
$SG(x)=1,SG(y'_2)=0,SG(z_3)=1$
根据计算法则,$SG(z)=3$,诶,对了
再来几组:
$SG(x)=1,SG(y)=3$
那么后继状态存在下面的阶数组合
$SG(x')=0,SG(y)=3,SG(z_1)=3$
$SG(x)=1,SG(y'_1)=2,SG(z_2)=3$
$SG(x)=1,SG(y'_2)=1,SG(z_3)=0$
$SG(x)=1,SG(y'_3)=0,SG(z_4)=1$
根据计算法则,$SG(z)=2$
$SG(x)=2,SG(y)=3$
同理
$SG(x'_1)=1,SG(y)=3,SG(z_1)=2$
$SG(x'_2)=0,SG(y)=3,SG(z_2)=3$
$SG(x)=2,SG(y'_1)=2,SG(z_3)=0$
$SG(x)=2,SG(y'_2)=1,SG(z_4)=3$
$SG(x)=2,SG(y'_3)=0,SG(z_5)=2$
故$SG(z)=1$
由此观察得到,当$x+y=z$的时候$SG(z)=SG(x) \ xor\ SG(y)$
**注意,这里的$x+y$指的是局面上的组合而非数量加和!$SG(2)$和$SG(4)$的组合应该是$SG(2,4)$,此处意义下$2+4=(2,4)$**
由结合律可以推广:
$SG(x)=SG(x_1+x_2+...+x_n)=SG(x_1)\ xor\ SG(x_2)\ xor \ ... \ xor \ SG(x_n) $
### 【Part6——对SG定理的严格证明】
由计算方法,$SG(z)=mex \{ SG(w)|z->w \} $
由上面的设定,$z=x+y$
又因为$w$是$z$的后继,**那么$w=u+y$或者$w=x+v$**,也就是每次只能改变其中一个
展开得
$SG(x+y)=mex \{ \{SG(u+y)|x->u\}∪\{SG(x+v)|y->v\} \}$
接下来是精彩的一点,利用**数学归纳**法:
假定我们之前已经证明了$SG(u+y)=SG(u)\ xor\ SG(y)$和$SG(x+v)=SG(x)\ xor\ SG(v)$,因为$u+y,x+v$是$x+y$的后继,所以必然**更加靠近终局状态**
对于终局状态的$SG(x)=0,SG(y)=0$时候的结论已经证明
所以可以展开得到
$SG(x+y)=mex \{ \{SG(u)\ xor\ SG(y)|x->u\}∪\{SG(x)\ xor\ SG(v)|y->v\} \}$
下面利用$SG(u+y)=SG(u)\ xor\ SG(y)$和$SG(x+v)=SG(x)\ xor\ SG(v)$推出$SG(x+y)=SG(x)\ xor\ SG(y)$
**证明:**
设$X=SG(x),Y=SG(y),U=SG(u),V=SG(v),A=\{SG(u+y)|x->u\},B=\{SG(x+v)|y->v\}$
**第一部分:$X\ xor\ Y∉A∪B$**
因为$x->u$,故$X≠U$,同理$Y≠V$
所以$U\ xor \ Y≠X\ xor \ Y$,也就是说$SG(x)\ xor\ SG(y)∉A$
同理$SG(x)\ xor\ SG(y)∉B$
所以$SG(x)\ xor\ SG(y)∉A∪B$
**第二部分:证明对于所有$W<X\ xor\ Y$,都有$W∈A∪B$**
设$Z=X\ xor\ Y\ xor\ W$
可以发现$Z$异或上$X,Y,W$其中的至少一个时,会使其减小
但是由于$Z\ xor\ W=X\ xor\ Y>W$,所以排除$W$
因为$X,Y$平等,所以不妨设是$X$吧
也就是说$Z\ xor\ X=W\ xor\ Y<X$
展开
$W\ xor\ SG(y)<SG(x)$
则$x$必然存在一个后继状态$u$使得$U=SG(u)=W\ xor\ SG(y)$
也就是存在$u$使得$W=SG(u)\ xor\ SG(y)$
那么同理,上面如果设$Y$
就会得到存在$v$使得$W=SG(x)\ xor\ SG(v)$
因为$Z$至少能够使$X,Y$之一变小,上述两个条件至少有一个成立
所以对于所有$W<SG(x)\ xor\ SG(y)$,都有$W∈A∪B$
所以根据定义:
$SG(x+y)=mex\{ A∪B \}=SG(x)\ xor\ SG(y)$
**【证毕】**
### 【Part7——Nim游戏题解】
之前已经讲到,本题中$SG(0)=0,SG(1)=1,SG(2)=2,SG(3)=3$
因为可以取任意多石子,所以对于某一堆,$SG(n)=n$,因为可以转移到$0$到$n-1$任意阶的状态
然后本题中几堆石子可以组合,组合方式为按照$SG$定理异或
所以$SG(x_1,x_2,...,x_n)=SG(x_1)\ xor\ SG(x_2)\ xor\ ... \ xor\ SG(x_n)$
按照定义,直接把所以数字异或起来,大于$0$先手必胜,等于$0$则后手必胜
谢谢阅读,谢谢大家