题目
尼姆博奕(Nimm Game)
两个人从N堆石子中的任意一堆任取1个或多个,取到没得取的人为负者。
奇异局势
如果面对一种局势的人是必败的,那么这种局势叫做奇异局势。比如如果N堆石子都是0个,那么先取者面对的(0,0,0,…,0)就是一种奇异局势。
如果我想让我的对手输,我会想尽办法让他面对奇异局势。
奇异局势有这样一种性质,比如现在的N堆石子的数目为a1,a2,a3,…,aN,那么:
a1⊕a2⊕a3⊕…⊕aN=0。
a1⊕a2⊕a3⊕…⊕aN一般称为Nim-sum。
为什么Nim-sum=0的局势是奇异局势?
也就是说,为什么当玩家面对Nim-sum=0的时候,他是必输的?
这篇论文有比较好的解释:
http://web.mit.edu/sp.268/www/nim.pdf
下面试着翻译为中文:
证明:如果一个玩家想在尼姆博奕的游戏中胜出,他应该让Nim-sum值为0。
引理1 如果在某一轮中Nim-sum=0,那么下一次的操作必然会改变Nim-sum。
证:
令x1,x2,…,xn表示操作前N堆石子的个数,s表示操作前N堆石子的Nim-sum,那么:
s=x1⊕x2⊕x3⊕…⊕xn;
令y1,y2,…,yn表示操作后N堆石子的个数,t表示操作后N堆石子的Nim-sum,那么:
t=y1⊕y2⊕y3⊕…⊕yn;
令操作中改变的石子堆标号为k,那么在操作后必然有xk!=yk,且对于i!=k来说