博弈论SG函数

SG函数定义:SG(x) = mes(S),mes为集合运算,表示集合中没出现的最小非负整数。
其中S为SG(x)的所有后继状态的SG函数值的集合,这是一个递推的运算式子,可知终态SG(t) = 0,因为终态t的后继状态是一个空集。

公平的组合游戏,如取石子游戏,如果将状态和后继状态抽象出来建图,构成的是一个DAG图。

什么是博弈的状态:如下一盘棋时,当前的棋局就是一个状态,你的决策:移动哪个棋子,会使得棋局进入另外一个状态。取石子游戏中,当前剩余的石子数就是一个状态,当你拿掉某一堆石子中的某几颗石子后,就会进入下一个状态,下一个状态称为当前状态的后继状态。可知组合游戏的状态图一定是一个DAG图,无论如何博弈进行,游戏最终会走向一个终态,而终态没有后继状态。

必败态和必胜态概念:
在组合游戏博弈中存在必败态和必胜态的这样的概念,对于游戏的所有可能状态,每一个状态都是必败态或必胜态。只要采取最优的决策,处于必胜态的人可以永远处于必胜态。

必败态:当前状态的所有后继状态都是必胜态,则当前状态是必败状态。
必胜态:当前状态中有一个后继状态是必败态,则当前状态是必胜状态。

假设游戏的两人都绝顶聪明,游戏过程中状态的变化就是:必胜态 -> 必败态 -> 必胜态…,交替出现的场景(不够聪明的情况可能会连续出现必胜态)。

显然终态是必败态,可以采用逆推的方式推出其他的状态是必败态还是必胜态,以判断当前状态是先手赢还是后手赢。(竞赛中可以通过打表来求得当前状态的性质)

单个游戏很容易求得必败态和必胜态,多个游戏呢?首先介绍一下游戏和(多个游戏组合的游戏)
什么是多个游戏组合的游戏?例如取石子游戏,如果只有一堆石子,就是单个的游戏,如果有n堆石子,就是多个的游戏和(每一堆都是一个游戏)。

这里要用到SG函数了,来看下SG函数的作用:

SG函数的作用:SG函数取值为0当且仅当当前状态为必败态。终态SG函数值显然是0,其它状态可以用递推的方式求出,对于每一个状态枚举所有的后继状态。

SG函数要借助SG定理才能发挥它的作用,对于单个组合游戏,可以直接求得当前状态是必胜态还是必败态,而对于多个组合游戏组合的组合游戏,有SG定理:游戏和的SG函数值等于各子游戏SG函数的NIM和(NIM和表示异或和)。

例如有3堆石子的取石子游戏:当前状态x,y,z 的sg函数值为 sg[x] ^ sg[y] ^ sg[z]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值