ACM寒假集训第一天:博弈论

集训内容:博弈论(巴什博弈、威佐夫博奕、尼姆博弈、斐波那契博弈、SG函数)

复习基础DP+讲题

巴什博弈:

巴什博弈是最基本的一类博弈,他的定义如下

只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。

 

 对于必胜态N和必败态P的分析:

现在如果有m+1个物品,则先手至少取一个,并且不能取完,就导致了先手必败;

如果物品数n<=m,则先手第一次即可全部取完,因此先手必胜;

如果物品数有(m+1)*x+c(c!=0)个,则先手第一次取c个,后手取y个,此后先手每次取(m+1)-y个,就可以保证每个m+1的最后一部分都是先手取得,因此先手必胜,同样的,如果c=0,则每个m+1的最后一部分都是后手取得,先手必败。

威佐夫博弈:

有两堆物品    每堆有若干个     两个人轮流取物品     规定有两种取法

1、从一堆物品中取    至少取一个     没有上限

2、从两堆物品中取相同个数的物品

将这两堆物品最后都取完的是winner

当面对(0,0) (1,2) (3,5) (4,7) (6,10) (8,13) (9,15) (11,18) (12,20)。。。。的情况是必败。

可以发现规律: (ak,bk);ak+k=bk;ak=(int)(k*(1+sqrt(5))/2);

所以只需判断两点之差*1.618(黄金分割数)是否等于ak即可判断是否是奇异点(必败)即可。

斐波那契博弈:

有一堆个数为n的石子,游戏双方轮流取石子,满足:

1)先手不能一次把所有的石子取完;

2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。

取走最后一个石子的人为winner,求必败态

实验猜想,Fibonacci数列:f[n]:1,1,2,3,5,8,13,21,34,55,89必败

借用“Zeckendorf定理”(齐肯多夫定理):任何正整数可以表示为若干个不连续的Fibonacci数之和。

尼姆博弈:

三堆(可以推广到n堆),每堆若干物品,两人轮流从某一堆中取物品,至少取一个,没有上限,最后取完的是winner。

 假设三队物品分别有[x,y,z],当某人面对[0,0,0]这种局面时,这个人一定是输的;

当某人面对[0,n,n]这种局面时,这个人也是输的,当面对这种局面时,先手从两堆中的某一堆中拿走k个,然后后手从另一堆中拿走k个,一直拿下去,最后面对[0,0,0]这种局面的一定是先手;

当某人面对[1,2,3]这种局面时,这个人也是输的,当先手面对这种情况时,无论怎么取,后手都能把局势变成[0,n,n]这种情况,奇异局势特点:将每堆中物品的个数全部异或之后结果为0。

Bouton定理:先手能够在非平衡尼姆博弈中取胜,而后手能够在平衡的尼姆博弈中取胜。即状态(x1, x2, x3, …, xn)为P状态当且仅当x1 xor x2 xor x3 xor … xor xn =0。这样的操作也称为Nim和(Nim Sum)。

Nim游戏是什么,参见百度百科:百度百科_Nim
在证明Nim游戏的SG函数的“根据这个判断被判为N-position的局面一定可以移动到某个P-position”命题时,有这么一段证明:对于某个局面(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。
由此,我们可以知道,对任意的当前状态S,只需将某堆石头a[i]变为S^a[i]即可使得整个局面的SG值为0,即变为必败态。(当然,为了保证操作合法,应当有S^a[i]<a[i],S^a[i]=a[i]时相当于不操作,不合法)
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值