博弈基础知识

基础

当前执行者想赢。这个是必要的,有时候题目中判别胜负的条件会与平时练习的恰好相反,此时你就应该按照题目要求思考,即在经典模型中思考当前执行者想输的策略。

定义P-position和N-position,其中P代表Previous,N代表Next。直观的说,上一次move的人有必胜策略的局面是P-position,也就是“后手可保证必胜”或者“先手必败”,现在轮到move的人有必胜策略的局面是N-position,也就是“先手可保证必胜”。更严谨的定义是:
1.无法进行任何移动的局面(也就是terminal position)是P-position;
2.可以移动到P-position的局面是N-position;
3.所有移动都导致N-position的局面是P-position;我们在下文中称之为必胜点和必败点。

巴什博奕(Bash Game)

定义:只有一堆石子,两人轮流取,最少取一个,最多取m个,最后取完者为胜。
思考:
①当石子个数n=0时为必败点;(根据题意得来)
②当石子个数0<n<=m时为必胜点;(可以到达状态①)
③当石子个数n=m+1时为必败点;(只能到达状态②)
④当石子个数m+1<n<=(m+1)+m时为必胜点;(可以到达状态③)
⑤当石子个数n=(m+1)+m+1时为必败点;(只能到达状态④)
……
当n为m+1的整数倍时为必败点
把n写成这样的格式:n=r*(m+1)+s;
只要s不为0,即可胜。

威佐夫博奕(Wythoff Game)

定义:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。POJ1067

思考:
把两堆石子的集合写为(a,b)不失一般性令我们只考虑a<=b的情况;
数学家已经给出了我们a的通项公式(如要了解推导过程可自行查阅资料,这里不作为重点讨论),即ai=[i(1+√5)/2](方括表示下取整),bi=ai+i。*

尼姆博奕(Nim Game)

定义:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

思考:当只剩下一堆石子时,显然先手可以一次取完石子取得胜利,此为必胜点。当剩下两堆石子时,假如石子不相同,当前执行者一定可以取若干石子使得两堆相同(n,n),然后只要每次取石子数与对手相同(n-x,n-x),最后肯定会取完石子(0,0),所以(n,n)是必败点。当只有两堆石子时,站在对手的角度考虑,会发现当且仅当石子数相同才会是必败点。当三堆都有的时候情况有点复杂,(1,1,)(2,2,)……显然为必胜点,还有(1,2,3)是必败点,因为这个点只能到达前面所提到的必胜点。顺着这个思路,我们可以推出最小的必败点是(1,4,5)和(2,4,6),分析以上情况。假设有一个函数,设为SG(a1,a2,a3),这个函数的值就是这个点的胜负状态这里标记为1(必胜点)和0(必败点),假如这个点是必胜点,设SG(a1,a2,a3)=0,那么它肯定只能到达必胜点,也就是减少任何一堆石子数量的值,假设减少a3为a3’,他的函数值SG(a1,a2,a3’)应该一定为1;当SG(a1,a2,a3)=1时,一定存在某一堆减少数量假设也是改变a3’,就可以使SG(a1,a2,a3’)=0;还需满足一点就是SG(0,0,0)=0;根据上面的条件,我们或许想不出SG(a1,a2,a3)这个函数的表达式,当然数学家们如何想出的,我们不得而知,我们可以做的只有惊叹!接下来我们欣赏这个完美的结论吧,它已经推广到了N堆石子的情况。

对于一个Nim游戏的局面(a1,a2,…,an),它是P-position当且仅当a1^a2^…^an=0,其中^表示异或(xor)运算。神奇吧,很难想像怎么和异或扯上关系的,然而他的证明也并不复杂,在没有发现之前是很难想得出来的,这个的过程一定不缺乏深度思维的碰撞和灵感的火花。接下来我们就对他进行证明:

1、最后的状态,全为零,显然成立;

2、对于某个局面(a1,a2,…,an),若a1^a2^…^an<>0,一定存在某个合法的移动,将ai改变成ai’后满足a1^a2^…^ai’^…^an=0。不妨设a1^a2^…^an=k,则一定存在某个ai,它的二进制表示在k的最高位上是1(否则k的最高位那个1是怎么得到的)。这时ai^k<ai一定成立。则我们可以将ai改变成ai’=ai^k,此时a1^a2^…^ai’^…^an=a1^a2^…^an^k=0。

3、对于某个局面(a1,a2,…,an),若a1^a2^…^an=0,一定不存在某个合法的移动,将ai改变成ai’后满足a1^a2^…^ai’^…^an=0。因为异或运算满足消去率,由a1^a2^…^an=a1^a2^…^ai’^…^an可以得到ai=ai’。所以将ai改变成ai’不是一个合法的移动。证毕。

通俗的说,如果异或的结果为0,那么改变任何一个数,显然结果肯定不能为0了,如果结果不为0,改变某个特定一个数,可以使结果等于0,而异或运算恰好就满足这个条件。因而成就了这个不可思议的定理。

斐波那契博弈(Fibonacci Nim)

有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下:
1)先手不能在第一次把所有的石子取完,至少取1颗;
2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍。
约定取走最后一个石子的人为赢家,求必败态。
结论:当n为Fibonacci数的时候,必败。

Nim Staircase博奕:

这个问题是尼姆博弈的拓展:游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n。游戏者在每次操作时
可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上(0号)的人获胜。
算法:将奇数楼层的状态异或,和为0则先手必败,否则先手必胜。证明略。
例题:Poj1704
这道题可以把两个棋子中间间隔的空格子个数作为一堆石子,则原题转化为每次可以把左边的一堆石子移到相邻的右边的一堆中。也就
是阶梯尼姆博弈,注意对输入数据先排序,然后倒着往前数(a[n]-a[n-1]-1为第一个),奇数个数到的就做一下xor,其中最前面的看
做a[1]-0-1

参考

1:https://blog.csdn.net/chao1983210400/article/details/10284693
2: https://www.cnblogs.com/kls123/p/6970414.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值