转自https://hrbust-acm-team.gitbooks.io/acm-book/content/game_theory/nimbo_yi.html
简述
通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。
分析
这游戏看上去有点复杂,先从简单情况开始研究吧。如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对手就输了。如果剩下两堆不相等的石子,必胜策略是通过取多的一堆的石子将两堆石子变得相等,以后如果对手在某一堆里拿若干颗,你就可以在另一堆中拿同样多的颗数,直至胜利。如果你面对的是两堆相等的石子,那么此时你是没有任何必胜策略的,反而对手可以遵循上面的策略保证必胜。如果是三堆石子……好像已经很难分析了,看来我们必须要借助一些其它好用的(最好是程式化的)分析方法了,或者说,我们最好能够设计出一种在有必胜策略时就能找到必胜策略的算法。
定义和,其中代表,代表。直观的说,上一次移动石子的人有必胜策略的局面是P-position,也就是“后手可保证必胜”或者“先手必败”,现在轮到移动石子的人有必胜策略的局面是N-position,也就是“先手可保证必胜”。更严谨的定义是:
- 无法进行任何移动的局面(也就是)是P-position;
- 可以移动到的P-position局面是N-position;
- 所有移动都导致的N-position局面是P-position。