浅谈 Welter's Game

1.问题描述

在一个长度无限宽度为 1 的长条网格上,以 0 为起始下标,放置了 \(n\) 个棋子,位置按递增顺序分别为 \((a_1, a_2, a_3, \cdots, a_n)\),棋子位置不重叠。两个人进行博弈,每回合选择一个棋子,移动到他前方的空格上,允许跨过棋子,这个棋子原来的位置随即变为空格。任意时刻棋子的位置非负,无法移动棋子者负。问先手是否有必胜策略。

2.简单分析

显然,这是一个有限公平游戏,可以考虑应用 SG 定理求解给出状态的 SG 函数值,从而判断其胜负态。

定义一个状态为棋子的下标集合,集合中不应存在重复元素。每个状态的直接后继状态为选择某个元素减小,并且保持集合仍无重复元素。后继状态为空或均为必胜态的状态为必败态,反之为必胜态。

3.动画函数 (Animating Function)

3.0 拓展的异或

我们希望把异或运算拓展到负整数。

先定义负整数 \(x\)\(\mathbb{N}\) 上的映射为 \(\overline{x}\)\(\overline{x}\)\(2^{\infty}-(x-1)\),可以类比为有无限个 1 开头的计算机补码。

那么负整数和非负整数的异或运算就可以定义了:\(x\oplus_{ext} y=\overline{\overline{x}\oplus y}, x<0, y\geq 0\)。负整数之间的也可以类似定义。

后文中的 \(\oplus\) 号统一用拓展的定义。

3.1 定义

定义 \(f\) 是一个动画函数,当且仅当 \(f\)\(\mathbb{Z}\) 上的函数,其形式为

\[f(x)=\cdots((((x\oplus a)+b)\oplus c)+d)\oplus \cdots \]

注意是有限次复合。

3.2 性质

3.2.1

  • 动画函数 \(f\)\(\mathbb{Z}\rightarrow\mathbb{Z}\) 上的单射。

每个子结构都是单射,单射的符合仍是单射。

这意味着存在反函数 \(f^{-1}\),满足 \(f(f^{-1}(x))=x\)

\(f^{-1}\) 也是动画函数,可以简单理解为把 \(f\) 的过程逆过来。

3.2.2

  • 如果 \(f,g\) 都是动画函数,则 \(f(g)\) 还是动画函数。

系数显然都可以提取出来单独运算,化简后仍是动画函数的形式。

4.配对函数 (Mating Function)

4.1 定义

定义 \(M(x,y)\) 是一个在 \(\mathbb{Z}^2\) 上的函数,满足 \(M(x,y)=x\oplus y\oplus (x\oplus y-1)\)。特别的,\(M(x, x)=-1\)

更直观的理解方式为找到 \(x\)\(y\) 最低的不同的位,设这是第 \(d\) 位(从 0 开始),则 \(M(x,y)=2^{d+1}-1\)

4.2 性质

4.2.1

  • \[M(x,y)=M(x+a, y+a)=M(x\oplus a, y\oplus a) \]

显然,加法和异或操作不改变他们最低的不同位。

4.2.2

  • 对任意动画函数 \(f\),\(M(x,y)=M(f(x), f(y))\)

由 4.2.1 归纳可得。

4.2.3

  • \(n\oplus M(n, 0)=n\oplus n\oplus 0\oplus(n\oplus 0-1)=n-1\)

  • \(n\oplus M(n, -1)=n\oplus n\oplus -1\oplus(n\oplus (-1)-1)=n+1\)

4.2.4

  • 任意动画函数均可写成 \(f(x)=x\oplus M(x,a_1)\oplus M(x,a_2)\oplus \cdots \oplus b\) 的形式。

可以归纳证明。假设 \(f\) 具有此形式,只需证明 \(f(x)\oplus m\), \(f(x)+1\), \(f(x)-1\) 也有。

\(f(x)\oplus m=x\oplus M(x,a_1)\oplus M(x,a_2)\oplus \cdots \oplus (b\oplus m)\)

\(f(x)+1=f(x)\oplus M(f(x), -1)=f(x)\oplus M(x, f^{-1}(-1))\)

\(f(x)-1=f(x)\oplus M(f(x), 0)=f(x)\oplus M(x, f^{-1}(0))\)

4.2.5

任意 \(x\neq y\), \(M(x,y)>0\)

显然可以找到他们第一个不同的位。

5.动画函数的 Welter 范数

5.1 定义

我们先考虑 \(b=0\) 的动画函数,记 \([f]\)\(f\) 的 Welter 范数,如下递归定义:

  • 对于 \(f_{a}(x)=x\oplus M(x, a)\),定义 \([f_{a}]=a\)

  • 对于 \(h=f\circ g\), \([h]=[f]\oplus [g]\)

5.2 更直观的定义

先来看 \(f_{a,b}(x)=x\oplus M(x,a)\oplus M(x,b)\) 按上述递归定义的形式。

\[\begin{aligned} f_{a,b}(x)&=x\oplus M(x,a)\oplus M(x,b)\\\\ &=f_a(x)\oplus M(f_a(x), f_a(b))\\\\ &=f_{b\oplus M(a,b)}(f_a(x)) \end{aligned} \]

\[\begin{aligned} [f_{a,b}]&=[f_{b\oplus M(a,b)}(f_a)]\\\\ &=[f_{b\oplus M(a,b)}]\oplus[f_a]\\\\ &=a\oplus b\oplus M(a,b) \end{aligned} \]

再来看 \(f_{a,b,c}(x)=x\oplus M(x,a)\oplus M(x,b)\oplus M(x,c)\)

\[\begin{aligned} f_{a,b,c}(x)&=f_{b\oplus M(a,b)}(f_a(x))\oplus M(x,c)\\\\ &=f_{b\oplus M(a,b)}(f_a(x))\oplus M(f_{b\oplus M(a,b)}(f_a(x)),f_{b\oplus M(a,b)}(f_a(c)))\\\\ &=f_{f_{b\oplus M(a,b)}(f_a(c))}(f_{b\oplus M(a,b)}(f_a(x))) \end{aligned} \]

\[\begin{aligned} [f_{a,b,c}]&=[f_{f_{b\oplus M(a,b)}(f_a(c))}(f_{b\oplus M(a,b)}(f_a))]\\\\ &=[f_{f_{b\oplus M(a,b)}(f_a(c))}]\oplus[f_{b\oplus M(a,b)}]\oplus[f_a]\\\\ &=f_{b\oplus M(a,b)}(f_a(c))\oplus b\oplus M(a,b)\oplus a\\\\ &=c\oplus M(a, c)\oplus M(f_a(b), f_a(c))\oplus b\oplus M(a,b)\oplus a\\\\ &=a\oplus b\oplus c\oplus M(a,b)\oplus M(a,c)\oplus M(b,c) \end{aligned} \]

如此我们可以归纳定义 \([f_{a_1, a_2, \cdots, a_{n}}]=\left(\bigoplus_{i=1}^{n}a_i\right)\oplus\left(\bigoplus_{1\leq i<j\leq n}M(a_i, a_j)\right)\)

为了简化记号,我们后文中用 \([a_1|a_2|\cdots|a_n]\) 代替 \([f_{a_1, a_2, \cdots, a_{n}}]\)。于是

\[[a_1|a_2|\cdots|a_n]=\left(\bigoplus_{i=1}^{n}a_i\right)\oplus\left(\bigoplus_{1\leq i<j\leq n}M(a_i, a_j)\right) \]

5.3 性质

5.3.1

  • \([a_1|a_2|a_3|a_4|\cdots|a_n]=[[a_1|a_3|a_4|\cdots|a_n]|[a_2|a_3|a_4|\cdots|a_n]]\oplus [a_3|a_4|\cdots|a_n]\)

按定义展开即证。

5.3.2 配对算法

  • 调换顺序使得 \(M(a_1, a_2)\)\(M(a_i, a_j)\) 中最大的项,则 \([a_1|a_2|a_3|a_4|\cdots|a_n]=[a_3|a_4|\cdots|a_n]\)

被忽略的项为 \(\bigoplus_{i\geq 3}(M(a_1, a_i)\oplus M(a_2, a_i))\)

\(M(a_1, a_2)\) 最大,这意味着他们是所有 \((a_i, a_j)\) 对中不同的最低位最大的,记为 \(d\)。那么其他数和他们的不同的最低位都小于 \(d\) (注意所有数互不相同)。而我们又知道 \(a_1\)\(a_2\) 的低 \(d-1\) 位相同,所以 \(M(a_1, a_i)=M(a_2, a_i)\),异或后抵消。

如此递归下去,我们实际上找到了 \(\frac{n}{2}\) 个配对和可能的一个单独的数,能够代表整个 \(\bigoplus_{1\leq i<j\leq n}M(a_i, a_j)\)

5.3.3

  • \([k|k|a_1|a_2|\cdots]=[a_1|a_2|\cdots]\oplus (-1)\), \(k\)\(a_i\) 互不相同。

按定义式展开,两个 \(k\) 带来的影响抵消后只剩下 \(M(k,k)=-1\)

5.3.4

  • Welter 范数关于其每个参数都是动画函数。

\(a_1\) 为例,\([a_1|a_2|\cdots]=a_1\oplus M(a_1, a_2)\oplus M(a_1, a_3)\oplus \cdots\oplus\left((\bigoplus_{i=2}^{n}a_i)\oplus(\bigoplus_{2\leq i<j\leq n}M(a_i, a_j))\right)\)

5.3.5

  • \([a|b|c\cdots]=[a^{\prime}|b^{\prime}|c\cdots]\),当且仅当 \([a^{\prime}|b|c\cdots]=[a|b^{\prime}|c\cdots]\)

利用 5.3.1 展开两者分别得到

\([a|c\cdots]\oplus [b|c\cdots]=[a^{\prime}|c\cdots]\oplus [b^{\prime}|c\cdots]\)

\([a^{\prime}|c\cdots]\oplus [b|c\cdots]=[a|c\cdots]\oplus [b^{\prime}|c\cdots]\)

显然等价。

6.偶数变更理论

6.1 记号

\[\left[ \begin{matrix} a , b , c , \cdots \\\\ a^{\prime} , b^{\prime} , c^{\prime} , \cdots \end{matrix} \right] =\begin{matrix} n\\\\ n^{\prime} \end{matrix} \]

表示如下含义:

  • \([a|b|c|\cdots]=n\)

  • 任意替换某个上方的变量为下方的变量,\(n\) 变为 \(n^{\prime}\),即 \([a^{\prime}|b|c\cdots]=[a|b^{\prime}|c\cdots]=[a|b|c^{\prime}\cdots]=\cdots=n^{\prime}\)

6.2 唯一性

  • \(n^{\prime}\neq n\),则存在唯一一组 \(a^{\prime}, b^{\prime}, c^{\prime}, \cdots\),分别不同于 \(a,b,c,\cdots\),满足上述条件。

由 5.3.4,Welter 范数是关于其每个参数都是动画函数,自然是单射且存在反函数,带入 \(n^{\prime}\) 一定能反解出唯一且不同于原来参数的解。

6.3 偶数变更不变性

  • 对于等式 \([a|b|c|\cdots]=n\),任意将上方偶数个变量(包括 \(n\))替换为下方的变量,等式仍成立。

由 5.3.5 易得。

7.Welter's Game 的 SG 函数与游戏状态动画函数的 Welter 范数的关系

7.1 记号

记游戏状态 \(x=\{a_1, a_2, \cdots, a_l\}\),表示 \(l\) 个棋子的位置集合。集合中不应有重复元素,集合元素均为非负整数。

\([x]=[a_1|a_2|\cdots|a_l]\)

定义 \(suc(x)\)\(x\) 的直接后继状态集合。状态 \(y\) 属于 \(suc(x)\),当且仅当 \(y\)\(x\) 仅存在一个元素不同,且这个元素小于 \(x\) 中对应元素。可以直观理解为在状态 \(x\) 进行了一次合法的移动棋子得到 \(y\)

7.2 怎么证明一个函数是 SG 函数

令游戏状态集合为 \(\Omega\),定义函数 \(f:\Omega\rightarrow\mathbb{N}\)\(f\) 是该游戏的 SG 函数当且仅当:

\[f(x)=\text{mex}_{y\in suc(x)}\{f(y)\} \]

7.3 \([x]\)\([y\in suc(x)]\) 的互异性

由 5.3.4,\([x]\) 是关于每个参数的动画函数。如果存在 \([x]=[y]\),将 \([y]\) 带入该参数动画函数的反函数,应当得到相同的解,与 \(y\in suc(x)\) 矛盾。

所以 \(\forall y\in suc(x)\), \([x]\neq [y]\)

7.4 证明 $ \forall 0\leq n^{\prime}<n=[x], \exist y\in suc(x), [y]=n^{\prime} $

7.4.1 与偶数变更理论建立联系

对于 \(x=\{a_1, a_2, \cdots, a_l\}\),令 \([x]=n\),对于 \(0\leq n^{\prime}<n\),列出偶数变更理论记号:

\[\left[ \begin{matrix} a_1 , a_2 , a_3 , \cdots, a_l \\\\ a_1^{\prime} , a_2^{\prime} , a_3^{\prime} , \cdots , a_l^{\prime} \end{matrix} \right] =\begin{matrix} n\\\\ n^{\prime} \end{matrix} \]

我们考虑 \(a_1^{\prime}\)。首先证明其非负。如果为负数,由于 \(a_2, a_3, \cdots\) 均非负,所以 Welter 范数定义式右侧均非负,所以 \([a_1^{\prime} | a_2 | a_3 | \cdots |a_l]\) 为负,与 \(n^{\prime}\) 非负矛盾。

再考虑互异性,如果 $a_1^{\prime} $ 与 \(a_2, a_3\cdots, a_l\) 中,某个变量相同,根据 5.3.3, \([a_1^{\prime} | a_2 | a_3 | \cdots|a_l]\) 为负,与 \(n^{\prime}\) 非负矛盾。

所以 \(a_{1}^{\prime}\) 非负且与 \(a_1, a_2, \cdots, a_l\) 互异。其他下方变量也可以得到相同的结论。

换句话说,任意替换上方变量为下方某一个变量(这里不考虑 \(n\)),得到的都是一个合法的游戏状态。

我们只需要证明,对于任意 \(0\leq n^{\prime}<n\),均存在一个替换方式,使得替换后的状态是原状态的直接后继状态,即存在 \(a_i^{\prime}<a_i\)

我们尝试加强命题,证明下列不等式组中(后称第一类不等式组),恰好偶数个成立:

\[\begin{cases} a_i^{\prime}<a_i\\\\ n^{\prime}<n \end{cases} \]

如果得证,因为 \(n^{\prime}<n\),所以必定存在 \(a_i^{\prime}<a_i\),原命题得证。

7.4.2 第二类不等式组

我们将证明,对于任意整数 \(x\),下列不等式组中恰好有偶数个成立。

\[\begin{cases} a_i\oplus a_i^{\prime}\oplus x<x\\\\ n\oplus n^{\prime}\oplus y<y \end{cases} \]

其中当 \(l\) 为偶数时,\(y=0\),否则 \(y=x\)

上述不等式组即为第二类不等式组。

证明:

不放设 \((a_1, a_2)\) 是配对算法中得到的第一对,那么有

\[[a_1|a_2]\oplus[a_3|a_4|\cdots]=n \]

考虑替换 \(a_3^{\prime}, a_4^{\prime},\cdots, n^{\prime}\) 中的偶数个变量,由于在配对算法中,\((a_1, a_2)\) 始终可以成为过程中合法的一个配对,所以等式仍然成立。于是得到

\[\left[ \begin{matrix} a_3 , a_4 , \cdots \\\\ a_3^{\prime} , a_4^{\prime} , \cdots \end{matrix} \right] =\begin{matrix} m\\\\ m^{\prime} \end{matrix} \]

其中 \(m=n\oplus [a|b], m^{\prime}=n^{\prime}\oplus[a|b]\)

由于 $n\oplus n^{\prime}\oplus y<y $ 和 $m\oplus m^{\prime}\oplus y<y $ 等价,归纳假设新的偶数变更理论记号满足有偶数个第一类不等式成立,我们只需证明

\[\begin{cases} a_1\oplus a_1^{\prime}\oplus x<x\\\\ a_2\oplus a_2^{\prime}\oplus y<y \end{cases} \]

有偶数个成立。

根据 5.3.1 展开可得 \([a_1^{\prime}|a_3\cdots|a_l]\oplus [a_2|a_3\cdots|a_l]=[a_1|a_3\cdots|a_l]\oplus [a_2^{\prime}|a_3\cdots|a_l]\)。由 \((a_1, a_2)\) 是第一个配对,可以推出 \(M(a_1, a_2^{\prime})=M(a_1^{\prime}, a_2)\)

类似地,可以得到 \(M(a_1, a_2)=M(a_1^{\prime}, a_2^{\prime})\)

又有 \([a_1|a_2|a_3|\cdots|a_l]=[a_1^{\prime}|a_2^{\prime}|a_3|\cdots|a_l]=n\),所以 \(a_1\oplus a_2=a_1^{\prime}\oplus a_2^{\prime}\),即 \(a_1\oplus a_1^{\prime}=a_2\oplus a_2^{\prime}\)

所以上述两个不等式等价,成立数量只能是偶数。

7.4.3 消去不变性

  • \([0|a_1|a_2|\cdots|a_l]=[a_1-1|a_2-1|\cdots|a_l-1]\)

按定义展开左侧:

\[\begin{aligned} [0|a_1|a_2|\cdots|a_l]&=(\bigoplus_{i=1}^{l} a_i)\oplus(\bigoplus_{i=1}^{l} M(0, a_i))\oplus (\bigoplus_{1\leq i<j\leq l} M(a_i, a_j))\\\\ &=(\bigoplus_{i=1}^{l}(a_i\oplus M(0, a_i)))\oplus (\bigoplus_{1\leq i<j\leq l} M(a_i, a_j))\\\\ &=(\bigoplus_{i=1}^{l}(a_i-1))\oplus (\bigoplus_{1\leq i<j\leq l} M(a_i-1, a_j-1))\\\\ &=[a_1-1|a_2-1|\cdots|a_l-1] \end{aligned} \]

\[\left[ \begin{matrix} 0 , a_1 , a_2 , \cdots, a_l \\\\ x , a_1^{\prime} , a_2^{\prime} \cdots, a_l^{\prime} \end{matrix} \right] =\begin{matrix} n\\\\ n^{\prime} \end{matrix} \]

\[\left[ \begin{matrix} a_1-1 , a_2-1 , \cdots, a_l-1 \\\\ a_1^{\prime}-1 , a_2^{\prime}-1 \cdots, a_l^{\prime}-1 \end{matrix} \right] =\begin{matrix} n\\\\ n^{\prime} \end{matrix} \]

带入上述结论即证。

同时可以发现,当 \(x\geq 0\) 时,不等式 \(x<0\) 恒假。那么他们的第零类不等式组中,成立的不等式个数的是完全相同的,奇偶性也自然相同。

7.4.4 异或不变性

  • \([a_1\oplus x|a_2\oplus x|\cdots|a_l\oplus x]=[a_1|a_2|\cdots|a_l]\oplus y\)

\(l\) 为偶数时 \(y=0\),否则 \(y=x\)

按定义展开左侧

\[\begin{aligned} [a_1\oplus x|a_2\oplus x|\cdots|a_l\oplus x]&=(\bigoplus_{i=1}^{l} (a_i\oplus x))\oplus (\bigoplus_{1\leq i<j\leq l} M(a_i\oplus x, a_j\oplus x))\\\\ &=(\bigoplus_{i=1}^{l} a_i)\oplus(\bigoplus_{i=1}^{l} x) \oplus(\bigoplus_{1\leq i<j\leq l} M(a_i, a_j))\\\\ &=[a_1|a_2|\cdots|a_l]\oplus y \end{aligned} \]

类似 7.4.3,我们能得到

\[\left[ \begin{matrix} a_1 , a_2 , \cdots ,a_l\\\\ a_1^{\prime} , a_2^{\prime} \cdots, a_l^{\prime} \end{matrix} \right] =\begin{matrix} n\\\\ n^{\prime} \end{matrix} \]

\[\left[ \begin{matrix} a_1\oplus x , a_2\oplus x , \cdots, a_l\oplus x \\\\ a_1^{\prime}\oplus x , a_2^{\prime}\oplus x \cdots , a_l^{\prime}\oplus x \end{matrix} \right] =\begin{matrix} n\oplus y\\\\ n^{\prime}\oplus y \end{matrix} \]

下面证明他们的第一类不等式组中成立的不等式数量奇偶性相同。

  • 引理:若 \(a_1\oplus a_2\oplus \cdots\oplus a_l=s\),则对于任意 \(t\)\(a_1\oplus t<a_1, a_2\oplus t<a_2, \cdots, a_l\oplus t<a_l, s\oplus t<s\) 中恰有偶数个成立。

  • 证明:\(t=0\) 显然,否则找到 \(t\) 的最高位,设为第 \(k\) 位,则 \(x\oplus t<x\) 当且仅当 \(x\) 的第 \(k\) 位为 1。上述变量中恰好有偶数个变量的第 \(k\) 位为 1。

\(a_1^{\prime}=a\oplus t\),则 \(a_1\oplus t<a_1, x\oplus t<x, a_1\oplus x\oplus t<a_1\oplus x\) 中恰好有偶数个成立。即 \(a_1^{\prime}<a_1, a_1\oplus a_1^{\prime}\oplus x<x, a_1^{\prime}\oplus x<a_1\oplus x\) 中恰好有偶数个成立。对 \(a_2, a_3,\cdots, a_l, n\) 也是如此。

中间的不等式就是第二类不等式组中的不等式。而我们知道,第二类不等式组中,恰好有偶数个不等式成立。

所以不等式组

\[\begin{cases} a_i^{\prime}< a_i\\\\ n^{\prime}< n \end{cases} \]

和不等式组

\[\begin{cases} a_i^{\prime}\oplus x< a_i\oplus x\\\\ n^{\prime}\oplus y< n\oplus y \end{cases} \]

中,成立的不等式的数量的奇偶性相同。

7.4.5 归纳

从最初的偶数变更理论记号开始,进行以下过程:

  • 利用异或不变性,选择 \(x=a_1\),使得第一个变量变为 0,第一类不等式组中成立的不等式数量的奇偶性不变;

  • 利用消去不变性,删去第一个变量,第一类不等式组中成立的不等式数量的奇偶性不变;

  • 重复上述两个步骤,直到只剩两个变量。

此时第一类不等式组中显然只有偶数个成立。

原命题得证。

最终我们证明了,游戏状态动画函数的 Welter 范数就是 Welter's Game 的 SG 函数。

posted @ 2026-08-24 21:30  Displace  阅读(7)  评论(0)    收藏  举报