浅谈博弈论

引言

在生活中五子棋也是一种先手有必赢策略的游戏,有人会说五子棋先手我也会输啊,所以

博弈论问题都有个类似如“参与者足够聪明”,“两人都不犯错"的前提。

在此前提下,讨论几种常见的博弈情形

一:巴什博弈

问题描述:n个物品,两个人轮流取[1,m]个,最后取光者胜利,判断先手胜还是后手胜?

分析

考虑到 若n=m+1 那么 第一个人不论如何取都不能取胜

​ 进一步我们发现 若 n=k*(m+1)+r; 先取者拿走 r 个,那么后者再拿[1,m]

n=(k-1)*(m+1)+s; 先取者再拿走s 个 最后总能造成 剩下n=m+1 的局面。

​ 因此,此时先手有必赢策略。

​ 相对应的,若n=k*(m+1) 那么先取者必输

二:尼姆博弈(Nimm Game)

问题描述:n堆物品,第i堆有ai个,两个人轮流选择一堆,并从中选取走[1,ai]个,最后取光者胜利,判断先手胜利还是后手胜利?

分析:

先说点别的:

N必胜状态,P必败状态

N一定是从P转移过来的,P一定不能从N转移过来(但可能p的后继状态里有N,只是不会转移过去)

为什么呢?

比如说,你现在处于优势,你不可能把你再陷入劣势

你现在处于劣势,你肯定要想尽方法把你带进优势

Nim游戏有个定理

先手必胜,当且仅当a1xora2xora3xor.....xoran!=0

为什么呢?为了方便把前面这一坨xor设为Y

如果Y=0,则一定不存在一个k,使得Yxork==0

如果Y!=0,则一定存在一个K,使得Yxork==0

同理N和P证毕

三.SG函数

先定义一个

Mex运算:****最小不属于这个集合的最小整数

例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0

对于一个给定的有向无环图,定义关于图的每个顶点的SG函数g如下:

g(x)=mex{ g(y) | y是x的后继 (y可能会有多个)}。(这个公式很重要,反复看)

SG函数性质:

显然没有出边的顶点,其g值为0(因为它的后继集合是空集)

然后对于一个g(x)==0的顶点x,它的所有后继y都满足g(y)!=0(Mex运算)

再就对于一个g(x)!=0 的顶点,必定存在一个后继y满足g(y)=0。(出度不为0的一定有儿子)

注意一定要把这三句话弄懂

以巴什博弈为例,n=6,m=3时,Si表示还剩i个物品的状态,S0是终止状态

显然SG(S0)=0;

因为S1的唯一后继状态是S0根据Mex运算,SG(S1)=1

因为S2的后继状态有S0,S1根据Mex运算,SG(S2)=2

因为S3的后继状态有S0,S1,S2根据Mex运算,SG(S3)=3

因为S4的后继状态只有S1,S2,S3根据Mex运算,SG(S4)=0

例题;

N个结点的有向无环图,图中某些节点上有棋子,两名玩家交替移动棋子。玩家每一步可将任意一颗棋子沿一条有向边移动到另一个点,无法移动者输掉,问先手必胜还是后手必胜

分析:

建图完毕后,将每一个出度为0的SG函数设为0,相应的可以dfs每一个点的SG函数

最后整个游戏的SG函数值就是每一个棋子的SG函数值异或起来。当SG==0时,先手必败

原文地址:https://www.cnblogs.com/wzxbeliever/p/11688267.html