博弈论SG函数的笔记

SG函数学习博客:http://blog.csdn.net/strangedbly/article/details/51137432

我觉得认真看一看这篇博客的前半部分,遇到普通的博弈题不用那么惧怕了。


看SG函数不得不和尼姆博弈结合起来,然后又发现,尼姆博弈只不过是博弈论SG函数解决的一个特例。

具体SG函数的分析见上文博客....


自己的一些体会:

对于n堆石子的取石子游戏,每一堆的个数x都对应一个函数值sg(x),当所有堆的异或值为0时,先手必败。

定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。

sg【x】=mex{ x1,x2,x3} (xi是x的后继状态的sg[]函数值!)

对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Garundy函数g如下:g(x)=mex{ g(y) | y是x的后继 }。

来看一下SG函数的性质。首先,所有的terminal position所对应的顶点,也就是没有出边的顶点,其SG值为0,因为它的后继集合是空集。



是不是跟尼姆博弈扯上关系了?异或运算的奇妙。

尼姆博弈解释及异或运算的解释:

推荐讲解:https://www.cnblogs.com/jiangjun/archive/2012/11/01/2749937.html


做题技巧:一般题目直接从小的数开始手算sg函数的值,可通过前几项看出整体的规律。

例1,有一个尼姆博弈游戏,加了一个条件,就是每次取的数量k只能在[a,b]之间。

问先手能不能必胜?

题目来源:中石油4415 http://exam.upc.edu.cn/problem.php?id=4415

写写前几项的sg函数值发现:

sg(0)=0,0,....1,1,.....2,2,.....,有规律,即每个数字出现a次后,加1后继续,每(a+b)项一个循环。

所以sg(x) = x%(a+b)/a;(这里是整除)

然后把所有堆的sg值异或即可。为0则先手必败


例2,codeforces有一个尼姆博弈,规定从某堆取过某个个数k之后,之后再从这堆取的时候就不能取k了。

也是通过sg前几项推出整体的规律。

题目地址:http://codeforces.com/problemset/problem/768/E

推荐题解:http://blog.csdn.net/jaihk662/article/details/56484066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪的期许

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值