Nim博弈和Sprague-Grundy定理
一、 Nim博弈
Nim
游戏是指有n
个堆,每堆有若干石子,现在有两个玩家轮流在堆中去取石子,要求至少取一个石子,至多取一个堆的石子,谁最先将最后的石子取完就赢了。若以 [ x 1 , x 2 , . . . , x n ] [x_1,x_2,...,x_n] [x1,x2,...,xn]表示每堆石子的个数,则称 x k ( k ∈ 1 , . . . n ) x_k(k\in1,...n) xk(k∈1,...n)为状态。这种游戏有一个规律,就是所有状态相互异或以后的值若为0,则先手(也就是第一个取石子的人)必输,反之必赢。即 r e s u l t = ( x 1 ) ∧ ( x 2 ) ∧ . . . ∧ ( x n ) result=(x_{1})^{\wedge}(x_{2})^{\wedge}...^{\wedge}(x_n) result=(x1)∧(x2)∧...∧(xn),如果 r e s u l t = 0 result=0 result=0,则先手必输。
二、 Sprague-Grundy定理
在介绍 S G SG SG定理之前,首先介绍一下 M i n i m u m E x c l u d a n t Minimum\space Excludant Minimum Excludant, M i n i m u m E x c l u d a n t Minimum\space Excludant Minimum Excludant是指不在集合中的最小非负整数,使用 M E X ( ⋅ ) MEX(\cdot) MEX(⋅)表示。例如,集合 S = { 0 , 1 , 3 , 8 } S=\left\{ 0,1,3,8\right\} S={ 0,1,3,8},则 M E X ( S ) = 2 MEX(S)=2 MEX(S)=2。一个博弈当前状态的 G r u n d y n u m b e r Grundy\space number