博弈论 | 详解搞定组合博弈问题的SG函数

本文深入探讨博弈论中的SG函数和SG定理,它们能解决复杂博弈问题,包括ICG游戏。介绍了ICG游戏的定义、必胜态与必败态的概念,重点讲解了Sprague-Grundy数的推导,以及如何利用SG函数解决例如Nim取子问题等博弈问题。最后通过一例实战题目展示了SG函数的应用。
摘要由CSDN通过智能技术生成

本文始发于个人公众号:TechFlow,原创不易,求个关注


今天这篇是算法与数据结构专题的第27篇文章,我们继续深入博弈论问题。今天我们要介绍博弈论当中非常重要的一个定理和函数,通过它我们可以解决许多看起来杂乱无章的博弈问题,使得我们可以轻松地解决一大类博弈问题。

有了SG函数和SG定理,我们不再是单纯地通过构思、分析和找规律去解决问题了。并且我们之前学过的巴什博奕、威佐夫博弈以及Nim博弈都可以使用SG函数来解决,相当于我们找到了这一大类问题的通解。下面,我们来看几个基本定理和基本概念。


基本定理


ICG游戏


前面我们说了,SG函数和SG定理可以解决一大类的博弈问题。这一大类的博弈问题称为ICG游戏,我们之前介绍过的三种博弈模型,本质上都属于ICG游戏。

关于ICG游戏,它的定义如下,需要满足三个条件:

  1. 游戏有两人参与,两人轮流做出决策,并且两人做出的决策都是对自己最优的
  2. 当有一人无法决策的时候,该人失败。无论两人如何决策,该游戏都必然会在有限时间内结束
  3. 游戏中同一个状态不能达到多次,且游戏没有平局。游戏者在某个确定状态做出的决策集合只与状态有关,与游戏者无关

必胜态与必败态


也就是奇异状态与非奇异状态,我们定义P状态是必败态,N状态是必胜态。我们可以简单理解成,在P状态的玩家一定会输,而在N状态的玩家一定会赢

这一点在之前的Nim取子的文章当中我们曾经深入地分析过,展开来说,其实也有三条:

  1. 无法移动的状态为P状态
  2. 可以移动到P状态的状态为N
  3. 所有移动都会进入N局面的局面为P

我们曾经在分析威佐夫博弈问题的时候,将游戏局面抽象成了二维平面坐标系当中的点。其实所有ICG游戏都可以想象成一张有向无环图(DAG),游戏开始时有一颗放在起点的棋子,两个玩家轮流移动棋子,直到不能移动的玩家落败。所有只能移动到终点的局面都是必胜的,所有只能连接必胜点的点是必败的。我们用递归的思路可以计算出所有点的状态。

当然我们用算法去搜索遍历所有状态这耗时太多了,我们可以通过一个函数来计算它,这就是我们今天文章讨论的重点——SG函数


Sprague-Grundy数的推导


SG是Sprague-Grundy的缩写,我没有记错,这应该是两个人名,它使用起来非常简单,但是推导过程有些复杂。如果我们忽略推导过程直接去研究它的使用的话,你会有一种在运用魔法的感觉。因为你完全猜测不到它其中的原理,所以我们需要详细解释一下它的推导过程,这样才能加深理解。

我们先明确几个概念,首先对于ICG游戏来说,失败的最终状态只有一个,就是无法移动的点,可以认为是DAG图中的终点。从这个终点倒推,所有能够直接连接终点的点是N点。这个很好理解,假如在当前的状态当中,可以移动到一个对手的必败状态,那么对于当前玩家当然是必胜的。

我们对这些状态做一个简单的分层,直接可以连接P点的点是一级胜态。比如nim游戏当中的(1, 0)状态就是一级胜态,它只能通往P点。我们把可以变成败态也可以进入一级胜态的点称为二级胜态,比如nim游戏当中的(0, 2)。比如它进入(1, 0)便是一级胜态,而也可以直接进入(0, 0)变成败态,我们把这样的状态称为二级胜态。类似的,如果一个胜态可以变成败态也可以变成1至n-1级的所有胜态,则称为n级胜态,败态可以认为是0级胜态。

接着我们来看胜态的组合,我们可以把Nim取子问题中的结论照搬过来。两个同级的胜态组合是败态两个不同级的胜态组合是胜态。原因也很简单,就和Nim取子问题中面临两堆同样多的石子必败一样。因为后手可以拷贝先手的操作,直到无法继续操作,游戏结束。而两个不同的胜态,先手可以将其中一个转化成和另一个一样,从而让后手面临两个一样的胜态,所以不同的胜态组合是胜态。

注意这个结论要成立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值