---博弈论---

最近见得博弈太多于是学习了一下

一个不错的PPT 传送门

巴什博弈

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

公式:n%(m+1)!=0
当一个人要面对(m+1)的倍数时一定会输,另一个人只需一直让物品保持为n的倍数

减法博弈

巴什博弈有一种变形,叫做减法博弈。用s表示一个正整数构成的集合,基于S所定义的减法游戏可以描述如下:
有一个由n个石子组成的石子堆,两名玩家轮流从中拿走石子,每次拿走石子的个数只能是集合S中的数。拿走最后一枚石子的玩家获胜

例:S = {1, 3, 4},如果在游戏的开始有100枚石子,那么哪个玩家获胜?

使用向后归纳的方法,可以计算出游戏的P位置和N位置如下:
这里写图片描述
通过观察发现,该游戏中的P位置(必败态)是那些能被7整除或者模7余2的位置,其他位置都是N位置(必胜态)。用数学归纳法可以证明这个结论是正确的。
事实上,如果k是P态(自己必败),那么P+1、P+3、P+4能够到达的位置,是N态(对方必败),其他位置是P态。
游戏的起始位置100是P位置,所以先手输。

威佐夫博奕

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

公式:[k*(sqrt(5)-1.00)/2]; ([]为向下取整) k为两堆的差值。
当小的那一堆等于这个公式的值时先手必败,否者先手必胜

(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)当面对这几个(奇异局势)情况时必输(ak,bk),其中ak=[k*(sqrt(5)-1.00)/2];bk=ak+k(其实毫无卵用,k=bk-ak);

Fibonacci博弈

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

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

(2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。 约定取走最后一个石子的人为赢家。

当n为Fibonacci数时,先手必败。即存在先手的必败态当且仅当石头个数为Fibonacci数

尼姆博弈

问题:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
公式:a^b^c=0;(其中^表示异或运算,a,b,c为三堆物品的数量)
与威佐夫博奕一样找一些奇异局势首先(0,0,0)是一个,(0,n,n)也是一个然后找到规律就是那个公式a^b^c=0,这是满足这个奇异局势的公式。
例如:证明(4,9,13)是奇异局势:
4 ————–>0 1 0 0—->0400
9 ———–—>1 0 0 1—->8001
13 ————>1 0 1 0 —->8020
其中有两个8,两个4,两个1,非零项成对出现,这就是尼姆和为 零的本质。别人要是拿掉13里的8或者1,那你就拿掉对应的9 中的那个8或者1;别人要是拿 掉13里的4,你就拿掉4里的4; 别人如果拿掉13里的3,就把10作分解,然后想办法满 足非零项成对即可。

推广一:如果我们面对的是一个非奇异局势(a,b,c),要如何变为奇异局势呢?假设 a < b< c,我们只要将 c 变为 a^b,即可,因为有如下的运算结果: a^b^(a^b)=(a^a)^(b^b)=0^0=0。要将c 变为a^b,只从 c中减去 c-(a^b).

推广二:当石子堆数为n堆时,则推广为当对每堆的数目进行亦或之后值为零是必败态。

Ferguson博弈(清空/分割游戏)

进行游戏需要用到两个盒子。在游戏的开始,第一个盒子中有n枚石子,第二个盒子中有m个石子(n, m > 0)。参与游戏的两名玩家轮流执行这样的操作:清空一个盒子中的石子,然后从另一个盒子中拿若干石子到被清空的盒子中,使得最后两个盒子都不空。当两个盒子中都只有一枚石子时,游戏结束。最后成功执行操作的玩家获胜。找出游戏中所有的P位置。

对于第一个位置如果过(x,y).如果x, y中有一个偶数,那么(x, y)是N(必胜)位置。如果x和y都是奇数,那么(x, y)是P位置(必败)。可以用数学归纳法证明。

Chomp! 博弈(巧克力游戏)

情人节的时候,潘典安买了一块长方形的棋盘巧克力,和他最爱的女友一起吃,巧克力由n*m块格子组成。为了增加情人节的情趣,潘典安和她女友轮流选择一个格子,并把这个格子右面,上面和右上方的巧克力全部取走。取到左下角格子的玩家输,就要给对方一个热烈的吻。假设每次都是潘典安先手,他是否存在必胜策略呢?

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

Nim游戏

问题:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。。

公式:a1^a2^a3^a4=0(ai表示每一堆的数量,^是Xor运算)

当这个公式成立时,面对这一情况的人一定会输;
根据定义,证明一种判断position的性质的方法的正确性,只需证明三个命题: 1、这个判断将所有terminal position判为P-position;2、根据这个判断被判为N-position的局面一定可以移动到某个P-position;3、根据这个判断被判为P-position的局面无法移动到某个P-position。
第一个命题显然,terminal position只有一个,就是全0,异或仍然是0。
第二个命题,对于某个局面(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。
第三个命题,对于某个局面(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’不是一个合法的移动。证毕。
根据这个定理,我们可以在O(n)的时间内判断一个Nim的局面的性质,且如果它是N-position,也可以在O(n)的时间内找到所有的必胜策略。Nim问题就这样基本上完美的解决了。

Sprague-Grundy 函数(万能模板)正在努力学习ing…

Sprague-Grundy 函数SG函数理解
http://blog.csdn.net/qq_30241305/article/details/50819784
SG函数模板
http://www.cnblogs.com/frog112111/p/3199780.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值