Nim游戏变形之一

  取走最后一颗石子的输。

  刚一开始,我想可能要把sg的值变一下。原先sg(0)=0; 我想如果保持0为输态,那么sg(1)就应该是0,而sg(0)!=0; 但是sg函数怎么能随便改呢,sg不仅仅是个符号,他后面的性质和他的定义有密切的联系。

回顾sg:

      sg游戏的特点是信息对称。所以每个状态的胜负确定。容易理解,双方都想赢,必输态肯定是子状态都是必胜态才行。不然,就可以找到一个必输态,从而是自己必胜。所以,必胜态就是能达到必输态的。必输态只能达到必胜态。从结果往前搜索自然可以把博弈树上的点的状态都找到。但是,时间空间开销太大。游戏图和游戏的描述应该是完全等价的。如果这样做时间效率低,说明图上一定是浪费了什么必要的信息。或者说求了没必要的信息。这个图有什么特点呢。博弈对象又有什么特点呢。

      sg是一个从状态空间——》自然数的函数。自变量为当前状态,函数值等于mex(x的子状态),mex是定义在集合上的函数。为集合中不存在的最小自然数。sg的值,说明在这值之前的,当前状态都可达。

      sg函数能把这个问题等价于子问题的异或和的形式。考虑多个游戏异并行的形式。每次只能改变一个子游戏的sg值。如果一开始或和为0,那么这次肯定不为零。如果一开始,不为零,那么总能有一个办法,让他为0;类比一下,0是输态,子态不由他确定,非0就是胜态,总能找到到达0的一个方法。

     现在想想,在图上暴搜,是不是没有考虑到每一步只改变一个子游戏?

     现在说变形的。

     结论是在如果存在一堆石子大于1,那么结论不变。

     如果都不大于1了,那么偶数个的时候应该必胜sg为0。

     为啥大于1结论还是用呢? 比如就有一个大于1的,先手总是可以把它变为0或1,达到第二种情况。

     如果有二个或两个以上的,那么sg变为0之后,应该至少还有两个大于1的。这样后手再次走的话,一定会走到sg不为零,且至少有一个大于1的。这不可能是终止状态。

    sg不是0好在什么地方呢?他有决定权。

    但是到了最后怎么样?只剩下一个的堆。那么sg最多为1,只能走0,决定权没了。终止态的sg是0,0是必胜态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值