浅谈SG函数
公平组合游戏和策梅洛定理
公平组合游戏是指满足以下条件的一个博弈游戏:
- 游戏对参加的两人公平,没有随机因素,信息公开透明
- 两名玩家轮流行动,一名玩家不能行动时游戏结束。
- 游戏状态有限,且游戏一定能在有限步内结束,没有平局
- 游戏局势不能区分玩家
对于一个公平组合游戏,我们会关心给定初始状态,它是否存在先手必胜的策略。
为了解决这个问题,就有了策梅洛定理。策梅洛定理指出,公平组合游戏中的任何一个状态,要么先手有必胜策略,要么后手有必胜策略。
证明这件事,我们可以将一个状态看作一个点,每个状态向它的后继状态连边,形成一个有向图。因为公平组合游戏的定义中有一定在有限步内结束,所以这个有向图中不能有环,所以这又是个拓扑图。我们将操作者必败的点称为必败态,操作者必胜的点称为必胜态。
对于拓扑图的没有出度的点,必为必败态。如果一个点的后继都是必胜态,则当前点为必败态。如果一个点的后继存在必败态,则当前点为必胜态。可以发现除去这两种条件,没有其它条件了,所以每个点的状态都是确定的。于是我们得到了上述结论。
得到这个结论,我们对于所有的公平博弈游戏就有了一种通解了:对抗搜索,也就是使用记忆化搜索来完成博弈的过程。
SG函数
虽然我们有了通解,可以使用记忆化搜索完成,但我们寻求更优的做法。
先举一个例子:有一堆 个石头,每次能拿走 个石头,取走最后一个石头的人获胜。
这是一个很经典也很简单的公平组合问题。但是如果不止一堆呢?搜索的总状态数会大大增加。但我们发现每一堆是等价的,所以我们可以算出每一堆的获胜情况,进而推出最后的获胜情况。如果用 表示必败态, 表示必胜态,那么最后的结果为所有堆结果的异或和。
等等,我们需要考虑一件事,必胜态真的必胜吗?这可能未必,就比如 既可以转移到 这个必败态,也可以转移到 这个必胜态,也就是 这个状态的最终胜负情况是可以通过先手的操作改变的,自然也不能和原来的必胜态一概而论。
这时候我们引出一个阶数的概念,令必败态为 阶,能转移到必败态的必胜态为 阶状态,能转移到必败态和 阶状态的必胜态为 阶状态。于是我们得到一个 阶状态的定义:能转移到 阶状态中任意一阶的状态。
我们用 表示状态 的阶。根据阶数的定义,我们可以知道,当且仅当 时,状态 为必败态。且 ,其中 表示能从状态 转移到 状态 。这个 很好理解,因为 以下的阶数都能达到,所以状态 的阶数为 。
SG 定理
先给出结论,
令 为 的后继状态, 为 的后继状态。,根据计算式可以得到 。首先可以得到 和 是无意义的,因为对方可以转移回 阶状态和 阶状态。剩下的考虑分类讨论。
1. a=b=0
此时显然,因为每局游戏先手都必败,所以他将一直是先手,所以他最终必败。
2. 其它
考虑使用数学归纳法证明。我们假定局面 和 均满足要求,所以存在 。令 , 在二进制下有 个 , 表示 的第 个为 的位置。则 。我们找到 该位如果要为 ,一定为一个该位为 的数和一个该位为 的数异或得到, 和 的并集一定包含长为 的区间 ,令第 位均为 ,可以同理得到一定包含 ,一步步往下走可以得到所有取值集合的并集为 ,根据计算式,得到 ,也就证明了 SG 定理的正确性。
参考资料
- 曦行夜落 浅谈SG函数和博弈论
- yuanyulin78 #博弈论 #公平组合游戏(ICG) #尼姆游戏(NIM) 20.09.06
- ALnAYuLvM【笔记】浅谈SG定理证明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】