SG函数理解

自己学了几天sg,有点拙见,记录一下灵感

1.设必败态为P, 必胜态为N
2.若某状态的后即状态中存在P,则该状态为N,因为此时先手足够聪明,完全可以把必败态转移给对方
3.若某状态的后即状态均为N,则该状态为P,因为此时无论怎样都要把必胜态转移给对方,自己必败

4.sg函数由底向上构建,保证后面延续前面的状态

5.若某状态为P,则其sg函数值为0(其后继状态中sg函数值均为非0,怎样都要把必胜态拱手相让),且两条件等价,若N态,则sg函数值对应为非0(非零证明前面的状态中存在0,即必败态)

6.最重要的一点是鹏哥给讲的,就是关于sg函数的赋值问题,为什么要定义mex{}运算,就是为了模拟第五条,如果之前均为非零即N态,则此状态sg值必为0(P态),那么N态时怎么赋值?假如某个状态后继状态sg函数值为{0,1,2,3,5,6,7}

显然mex{} = 4,我可以由当前状态变为后继状态中的任何一个状态{0,1,2,3,5,6,7},但是现在我需要构建一个连续的段落,如果sg函数值等于7,我并不能变成状态4,但是如果sg = 4,却可以变成之前的任意状态{0, 1, 2, 3},这样问题就变成该堆有四个石子,我可以让他变成小于4任意的数目,是不是就是nim博弈的规则,很神奇,将sg和nim联系起来了,所以sg解决问题时也用异或进行解决,多做题再积累一下博弈知识,感觉神奇又重要的博弈很有意思啊


领附百度百科证明一个

根据定义,证明一种判断position的性质的方法的正确性,只需证明三个命题: 1、这个判断将所有terminal position判为P-position;2、根据这个判断被判为N-position的局面一定可以移动到某个P-position;3、根据这个判断被判为P-position的局面无法移动到某个P-position。

第一个命题显然,terminal position只有一个,就是全0,异或仍然是0。
第二个命题,对于某个局面(a1,a2,...,an),若a1^a2^...^an<>0,一定存在某个合法的移动,将ai改变成ai'后满足a1^a2^...^ai'^...^an=0。不妨设a1^a2^...^an=k,则一定存在某个ai,它的二进制表示在k的最高位上是1(否则k的最高位那个1是怎么得到的)。这时ai^k<ai一定成立。则我们可以将ai改变成ai'=ai^k,此时a1^a2^...^ai'^...^an=a1^a2^...^an^k=0。
第三个命题,对于某个局面(a1,a2,...,an),若a1^a2^...^an=0,一定不存在某个合法的移动,将ai改变成ai'后满足a1^a2^...^ai'^...^an=0。因为异或运算满足消去率,由a1^a2^...^an=a1^a2^...^ai'^...^an可以得到ai=ai'。所以将ai改变成ai'不是一个合法的移动。证毕。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值