文章目录
一.前置知识
1.异或(xor)
定义:
用符号⊕表示异或运算
两个一位二进制数运算时:
a ⊕ b = ( ¬ a ∧ b ) ∨ ( a ∧ ¬ b ) a⊕b= (¬a ∧ b) ∨ (a ∧¬b) a⊕b=(¬a∧b)∨(a∧¬b)
1 ⊕ 0 = 1 1⊕0=1 1⊕0=1 ; 0 ⊕ 1 = 1 0⊕1=1 0⊕1=1;
1 ⊕ 1 = 0 1⊕1=0 1⊕1=0 ; 0 ⊕ 0 = 0 0⊕0=0 0⊕0=0;
即:同则0,异则1
也相当于不带进位的加法运算
任意的两个十进制数a、b运算时:
先将其分别转换为二进制,每一位都进行异或运算,将得到的二进制数再转换为十进制即可
性质:
1. a ⊕ a = 0 a⊕a=0 a⊕a=0 即任意一个数和其本身异或都为0(同则0,二进制每一位都相同,因此运算结果为0)
2. a ⊕ 0 = a a⊕0=a a⊕0=a
2.必胜态/必败态
也就是N-position和P-position,但我觉得用必胜/必败态更容易理解
在采取最优策略的情况下:
必胜态:必定能获得胜利的局面
必败态:不管怎么下,都会输的局面
性质:
①若一个局面的后继局面中有一个局面为必败态,则该局面为必胜态(因为下一步可以移动到必败态让对手面对必败态,故必胜)
②若一个局面的后继状态全为必胜态,则该局面为必败态(不管怎么下对面都可以必胜)
根据这两个性质,可以从终点局面出发递推得到所有局面是必胜还是必败的。
更严谨的定义:
1.无法进行任何移动的局面(也就是terminal position)是P-position;2.可以移动到P-position的局面是N-position;3.所有移动都导致N-position的局面是P-position。
二.Nim游戏
1.游戏内容
有n堆石子,每堆石子有 a i a_i ai个,两个游戏玩家A和B轮流从任意一堆石子中取出任意个(至少为1个),若一方没有石子可以取了,则败
2.结论(Bouton定理)
用 ( a 1 , a 2 ⋅ ⋅ ⋅ , a n ) (a_1,a_2\cdot\cdot\cdot,a_n) (a1,a2⋅⋅⋅,an)表示一个局面
则一个局面为必败态等价于:
a 0 ⊕ a 1 ⊕ ⋅ ⋅ ⋅ ⊕ a n = 0 a_0⊕a_1⊕\cdot\cdot\cdot⊕a_n=0 a0⊕a1⊕⋅⋅⋅⊕

博客介绍了Nim游戏和SG函数相关知识。先讲解异或和必胜/必败态等前置知识,接着阐述Nim游戏内容、Bouton定理及证明,然后介绍SG函数作用、mex运算、计算方法和实例,还提及Sprague - Grundy定理,最后给出相关题目模板代码。
最低0.47元/天 解锁文章
1323

被折叠的 条评论
为什么被折叠?



