浅谈SG函数和博弈论
结论大家都讲过了,这里来重点研究SG 函数的所以然
(看到这里大都直接感性理解或者上结论决定来写写)
参考资料
【Part1——策梅洛定理】
我们考虑对于一个游戏,他满足以下的特点
-
两人单挑,轮流操作
-
信息公开透明
-
没有随机因素
-
有限步内必然结束
-
不存在平局
策梅洛定理:对于这样的一个游戏,任何一个局面先手或者后手其中之一必然存在必胜策略
证明:
-
如果已经到了最终状态,按照游戏规则,必然有一方已经获胜
-
如果当前状态所有后继都导向先手必胜,那么本状态先手必败
-
如果当前状态可以导向先手必败,那么本状态先手必胜
所以每一个状态的胜负都可以被确定
所以这些游戏可以使用记忆化搜索暴力解决
举例:报数游戏
显然这符合上述五项要求
一个数字初始为
设
那么
根据上述证明过程,可以发现
【Part2——状态的组合I】
参见题面
对于Nim游戏来说,无论几堆石子,我们都可以把石子一堆一堆拉出来讨论
像Nim游戏这样的可拆分游戏,满足两个条件
-
双方操作对等,操作集合只和局面有关
-
双方游戏目标相同
这样的情况下,双方不需要考虑这一步走完以后下一个人操作集合不同的情况,是一个公平游戏
这样的情况下,把游戏拆分成子游戏(比如把每一堆石子单拉出来讨论,或把某几堆单拉出来讨论)不会有任何影响,因为子游戏中操作和目标依然对等,所以这样的游戏是可拆分的
那么进一步讨论胜负状态的组合
如果一个游戏满足五项要求和公平游戏原则,比如Nim游戏,那么他的胜负状态不仅可以确定,而且可以随着子游戏的组合而组合
这里考虑两个子游戏的组合,因为一旦实现了两个子游戏之间的组合,就可以实现任意个的组合
(这里的游戏规定无子可动判负)
-
假如我面前摆着两个必败的游戏,实际上我必败
必败的走一步必然走到必胜的(证明过程)
等会对面再把另一个变成必败的,我又收到了两个必败游戏
最后我会收到两个无子可动的终盘游戏,我败了
-
假如我面前摆着一败一胜的游戏,实际上我必胜
必胜的走一步能走到必败的(证明过程)
对面会收到两个必败,对面一定会输
-
假如我面前摆着两个必胜游戏,我不能确定
随便举个例子,对于Nim游戏,随便拉出来一堆,先手肯定必胜,因为直接取光就好
但如果面前放着两堆呢?
这时候就要讨论了吧?
但是Nim游戏不是可以确定的吗?
我们先前的努力,並不是全部白费的,因为我们发现,必胜局面和必胜局面是不可以相提并论的——
【Part3——SG函数的登场】
考虑一堆石子的情况
对于
而对于
同样,对于
阶数的定义:能转移到
接下来找主角出来:
定义状态
由此可见,
同时根据上述原则,还可以观察出
其中
这就很好理解了,这个整数以下的所有阶数都可以被取到,那么这个整数就是状态的阶
所以
【Part4——状态的组合II】
回过头来看放在我们面前的两个必胜态
-
如果二者同阶,那么不管我怎么动,对面总能反手丢给我两个同阶状态,最后我会面对两个零阶状态然后输掉
-
如果二者不同阶,那么我可以丢给对面两个同阶状态,他输定了
观察出来,不难发现两个同阶状态放一起必败,不同阶必胜,再回去看看两个必败和一胜一败的分析,更加证实了我们的观点
【Part5——SG定理】
那么我们来探究一下对于
先找规律
又因为每个子游戏之间地位平等,
那么推广到一个
那么只有
初步总结一下,
-
交换律,结合律
-
单位元是
0 ,也就是和零阶组合阶数不变 -
逆元是自己,也就是和同阶组合必败
到这里我们根据性质初步猜测
再考虑
那么后继状态存在下面的阶数组合
根据计算法则,
再来几组:
那么后继状态存在下面的阶数组合
根据计算法则,
同理
故
由此观察得到,当
注意,这里的
由结合律可以推广:
【Part6——对SG定理的严格证明】
由计算方法,
由上面的设定,
又因为
展开得
接下来是精彩的一点,利用数学归纳法:
假定我们之前已经证明了
对于终局状态的
所以可以展开得到
下面利用
证明:
设
第一部分:
因为
所以
同理
所以
第二部分:证明对于所有
设
可以发现
但是由于
因为
也就是说
展开
则
也就是存在
那么同理,上面如果设
就会得到存在
因为
所以对于所有
所以根据定义:
【证毕】
【Part7——Nim游戏题解】
之前已经讲到,本题中
因为可以取任意多石子,所以对于某一堆,
然后本题中几堆石子可以组合,组合方式为按照
所以
按照定义,直接把所以数字异或起来,大于
谢谢阅读,谢谢大家