SG函数及其应用

以Bash博弈为例:http://blog.csdn.net/weixin_39872717/article/details/78922568

在讲Bash博弈时,我们通过小数据的推理,发现了必胜的规律,那么这样的推理过程如何推广到所有博弈呢?

首先引入mex函数,mex(x)=未在集合S中出现,且不超过x的最小非负整数

举个例子:

S={1,2,3},mex(4)=0;

S={0,1,2,3},mex(4)=4;

S={0,1,3},mex(4)=2;

这个看起来和推理毫不相关……好啦,开始回忆下推理过程吧!

我们在推理Bash博弈时,引入了“必胜局势”和“必败局势”,并且我们发现:“必胜局势”可以转化为“必胜局势”或“必败局势,而”必败局势“只能转化为”必胜局势“。这意味着,谁拿到了”必败局势“,只能把”必胜局势“留给对方,那就只能乖乖走进对方布下的圈套,不断陷入”必败局势“喽!快哭了

再引入SG定理和SG函数,SG(x)=mex(SG(所有通过x能达到的”局势“)),那么对于n堆石子的取石子游戏,若SG(1)^SG(2)^……^SG(n)==0,则先手必败,否则先手必胜。(^为异或,即在二进制中,异或双方相同位取0,不同位取1.)

那么在实际做题时,就可以直接预处理出所有SG值,求结果时直接异或即可。

以Bash博弈为例,若每次最少取1,最多取3,那么:

SG(0)=0;

SG(1)=1,因为1可以取到0,而SG(0)=0,所以把0去掉后,未出现过的最小非负整数为1;

SG(2)=2,同理,2可以取到1或0,排除掉SG(0)和SG(1),未出现过的最小非负整数为2;

SG(3)=3;

SG(4)=0,因为4可以取到1,2,3,但不能取到0(最多取3个嘛!),所以虽然排除1,2,3,未排除0,最小非负整数为0;

SG(5)=1;

……以此类推;

因为只有一堆石子,不用异或,直接判断SG(x)是否等于0即可判断x是否为”必胜局势“。

趁热打铁:http://blog.csdn.net/weixin_39872717/article/details/79026174

http://blog.csdn.net/weixin_39872717/article/details/79026644

你也可以用这个去推Nim游戏。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值