博弈题目小结
来源:互联网 发布:淘宝心级怎么算 编辑:程序博客网 时间:2024/05/22 05:36
闲聊
最近一周基本上都在看博弈,也看了几篇大家所说的经典的论文,今天稍微总结一下博弈中常见的题目类型。
还有,入门的时候真的很推荐去看张一飞的那篇论文,有很详细的引入过程,我之前一直不是很理解为什么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 这里题解
- 博弈类题目小结(
- 博弈类题目小结
- 博弈题目小结
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(hdu poj zoj)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)(转)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 转 博弈类题目小结(hdu,poj,zoj)
- 博弈类题目小结(HDU,POJ,ZOJ)
- 主成分分析(Principal Component Analysis,PCA)是什么作用?
- Lightoj1028【计算约数个数】
- 一次 mysql 启动错误
- Android RecyclerView初体验
- Lucky Number
- 博弈题目小结
- 兔子的烦恼(一)
- Tensorflow的基本用法
- 【数据结构实训】1002括号匹配判断算法
- Java-设计模式学习笔记-总结
- 1081 线段树练习 2 codevs
- Sublime Text3注册码(可用)
- linux 使用fdisk分区扩容
- DBN\DNN\ANN\SNN