nim游戏与SG函数

求NIM游戏的解释:k堆石子,每堆有ai颗石子,两人轮流取,要么取一堆中的任意颗,要么把某一堆分成任意的两堆(均非空),求谁有必胜策略。
求问这个问题的求解过程和SG函数在此问题中发挥的作用。
带点参考资料更好,但百科的资料就不用了。
请稍微解释清楚点,稍微好一点本人就会加分的(加30吧)。。。

如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对手就输了。如果剩下两堆不相等的石子,必胜策略是通过取多的一堆的石子将两堆石子变得相等,以后如果对手在某一堆里拿若干颗,你就可以在另一堆中拿同样多的颗数,直至胜利。如果你面对的是两堆相等的石子,那么此时你是没有任何必胜策略的,反而对手可以遵循上面的策略保证必胜。如果是三堆石子……好像已经很难分析了,看来我们必须要借助一些其它好用的(最好是程式化的)分析方法了,或者说,我们最好能够设计出一种在有必胜策略时就能找到必胜策略的算法。NIM游戏的获胜策略已由美国数学家C.L.Bouton 分析完成,用到的是二进制和平衡状态概念。其结论是:
 (1)如果一开始火柴的总根数转化成二进制后各位数上的 数字和都是偶数时,则是平衡状态,后取者必胜。最 简单的平衡态是(1,1),即2 堆火柴,每堆各1 根。
 (2)如果开始时火柴的状态处于不平衡状态,先取者必胜, 其策略是取完后使火柴根数保持为平衡状态。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-27
如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对手就输了。如果剩下两堆不相等的石子,必胜策略是通过取多的一堆的石子将两堆石子变得相等,以后如果对手在某一堆里拿若干颗,你就可以在另一堆中拿同样多的颗数,直至胜利。如果你面对的是两堆相等的石子,那么此时你是没有任何必胜策略的,反而对手可以遵循上面的策略保证必胜。如果是三堆石子……好像已经很难分析了,看来我们必须要借助一些其它好用的(最好是程式化的)分析方法了,或者说,我们最好能够设计出一种在有必胜策略时就能找到必胜策略的算法。NIM游戏的获胜策略已由美国数学家C.L.Bouton 分析完成,用到的是二进制和平衡状态概念。其结论是:
 (1)如果一开始火柴的总根数转化成二进制后各位数上的 数字和都是偶数时,则是平衡状态,后取者必胜。最 简单的平衡态是(1,1),即2 堆火柴,每堆各1 根。
 (2)如果开始时火柴的状态处于不平衡状态,先取者必胜, 其策略是取完后使火柴根数保持为平衡状态。