标签:博弈 游戏 sg 石子 笔记 异或 gs SG mex
一点前置补充
先定义几个概念:
1.一般博弈
emmm,一个人玩多没意思。。。多个人玩情况可能太复杂,所以一般博弈讨论的就是双人间博弈,并且双人进行公平游戏,即规则相同且信息对等,两人轮流操作(即非随机选择),无法操作者判负。
2.状态
类似于DP中的状态,即当前的游戏局面。
3.必胜(败)局面
如果存在一种一定获胜的方法,那么当前局面就是必胜局面。
反之,如果不能存在一种一定获胜的方法,那么当前局面就是必败局面。
4.转移
根据规则进行的一次操作,使得当前局面改变为另一局面,这个过程就是转移。
5.显然的结论
由1,3可得,由于这是两个人的游戏,定义必胜点(即当前点对应状态)为N点(Next Player),必败点为P点(Previous Player),所以必有以下结论:
1.一个只能转移到N点的点为P点(只能使对手必胜),一个点只要能转移到P点则为N点(可以使对手必败)。
2.空状态为必败点,因为无法进行下一步操作。由此倒退可得所有情况的种类。
3.整个局面必由NP两种点组成,所以只要初始局面确定,那么能否胜利取决于先后手。
6.SG定理
1.定义一个点的SG值sg(x)为mex{y|x->y},其中{y|x->y}表示当前点的所有转移点的SG值,mex表示集合中没出现的最小自然数,如mex{1,3,4}=0,mex{0,1,2,4,5}=3。
2.如果sg(x)=0,那么x为必败点,否则为必胜点。
3.如果有多个交替进行的游戏(如在多堆石子中取),那么其SG值为所有游戏的SG值的异或和。
Nim游戏
有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。
来看这几种情况:
1.有1堆石子,每次能取任意多个石子。
好吧我承认很那啥。。。。。
首先可以知道gs(0)=0,然后就可以推出sg(1)=mex{sg(0)}=1,sg(2)=mex{sg(0),sg(1)}=2....sg(n)=mex{sg(0),sg(1),...sg(n-1)}=n。
2.有两堆石子,每次能取任意多个石子。
首先sg(0,0)=0,sg(1,0)=sg(0,1)=mex{sg(0,0)}=1,sg(1,1)=mex{sg(1,0),sg(0,1)}=0.......
然后我们就可以发现一些好van的东西:sg(a,b)=a^b。
3.再推广一下,有n堆石子,每次能从任意一堆中取任意多个石子。
我们可以发现sg()=。
为什么这样计算是对的呢?
我们要证明的就是如果一个游戏可以由几个组合游戏G1,G2,G3....Gn表示,那么这个游戏的状态就可以用sg(G1)^sg(G2)^......^sg(Gn)来表示。
因为我们每次只会对一个的sg值进行改变(每次只会选择一个组合游戏进行操作),所以就是考虑证明异或和为0必败必然会转移到必胜,不为0必胜必然可以找到一个比原gs值小的数使得异或和为0。
前者很简单,,那么显然如果要让异或和为0,gs(n)是不可改变的,所以一旦改变异或和就不是0了。
后者也比较好理解,令,找到k在二进制下第一位为1的位置,我们只要在所有gs值中将一个当前位为1的取反,后面赋为其他gs值后几项的异或和,因为将一个1换为了0,所以得到的新的gs值必然会比原来小。
所以证毕,如果所有游戏的gs值异或和为0,那么必败,反之必胜。
来道例题:HDU1848,题解传送门
威佐夫博弈
有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
所谓奇异局势,就是在当前局势下先手必输,前几个奇异局势通过打表可以知道是:(0,0),(1,2),(3,5),(4,7)......可以发现前后两项的差为0,1,2,3.....前一项为前面未出现的最小自然数,即mex,后一项为前一项+当前是第几项(记(1,2)为第一项)。
数据范围小的话可以通过打表过,但数据范围大了后,需要一些定理来帮助判断。
所以抛一道例题:POJ1067,题解传送门,证明都放在这道题里的。
会持续更新(update:2019.2.23)
标签:博弈,游戏,sg,石子,笔记,异或,gs,SG,mex 来源: https://blog.csdn.net/g21glf/article/details/87885457
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。