Nim取石子有戏是组合数学中非常有意思的一个问题,经过学习,我对其解法也有了自己的认识。
Nim取石子游戏是这样的:有两堆石子,每一堆都有若干石子,两个人轮番地从其中任意一堆中石子,限制是每次只能在其中一堆中取,至少取一个,最多取一堆,如果轮到你的时候,没有石子可以取了,那么你就输了。
定义平衡(balance)状态为每堆石子数都相等的状态。
那么可以知道,上面有游戏当你面对一个平衡状态的时候,你的动作将要打破平衡,而另一个人只要每次恢复平衡状态,最后你就输了。如:
两堆石子:3,3. 先手者打破平衡,不论你拿1、2、3个,我都能恢复到0.0,1.1,2.2这样的平衡状态,当然0.0你就输了。那么有以下思考:
关于Nim取石子游戏,可根据两堆石子的数量是否相等推出balanced的状态,即打破平衡者输,那么将这个结论推广到多堆石子的情况时,将所有石子的数量写成二进制,以2的幂指数为列对齐,如果每一列的数为偶数,该列为balanced状态,反之不平衡。
那么就这个推广来说,时直接根据二进制表的1的个数来表征平衡状态的,即将列中1的个数等同于平衡博弈,那么问题是是否总能改变一堆石子的数量来达到这个平衡,也就是维护平衡的人是否每一次都能通过一堆石子的改变,将局面从不平衡状态恢复到平衡状态?