博弈题目小结

闲聊

最近一周基本上都在看博弈,也看了几篇大家所说的经典的论文,今天稍微总结一下博弈中常见的题目类型。

还有,入门的时候真的很推荐去看张一飞的那篇论文,有很详细的引入过程,我之前一直不是很理解为什么nim游戏就能和异或扯上关系……看完这篇论文后才有些理解。

Nim Game

nim游戏真的是很经典的游戏,很多种游戏都是由它延伸变形而来。
规则如下:n堆石子,双方轮流从任意一堆石子中取出至少一个,不能取的人输。

nim游戏中的每堆石子的sg值就是它本身的数量。
这个游戏的sg值就是所有石子堆的sg值异或的结果,当sg==0时有先手必败,其余都为先手必胜。

Bash Game

每人每次最多只能取m颗石子,其他规则与nim相同。

sg(x)=x%(m+1)

NimK Game

每人一次可以从最多K堆石子中取出任意多个,其他规则同Nim Game。

结论:将每堆石子的sg值在二进制下,各数位相加,然后将结果mod(k+1),当且仅当所有的值都为0时为必败态,其余都为必胜态。

相关题目:poj 2315 这里题解

Wythoff Game

有两堆石子,双方轮流从某一堆取走若干石子或者从两堆中取走相同数目的石子,不能取的人输.
有一个结论如下……
至于怎么证明,可以看一下这篇博客

公式

Anti-Nim Game(也叫Misère Nim)

不能拿的人赢,其他规则通nim游戏。

结论:必胜态有两种:
1、所有石子堆的数量都为不大于1且sg为0
2、至少有一堆石子数量大于1且sg不为0

Staircase Nim

每人可以从最左边的石子堆中拿走任意多个,或者从某一堆中取任意多放入相邻的左边堆里,没有石子的堆不会消失。
另一种题面:有许多硬币任意分布在楼梯上,共n阶楼梯,从地面由下向上编号为0到n。游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上的人获胜。

结论:当且仅当编号为奇数的石子堆异或值为0时为必败态,其余为必胜。

这里有一个我认为很容易理解的证明。

Take & Break

有n堆石子,双方轮流取出一堆石子,然后新增两堆规模更小的石子堆(可以没有石子),无法操作者输。

每个石堆作为一个子游戏,状态X可以转移到x1,x2(0 <= x1,x2 < X),易知SG(x1,x2)=SG(x1) xor SG(x2),可以得出:
公式
O(n^3)的递推即可。

在看王晓珂的论文的时候,对例题一的转化疑惑了好长时间……
这里是我当时理解的一些内容。

翻硬币游戏

翻硬币游戏又是一大类,花样繁多……
一般规则如下:
N 枚硬币排成一排,有的正面朝上,有的反面朝上。我们从左开始对硬币按1 到N 编号。
第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面。例如,只能翻3个硬币的情况,那么第三个硬币必须是从正面翻到反面。如果局面是正正反,那就不能翻硬币了,因为第三个是反的。
第二,谁不能翻谁输。
有这样的结论:局面的SG 值为局面中每个正面朝上的棋子单一存在时的SG 值的异或和。即一个有k个硬币朝上,朝上硬币位置分布在的翻硬币游戏中,SG值是等于k个独立的开始时只有一个硬币朝上的翻硬币游戏的SG值异或和。比如THHTTH这个游戏中,2号、3号、6号位是朝上的,它等价于TH、TTH、TTTTTH三个游戏和,即sg[THHTTH]=sg[TH]^sg[TTH]^sg[TTTTTH].我们的重点就可以放在单个硬币朝上时的SG值的求法。

这里有一篇总结很全面的博客。

树上删边游戏

给定根节点,每次可以删掉一条边,不与根节点相连的部分删除
叶子节点SG为0,其他节点的SG函数为子树SG+1的异或和

相关题目:hdu 3094 这里题解

无向图删边游戏

规则同树上删边游戏,中间可能出现环。
结论:把奇环缩成一个点加一条新边,把偶环缩成一个点,不影响SG,然后同树上删边游戏。

对于这个模型,有一个著名的定理——Fusion Principle:
我们可以对无向图做如下改动:将图中的任意一个偶环缩成一个新点,任意一个奇环缩成一个新点加一个新边;所有连到原先环上的边全部改为与新点相连。 这样的改动不会影响图的 SG 值。

相关题目: poj 3710 这里题解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值