公平组合游戏
经典的公平组合游戏有很多,包括取数游戏,31 点,以及 Nim 游戏等。
Nim 游戏
取走最后一个物品的人获胜。
例如,如果现在有
如果现在的局面为
博弈图和状态
如果将每个状态视为一个节点,再从每个状态向它的后继状态连边,我们就可以得到一个博弈状态图。
例如,如果节点
定义 必胜状态 为 先手必胜的状态,必败状态 为 先手必败的状态。
通过推理,我们可以得出下面三条定理:
- 定理 1:没有后继状态的状态是必败状态。
- 定理 2:一个状态是必胜状态当且仅当存在至少一个必败状态为它的后继状态。
- 定理 3:一个状态是必败状态当且仅当它的所有后继状态均为必胜状态。
对于定理 1,如果游戏进行不下去了,那么这个玩家就输掉了游戏。
对于定理 2,如果该状态至少有一个后继状态为必败状态,那么玩家可以通过操作到该必败状态;此时对手的状态为必败状态——对手必定是失败的,而相反地,自己就获得了胜利。
对于定理 3,如果不存在一个后继状态为必败状态,那么无论如何,玩家只能操作到必胜状态;此时对手的状态为必胜状态——对手必定是胜利的,自己就输掉了游戏。
如果博弈图是一个有向无环图,则通过这三个定理,我们可以在绘出博弈图的情况下用
Nim 和
让我们再次回顾 Nim 游戏。
通过绘画博弈图,我们可以在
但是,这样的时间复杂度实在太高。有没有什么巧妙而快速的方法呢?
定义 Nim 和
当且仅当 Nim 和为
证明
为什么异或值会和状态的胜负有关?下面给出了这个定理的证明过程。
为了证明该定理,只需要证明下面三个定理:
- 定理 1:没有后继状态的状态是必败状态。
- 定理 2:对于
的局面,一定存在某种移动使得 。 - 定理 3:对于
的局面,一定不存在某种移动使得 。
对于定理 1,没有后继状态的状态只有一个,即全
对于定理 2,不妨假设
假设
对于定理 3,如果我们要将
有向图游戏与 SG 函数
有向图游戏是一个经典的博弈游戏——实际上,大部分的公平组合游戏都可以转换为有向图游戏。
在一个有向无环图中,只有一个起点,上面有一个棋子,两个玩家轮流沿着有向边推动棋子,不能走的玩家判负。
定义
例如
对于状态
而对于由
这一定理被称作 Sprague-Grundy 定理(Sprague-Grundy Theorem), 简称 SG 定理。
SG 定理的证明
可以使用数学归纳法来证明。
我们假设对于游戏状态
显然当
那么只需要证明对于游戏状态
事实上这一个状态可以看作一个 Nim 游戏,对于某个节点
在有向图游戏中,当一方将某一节点
当移动到 SG 值较小的节点时,情况则会和 Nim 游戏一样,能够到达任何一个游戏状态
所以状态
SG 定理的应用
SG 定理适用于 任何公平的两人游戏, 它常被用于决定游戏的输赢结果。
计算给定状态的 Grundy 值的步骤一般包括:
-
获取从此状态所有可能的转换;
-
每个转换都可以导致 一系列独立的博弈(退化情况下只有一个)。计算每个独立博弈的 Grundy 值并对它们进行 异或求和。
-
在为每个转换计算了 Grundy 值之后,状态的值是这些数字的
。 -
如果该值为零,则当前状态为输,否则为赢。
将 Nim 游戏转换为有向图游戏
我们可以将一个有
那么,由
根据上面的推论,可以得出
参考文献
本页面最近更新:2/3/2023, 12:00:00 AM,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用