其实我从小就开始学习博(打)弈(扑)论(克),对于各种不平等博弈(斗地主,炸金花,跑得快,斗牛,510k,五星,变色龙,够级,保皇)都有了解。
上边纯属扯淡。
下面是关于OI中博弈论的学习笔记。
先介绍一些概念
双人平等博弈
要求:
1.信息完全公开
2.双方轮流行动
3.面对同一局面,双方的决策集合相同
4.一般规定不能操作者输
5.游戏不会成环,有限步数之内游戏必将结束
游戏的转移图
任意一个局面是一个节点,两个局面可以相互转移,就在他们之间连一条边。
这样得到的DAG就是游戏的转移图。
P态和N态
定义先手必胜状态为N态反之则为P态
不难验证,一个状态为P态,当且仅当它是一个结束状态或它的后继状态均为N态
因此我们也可得到一个在游戏图上判断胜负的基本方法:搜索游戏的所有P态
SG函数
sg函数是处理博弈问题的一个强力工具。
定义一个局面x的SG函数为:
1.若它本身不存在后继,SG(x)=0
2.否则设它的所有转移集合为S,SG(x)=mex{S}
一个局面为P状态当且仅当SG值=0
下面介绍各种平等博弈的一般模型
尼姆博奕
经典问题:有n堆石子,第i堆有ai个,两个人轮流操作,每次选择一堆非空的石子,从中选择若干个,不能操作者输。
解法:我们记所有ai的异或和为x,后手必胜当且仅当x=0。
对于游戏最终状态满足x=0,后手胜利。
对于一个x=0的局面,任意操作都会打破这种状态。
对于一个x≠0的局面,至少存在一中操作使x=0。
而事实上,Nim游戏就代表了所有的平等博弈问题。
Nim和
设现在存在两个游戏A和B,双方在两个游戏上博弈,轮流操作。
每次选择一个游戏,在一个游戏上进行转移。
不难发现这是一个新游戏,我们用它来定义游戏的和,记做A+B。
Nim博弈就是N堆取石子游戏的和。
定理:SG(A+B)=SG(A)^SG(B),可用归纳法证明。
反Nim博弈
对原来的游戏规则,现在约定不能执行操作的人胜利,既执行最后一次。
简单起见,我们考虑n个游戏的和,并且假定每个单独的游戏中,所有SG(x)=0的局面不存在出边。
定理:在这种情况下,先手必胜当且当
1.存在一个游戏SG(x)>1,且所有的游戏异或和不为0
2.游戏有SG(x)=1,且有偶数个游戏
任何时候,对手执行了一个使SG(x)变大的操作,我们可以执行一个操作把它变回来,且这不是做后一次。
下面是SG函数在一些场景的应用
巴什博弈
同Nim游戏,只是每次取的个数不能超过m。
结论:SG(x)=x mod (m+1)
阶梯博弈
有n堆石子放在n层楼梯上,每次选择一层的若干石子放入下一层,一层的石子向下扔视为扔掉,无法操作视为输。
其实相当于所有奇数堆的石子做Nim游戏。
为什么和偶数层的无关呢?可以这么想,假如我们把若干石头从偶数层干到奇数层,那对方还能继续把他干回偶数层。
这是一个递归的过程,直到把它干到0。而这一系列操作跟奇数层的石子无关。
所以我们计算奇数层的异或和,就可以得到整个游戏SG函数。
威佐夫博弈
有两堆石子,博弈双方每次可以取一堆石子中的任意个,不能不取,或者取两堆石子中的相同个。先取完者赢。
不想写啥。还得搞黄金分割率。。上课件吧
等到时候做了题再丢几道博弈的题吧,总之感觉这个东西挺迷的。。