博弈问题入门

来源:互联网 发布:淘宝网拖鞋 编辑:程序博客网 时间:2024/05/01 18:22

博弈问题入门

博弈问题简介

我们所讨论的博弈问题满足以下条件:

  1. 玩家只有两个人,轮流做出决策
  2. 游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输
  3. 对任何一种局面,胜负只决定于局面本身,而与轮到哪位选手无关

一般称满足以上条件的游戏称为ICG,比如我们将要讨论的Nim游戏。作为一个对比,我们平时玩的象棋就不属于ICG,因为它不满足第三条。

ICG具有两个状态,我们称为必胜态和必败态,他们的关系:

  1. 后继状态能达到必败的状态为必胜态
  2. 所有后继状态都不为必败态,则其为必败态

第二条也可以换一种说法:后继状态都是必胜态,则其为必败态。
所以我们可以看出一个状态不是必胜态,就是必败态。

Nim游戏

  • 例一

有一堆石子,两个人轮流从石子堆中拿走任意数量的石子,但不能不拿。谁不能拿谁为输。

显然,这个游戏中只要先手把所有石子都拿完,那么后手就一定输了。因为此时没有石子,后手无法进行合法的操作。

  • 例二

有两堆石子,分别为a,b个石子,每个玩家只能选一堆,然后拿走任意正整数个石子,谁不能拿谁输。

我们先讨论一个特殊情况,即:a=b时,此时后手是必胜的。此时不管先手怎么操作,我们只要选择与先手不同的那堆,然后进行与先手相同的操作即可。

这里a=b即为我们所说的必败态。而当a≠b时,我们肯定可以拿比较多的那堆,使之和少的那堆数量相等,此时我们就必胜了,所以此时就为必胜态。

  • 例三

当有三堆,数量分别为a,b,c时,我们就比较不好分析了。当然我们可以直接搜索得到最后结果,但是当我们拓展到n堆时,此时我们搜索也变得不可行了。

于是我们有了一个强大的工具:sg函数

sg函数

sg函数为以下形式:

SG(x)=mex(S)

  • S表示x的所有后继状态
  • mex表示不在集合里最小的非负整数
  • 必败态的sg值为0

然后还要结合sg定理:

SGSGNim

于是就可以把各个子游戏分而治之。

举个例子

假设我们用sg函数处理上述所说的例二,我们就可以把游戏分为两个单堆Nim子游戏。对于单堆的Nim游戏,如果我们可以取任意正整数多个,那么很容易就可以明,sg(x)=x。那么我们整个游戏的必败态则为sg1(x)sg2(x)=0,显然只有当a=b时游戏为必败态,和我们的讨论结果一致。

以下是一段关于sg定理的证明:

  • 对于必胜状态,一定存在后继的必败态

我们假设现在的Nim和为X,现在的最大的一堆的数量为Y,那么我们只需要把这最大的一堆取成Z=X∧Y即可。因为除了最大的这堆外其他的Nim和为X∧Y,因此我们取完后,现在的Nim和即为sg′(X)=X∧Y∧(X∧Y)=0,显然为必败态了。而且我们也可以保证Z≤Y,即我们总有办法实现它。

  • 对于必败态,它的所有后继状态都是必胜的

由于只能更改一堆的状态,无论哪一位的1被改变,那么原来那位上1的奇偶个数一定会改变,所以就会变为必胜态。

拓展

其他的几种博弈

Chomp游戏

有一个n∗m的棋盘,每次可以取走一个方格并拿掉它右边和上面的所有方格。拿到左下角(1,1)的选手输。

结论:答案是除了1*1的棋盘,对于其他大小的棋盘,先手总能赢。

证明如下:

如果后手能赢,也就是说后手有必胜策略,使得无论先手第一次取哪个石子,后手都能获得最后的胜利。那么现在假设先手取最右上角的石子(n,m),接下来后手通过某种取法使得自己进入必胜的局面。但事实上,先手在第一次取的时候就可以和后手这次取的一样,进入必胜局面了,与假设矛盾。


约数游戏

约数游戏:有1~n个数字,两个人轮流选择一个数字,并把它和它的约数擦去。擦去最后一个数的人赢,问谁会获胜。

分析:类似巧克力游戏,得到结论就是无论n是几,都是先手必胜。


巴什博奕(Bash Game)

规定有一堆物品,两个人轮流从中拿取,要求最少拿1个,最多m个。最后无法拿取的人败。

这个问题先手只要能一直维护总数是m+1的倍数即可,否则先手必败。

一个相似的玩法是两个人轮流报数,一次最少报1个,最多报m个,谁能报到100谁胜,原理与上述相同。


威佐夫博奕(Wythoff Game)

有两堆若干物品,一次可以从一堆拿任意多的物品或同时从两堆拿同样多的物品。最后不能拿的人输。

经过打表会发现前几组必败态的规律:

0:a0=0,b0=0

1:a1=1,b1=2

2:a2=3,b2=5

3:a3=4,b3=7

我们会发现对于奇异局势有: bi=ai+i
可以证明出,对于所有非奇异局势,其为必胜态。
判断是否是奇异局势的方法如下:

ai=i1+52,bi=ai+i

如存在非负整数i使上述条件成立,那么其为奇异局势,即必败态。
很神奇的是其中出现了黄金分割。


几种模型

楼梯Nim

非常神奇的一种题目。

就是把楼梯上的棋子两两绑定,他们之间的距离看成是一堆石子,于是就等同于我们之前讨论的经典Nim游戏了。


Moore’s Nimk

广义的Nim游戏。

有n堆石子,每次最少选一堆,最多选m堆,每堆都可以拿任意正整数个石子。

我们把每堆石子都写成二进制的形式,然后从低位到高位求每一位1的和。如果每一位1的和sum%(m+1)=0,此时为必败态。

显然,当m=1时就变成了我们最开始所讨论的最基础的Nim游戏了。


翻硬币游戏

这类题目比较复杂,一般打表找规律,否则例如本渣就直接gg。


图的删边游戏

比上面的更复杂,不会。(会了再回来更新囧)

0 0