博弈论和SG定理详解

4 篇文章 0 订阅
4 篇文章 0 订阅

博弈简介

有很多经典博弈模型,想都看是不可能的,简单列举如下:

  • Bash Game
  • Fibonacci’s Game(要借助Zeckendorf定理)
  • Wythoff Game(要借助Betty定理)
  • 还有最重要的Nimm Game,一类最基本的组合游戏(借助SG定理)

所有博弈的基本思想都是一样的,都是先手想要赢,就必须尽力维持在自己操作后,所达到的局面能满足某些特殊的性质,而这些性质是终结态所具有的。这样一直维持这种性质直到终结状态,当前的先手就能赢。

Nimm Game

  • 问题:n堆石子,每次在某一堆取任意多,先取完获胜。
  • 策略:尽力维持所有堆的剩余量异或和为0。
  • 分析:最后的终结态是所有剩余量都是0,显然异或和是0。如果目前的异或和是0,那么取一堆之后肯定改变异或和,异或和变得不是0,因为只能在一堆取。如果当前异或和不是0,那么在剩余量最多的堆里取某个数,一定可以做到剩下的异或和为0。所以如果目前异或和为0,先手一定可以一直维持异或和为0的性质,所以余量异或和不为0是必胜态,否则必胜态。
  • 可以看出,如果一个状态的所有出路都通向必胜态,那么它就是必败态。如果存在一个出路通向必败态,那他就是必胜态。
  • 必胜和必败针对的是目前状态的先手。

SG函数

每个状态构造一个SG值。这个值是0,则为必败态,否则必胜态。要构造一种函数,使得SG值满足上面那个性质(实际上构造方法还要满足下面一部分的提到的SG定理)。有人想出了一种很精妙的构造方法,如下。
SG函数的定义: S G ( x ) = { 0 x=无出路的装态(一般是x=0) S G ( x ) = m e x ( { S G ( y ) ∣ y 是 x 的 后 继 } ) x=其他 SG(x)= \begin{cases} 0& \text{x=无出路的装态(一般是x=0)}\\ SG(x)=mex(\{SG(y) | y是x的后继\}) & \text{x=其他} \end{cases} SG(x)={0SG(x)=mex({SG(y)yx})x=无出路的装态(一般是x=0)x=其他
其中 m e x ( S ) mex(S) mex(S)表示不再S集合中的最小非负整数的数值。

  • 为什么这么构造SG函数呢,因为这样可以用数学归纳法证明状态SG值是0,则为必败态,否则必胜态。

SG定理

对于一个组合游戏,可以把游戏分成多个规则统一的局面,分治计算SG值。则总的SG值是各个分治局面的SG值的异或和。 g ( G ) = g ( G 1 ) ⊕ g ( G 2 ) ⊕ . . . ⊕ g ( G n ) g(G)=g(G1)\oplus g(G2)\oplus...\oplus g(Gn) g(G)=g(G1)g(G2)...g(Gn)

SG理论在基本Nimm Game的体现

首先把每个堆看为一个分局面。每堆的SG值就是这堆的剩余量。所以异或和为0说明总SG值为0,SG为0是必败态。所以开始的策略符合SG定理。

  • 为什么每一堆的SG值是这堆的剩余量呢。这个可以用第二类数学归纳法证明。因为某个状态可以取任意多个,就可以到比他小的任何状态。而假设前面所有状态的SG值都是他门身,显然能推出当前状态的SG也是本身。

SG定理的理解与证明

SG定理证明和Nimm游戏策略的证明一样。

  • 就是把SG值当成剩余量来看。
  • 首先各个局面终结态的SG值都是0,异或和自然为0。
  • 如果当前SG值异或和不是0,那么一定存在一个非0的SG值。找到那个最大的SG值 m a x max max,从这个分局面的根状态往下走。根据SG值的定义,这个根状态下面的儿子SG值肯定比根小,且从 0 ∼ m a x − 1 0\sim max-1 0max1所有数都出现过。就相当于任意取走一定个数的石子了。所以总能维护SG异或值为0。
  • 如果当前异或和不是0,那么必须改变某个SG值,异或和绝对变得不是0。
  • 所以只要所有SG值的异或和不为0,就是必胜态,否则必败态。SG定理就证明完了。

PS:以上均为自己的理解,可能不太严谨,弄明白就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值