任何一个公平的组合游戏都可以把每个局面看成一个顶点,对每个局面和他的子局面连一条有向边来抽象成图。下面我们就在有向无环图的顶点上定义SG函数。
首先定义mex()函数的运算:定义mex(S)为求出不属于集合S的最小非负整数的运算。例如:mex{1,2,3}=0;mex{0,1,2}={3}.
再来考虑一下顶点的SG值得意义。以下棋为例,当某枚棋子的SG值为k时,说明可以通过一次操作,我们可以把它变成0-k-1中的任何一个数,但是不能仍然为K。
对于n个棋子,假设他们的SG值分别为a1,a2…an;我们设对于局面为(a1,a2…an)的NIM游戏将第i个棋子变为k为必胜操作,那么对于原游戏的必胜操作就是将第i个棋子的sg值变为k。