对于普通的P/N分析,需要记住定义才能准确写出记忆化搜索:
1.无法进行任何移动的局面是P
2.存在后继局面为P的局面为N
3.所有后继局面为N的局面为P
Bash的粗糙证明过程
若石子为\(n\)最多取\(m\)个且符合\(n=(m+1)r+s,s<m+1\),先手总有方法留下\(n=(m+1)r‘\)的局面给对手
Nim的证明过程
1.无法移动的局面为P
无论多少个0异或都是0
2.N可以移动到P
若\(a_1⊕a_2⊕...a_n=k,k!=0\),必可找出\(a_i\),其最高位是\(k\)的最高位,\(a_i‘=a_i⊕k<a_i\)(最高位必可去掉所以肯定成立
那么\(a_i\)替换为\(a_i‘\)可以使异或和为\(0\),记原式为\(Xor\),因为取出了\(a_i\),加入了\(a_i⊕k\),所以\(Xor⊕a_i⊕a_i⊕k=k⊕k=0\)
3.P无法移动到P
当前局面\(a_1⊕a_2⊕...a_n=0\),若要移动\(a_i\)到\(a_i‘\)使得原式变为\(0\),既\(a_i⊕a_i‘=0\),显然两者只能相等,而这是非法操作