专栏文章

经 过 数 学 家 的 不 懈 努 力

P11278题解参与者 11已保存评论 13

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
13 条
当前快照
1 份
快照标识符
@mir4q4hr
此快照首次捕获于
2025/12/04 15:43
3 个月前
此快照最后确认于
2025/12/04 15:43
3 个月前
查看原文

前言

「经过数学家的不懈努力」是 Nim 积相关题解不可避免的一环……吗?
本文旨在勾勒部分 Nim 积性质的证明,有了这些性质后数据结构优化是不难的,可以参考其它题解。
更具体的介绍可以参考这篇文章(仍在更新中!)。
本文参考了《On Numbers And Games》的第六章。
对于不理解何为「序数」的读者,可以自行将文中所有「序数」换为「非负整数」。
如果你学过一定的抽象代数,你可以把文中的「对加法封闭」「对加法、乘法封闭」「对四则运算封闭」「所有多项式方程均有解」替换成「是群」「是环」「是域」「代数闭」。(因为异或意义下 α+α=0\alpha+\alpha=0,一个数自然有相反数,因此可以不考虑减法)
在集合论中,冯诺依曼表示法的序数 α\alpha 就是集合 {ββ<α}\{\beta|\beta<\alpha\},其中 β\beta 是序数。本文不区分这两者。例如,当我们说到「22 对四则运算封闭」的时候,也就是说「{0,1}\{0,1\}(在异或和 Nim 积意义下)对四则运算封闭。」
本文中,方括号 [][] 中的运算为通常的序数运算,而其外部的运算为 Nim 运算。

引子

假如我们想在所有序数上定义一个加法和一个乘法,使得它们对四则运算封闭,并且它“字典序最小”(这个概念并不严格),应该怎么做?
先考虑加法吧。
0+0=00+0=0 显然不会有问题,因此 00 就是这个域上的零元。故而 0+α=α+0=α0+\alpha=\alpha+0=\alpha
1+1=01+1=0 不会有问题,不就是特征【最小的 nn 满足所有数加 nn 遍等于 00】为 22 嘛。
1+21+2 是几?它不能等于 1+1=01+1=01+0=11+0=10+2=20+2=2,否则就和域有加法逆元(因此有消去律)矛盾了。因此 1+2=31+2=3
这启发我们递归地定义
α+β=mex({α+δδ<β}{γ+βγ<β})\alpha+\beta=\operatorname{mex}(\{\alpha+\delta|\delta<\beta\}\cup\{\gamma+\beta|\gamma<\beta\})
据此列出表格
+012345678910111213141500123456789101112131415110325476981110131215142230167451011891415121333210765411109815141312445670123121314158910115547610321312151498111066745230114151213101189776543210151413121110988891011121314150123456799811101312151410325476101011891415121323016745111110981514131232107654121213141589101145670123131312151498111054761032141415121310118967452301151514131211109876543210\begin{array}{c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|} +&0&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15\\\hline 0&0&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15\\\hline 1&1&0&3&2&5&4&7&6&9&8&11&10&13&12&15&14\\\hline 2&2&3&0&1&6&7&4&5&10&11&8&9&14&15&12&13\\\hline 3&3&2&1&0&7&6&5&4&11&10&9&8&15&14&13&12\\\hline 4&4&5&6&7&0&1&2&3&12&13&14&15&8&9&10&11\\\hline 5&5&4&7&6&1&0&3&2&13&12&15&14&9&8&11&10\\\hline 6&6&7&4&5&2&3&0&1&14&15&12&13&10&11&8&9\\\hline 7&7&6&5&4&3&2&1&0&15&14&13&12&11&10&9&8\\\hline 8&8&9&10&11&12&13&14&15&0&1&2&3&4&5&6&7\\\hline 9&9&8&11&10&13&12&15&14&1&0&3&2&5&4&7&6\\\hline 10&10&11&8&9&14&15&12&13&2&3&0&1&6&7&4&5\\\hline 11&11&10&9&8&15&14&13&12&3&2&1&0&7&6&5&4\\\hline 12&12&13&14&15&8&9&10&11&4&5&6&7&0&1&2&3\\\hline 13&13&12&15&14&9&8&11&10&5&4&7&6&1&0&3&2\\\hline 14&14&15&12&13&10&11&8&9&6&7&4&5&2&3&0&1\\\hline 15&15&14&13&12&11&10&9&8&7&6&5&4&3&2&1&0\\\hline \end{array}
稍微验证一下发现它确实符合交换律、结合律……等等这不就是异或吗?怎么证明呢?
还是先来考虑一下乘法吧。首先 0α=α0=00\alpha=\alpha0=0,那 1×11\times1 就不能是 00 了,那就 11 吧。好,11 就是幺元了!那么 1α=α1=α1\alpha=\alpha1=\alpha2×22\times2 等于多少?可以是 11 吗?这样的话 (2+1)×(2+1)=2×2+1×2+2×1+1×1=0(2+1)\times(2+1)=2\times2+1\times2+2\times1+1\times1=0,似乎不太对。可以是 22 吗?1×21\times2 已经是 22 了啊。那就 33?暂时看起来没什么问题。
等等我们发现了什么……(x+y)2=x2+y2(x+y)^2=x^2+y^2,因此两个数的平方不能相同!这个性质很优美诶。
因为 3=1+23=1+2,由分配律 33 相关的都做完了。
2×42\times 4 是多少?显然不能为 2×0=0,2×1=2,2×2=3,2×3=12\times0=0,2\times1=2,2\times2=3,2\times3=1。如果是 4+x(0x<4)4+x(0\le x<4) 的话,那 2×4=4+x2\times4=4+x(2+1)×4=x(2+1)\times4=x3×4<43\times4<4 的话也不行(因为 3×0=0,3×1=3,3×2=1,3×3=23\times0=0,3\times1=3,3\times2=1,3\times3=2)。那么就最小是 2×4=82\times4=8 了。
3×4=2×4+1×4=8+4=123\times4=2\times4+1\times4=8+4=12
4×44\times 4 是多少?根据之前的结果,它不能等于 02=0,12=1,22=3,32=3,1×4=40^2=0,1^2=1,2^2=3,3^2=3,1\times4=4。能等于 55 吗?这意味着 44x2+x+1=0x^2+x+1=0 的根。可是这是 (x+2)(x+3)=0(x+2)(x+3)=0!而 (4+2)×(4+3)(4+2)\times(4+3) 不能为 00。因此 55 也不行。那就 66 吧。先看着……
好像导致 a×b=xa\times b=x 矛盾的点都是 (a+a)(b+b)=0(a+a')(b+b')=0?那就让这些全都不为 00 即可。这启发我们定义
αβ=mex{αδ+γβ+γδγ<α,δ<β}\alpha\beta=\operatorname{mex}\{\alpha\delta+\gamma\beta+\gamma\delta|\gamma<\alpha,\delta<\beta\}
据此列出表格
×012345678910111213141500000000000000000101234567891011121314152023181011912141513467530312121513144756811910404812621410111537139515051015278133691214111460611131485371121091524707914101334158615212118081241137151351961410290914715618512112103413100101553912611114428137110111367121019241514538120124813195610214117153130136119415214385710112140147951121210413315186150155101144112137831269\begin{array}{c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|} \times&0&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15\\\hline 0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0\\\hline 1&0&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15\\\hline 2&0&2&3&1&8&10&11&9&12&14&15&13&4&6&7&5\\\hline 3&0&3&1&2&12&15&13&14&4&7&5&6&8&11&9&10\\\hline 4&0&4&8&12&6&2&14&10&11&15&3&7&13&9&5&1\\\hline 5&0&5&10&15&2&7&8&13&3&6&9&12&1&4&11&14\\\hline 6&0&6&11&13&14&8&5&3&7&1&12&10&9&15&2&4\\\hline 7&0&7&9&14&10&13&3&4&15&8&6&1&5&2&12&11\\\hline 8&0&8&12&4&11&3&7&15&13&5&1&9&6&14&10&2\\\hline 9&0&9&14&7&15&6&1&8&5&12&11&2&10&3&4&13\\\hline 10&0&10&15&5&3&9&12&6&1&11&14&4&2&8&13&7\\\hline 11&0&11&13&6&7&12&10&1&9&2&4&15&14&5&3&8\\\hline 12&0&12&4&8&13&1&9&5&6&10&2&14&11&7&15&3\\\hline 13&0&13&6&11&9&4&15&2&14&3&8&5&7&10&1&12\\\hline 14&0&14&7&9&5&11&2&12&10&4&13&3&15&1&8&6\\\hline 15&0&15&5&10&1&14&4&11&2&13&7&8&3&12&6&9\\\hline \end{array}
稍微验证一下发现它确实符合交换律、分配律……而且似乎每 [22N][2^{2^N}] 以内对乘法封闭?而因为消去律一定有一个 β\beta 满足 αβ=1\alpha\beta=1,所以就对四则运算封闭了……?怎么证明呢。

加减乘除

定义 . 对于任意序数 α,β\alpha,\beta,我们递归定义它们的异或(Nim 和)为
α+β=mex({α+δδ<β}{γ+βγ<β})\alpha+\beta=\operatorname{mex}(\{\alpha+\delta|\delta<\beta\}\cup\{\gamma+\beta|\gamma<\beta\})
定义 . 对于任意序数 α,β\alpha,\beta,我们递归定义它们的 Nim 积为
αβ=mex{αδ+γβ+γδγ<α,δ<β}\alpha\beta=\operatorname{mex}\{\alpha\delta+\gamma\beta+\gamma\delta|\gamma<\alpha,\delta<\beta\}
我们记 α\alpha^* 为一变量,它能取值所有 <α<\alpha 的序数和部分 >α>\alpha 的序数。(即,其取值范围的 mex\operatorname{mex}α\alpha)如果 α\alpha 的定义式/计算式为 mex(S)\operatorname{mex}(S),称 SS 的所有元素为 α\alpha 的排除项。
定理 . 对于任意序数 α,β,γ\alpha,\beta,\gammaα+β=α+γ\alpha+\beta=\alpha+\gamma 当且仅当 β=γ\beta=\gamma
证明 . 充分性显然。必要性考虑反证。若 βγ\beta\neq \gamma,不妨设 β<γ\beta<\gamma,则 α+β\alpha+\betaα+γ\alpha+\gamma 的一排除项,矛盾。
定理 .(加法的冗余定理)对于任意序数 α,β\alpha,\beta
α+β=mex({α+ββ}{α+βα})\alpha+\beta=\operatorname{mex}(\{\alpha+\beta^*|\beta^*\}\cup\{\alpha^*+\beta|\alpha^*\})
证明 . 显然 α+β\alpha+\beta 的所有排除项都被排除了,而其它的元素排除项含有 α+β\alpha+\beta,故右侧取值为 (α+β)(\alpha+\beta)^*,即 mex\operatorname{mex}α+β\alpha+\beta
定理 . 对于任意序数 α,β,γ\alpha,\beta,\gamma,有
  1. α+0=α\alpha+0=\alpha
  2. α+β=β+α\alpha+\beta=\beta+\alpha
  3. (α+β)+γ=α+(β+γ)(\alpha+\beta)+\gamma=\alpha+(\beta+\gamma)
  4. α+α=0\alpha+\alpha=0
证明 . 直接归纳即可。注意第三条要用到冗余定理。
推论 . (多个数的加法计算式)在证明第三条的归纳过程中,我们可以用归纳类似地证明:对于任何 nn 个序数 α1,α2,,αn\alpha_1,\alpha_2,\cdots,\alpha_n,有:
i=1nαi=mexi=1n{j=1n{αj=iαjjiα<αj}\sum_{i=1}^n\alpha_i=\operatorname{mex}\bigcup\limits_{i=1}^n\{\sum_{j=1}^n\begin{cases}\alpha&j=i\\\alpha_j&j\neq i\end{cases}|\alpha<\alpha_j\}
定理 . 对于任意序数 α\alpha,有 α0=0α=0\alpha0=0\alpha=0
证明. α0\alpha00α0\alpha 均无排除项,即证。
定理 . 对于任意序数 α,β,γ\alpha,\beta,\gammaαβ=αγ\alpha\beta=\alpha\gamma 当且仅当 β=γ\beta=\gammaα=0\alpha=0
证明. 充分性显然。必要性考虑反证。若 βγ\beta\neq \gamma,不妨设 β<γ\beta<\gamma,而 0<α0<\alpha,故 αγ\alpha\gamma 的排除项有 αβ+0γ+0β=αβ\alpha\beta+0\gamma+0\beta=\alpha\beta,矛盾。
定理 .(乘法的冗余定理)对于任意序数 α,β\alpha,\beta,有
αβ=mex{αβ+αβ+αβα,β}\alpha\beta=\operatorname{mex}\{\alpha\beta^*+\alpha^*\beta+\alpha^*\beta^*|\alpha^*,\beta^*\}
证明 . 显然 αβ\alpha\beta 的排除项都被排除了。因此我们只需证 αβαβ+αβ+αβ\alpha\beta\neq \alpha\beta^*+\alpha^*\beta+\alpha^*\beta^* 即可。根据异或的自逆,这等价于 αβ+αβ+αβ+αβ0\alpha\beta+\alpha\beta^*+\alpha^*\beta+\alpha^*\beta^*\neq 0。显然,其它三者之和为最大的一者的排除项,即证。
定理 . 对于任意序数 α,β,γ\alpha,\beta,\gamma,有
  1. α1=α\alpha1=\alpha
  2. αβ=βα\alpha\beta=\beta\alpha
  3. (αβ)γ=α(βγ)(\alpha\beta)\gamma=\alpha(\beta\gamma)
  4. α(β+γ)=αβ+αγ\alpha(\beta+\gamma)=\alpha\beta+\alpha\gamma
证明 . 直接归纳即可。注意第三条和第四条要用到冗余定理。
推论 .(多个数的乘法计算式)在证明第三条的归纳过程中,我们可以用归纳类似地证明:对于任何 nn 个序数 α1,α2,,αn\alpha_1,\alpha_2,\cdots,\alpha_n,有:
i=1nαi=mex{I{1,2,,n}j=1n{αjjIβjj∉Iβj<αj}\prod_{i=1}^n\alpha_i=\operatorname{mex}\{\sum_{I\subsetneq\{1,2,\cdots,n\}}\prod_{j=1}^n\begin{cases}\alpha_j&j\in I\\\beta_j&j\not\in I\end{cases}|\beta_j<\alpha_j\}
定义 . 对于任意序数 α>0\alpha>0,定义
S={0}{γ1(1+(α+γ)δ)0<γ<α,δS}S=\{0\}\cup\{\gamma^{-1}(1+(\alpha+\gamma)\delta)|0<\gamma<\alpha,\delta\in S\}
则定义 α1=mex(S)\alpha^{-1}=\operatorname{mex}(S)。对于任意序数 α,β\alpha,\beta,定义 α/β=αβ=αβ1\alpha/\beta=\dfrac\alpha\beta=\alpha\beta^{-1}
(注:这个 SS 是一个递归的定义,即 SS 包含了上述操作在有限步以内能生成的所有数。)
定理 .
  1. 对于任何序数 α>0\alpha>0,设 β\betaα1\alpha^{-1} 的一排除项,则 αβ1\alpha\beta\neq 1
  2. 对于任何序数 α>0\alpha>0,设 β\betaαα1\alpha\alpha^{-1} 的一(冗余)排除项,β1\beta\neq 1
  3. 对于任何序数 α>0\alpha>0αα1=1\alpha\alpha^{-1}=1
证明 . 考虑归纳。
  1. β=0\beta=0 显然,否则设 β=γ1(1+(α+γ)δ)\beta=\gamma^{-1}(1+(\alpha+\gamma)\delta)。则 1+αβ=γγ1+αβ=γ1(α+γ+α(α+γ)δ)=γ1(α+γ)(1+αδ)1+\alpha\beta=\gamma\gamma^{-1}+\alpha\beta=\gamma^{-1}(\alpha+\gamma+\alpha(\alpha+\gamma)\delta)=\gamma^{-1}(\alpha+\gamma)(1+\alpha\delta)。显然 γ10\gamma^{-1}\neq 0,又因 γ<α\gamma<\alphaα+γ\alpha+\gamma 不为 00,根据归纳假设又有,1+αδ1+\alpha\delta 不为 00,故乘积不为 00,即证。
  2. β=γα1+α(α1)+γ(α1)\beta=\gamma\alpha^{-1}+\alpha(\alpha^{-1})^*+\gamma(\alpha^{-1})^*,其中 (α1)(\alpha^{-1})^*α1\alpha^{-1} 的一排除项。若 γ\gamma 等于 00,这就是前一条所证的。否则因为 λ=γ1(1+(α+γ)(α1))\lambda=\gamma^{-1}(1+(\alpha+\gamma)(\alpha^{-1})^*) 也为 α1\alpha^{-1} 的一排除项,又因为 γγ1=1\gamma\gamma^{-1}=1,故 β=1+γ(α1+λ)1\beta=1+\gamma(\alpha^{-1}+\lambda)\neq 1
  3. 显然 αα10\alpha\alpha^{-1}\neq 0,因为 α10\alpha^{-1}\neq 0。而由 2 得 αα1\alpha\alpha^{-1} 的排除项不含 11,即证。

扩张,扩张,扩张

定理 .Δ\Delta 不对加法封闭,则 Δ=α+β\Delta=\alpha+\beta,其中 (α,β)(\alpha,\beta) 为字典序最小的一对 Δ\Delta 的元素满足 α+β\alpha+\beta 不在 Δ\Delta 中。
证明 . 显然 α+βΔ\alpha+\beta\ge \Delta,但是 α+β\alpha+\beta 的排除项都在 Δ\Delta 中。(这是因为字典序更小了)即证。
定理 .Δ\Delta 对加法封闭,则对于任意 α\alphaβΔ\beta\in \Delta[Δα]+β=[Δα+β][\Delta\alpha]+\beta=[\Delta\alpha+\beta]
(例. 4={0,1,2,3}4=\{0,1,2,3\} 对加法封闭,故 8+3=[4×2]+3=[4×2+3]=118+3=[4\times2]+3=[4\times 2+3]=11。)
证明 . 考虑归纳。左侧的排除项为:
  • [Δα+γ]+β[\Delta\alpha'+\gamma]+\beta,其中 α<α,γ<Δ\alpha'<\alpha,\gamma<\Delta。这是因为带余除法。
  • [Δα]+δ[\Delta\alpha]+\delta,其中 δ<β\delta<\beta
根据归纳假设,左侧即为 [Δα]+(β+γ)[\Delta\alpha']+(\beta+\gamma)。而由于 Δ\Delta 形成一个群,β+γ\beta+\gamma 恰好能取遍所有的 γ<Δ\gamma'<\Delta!故根据归纳假设,所有的排除项为 [Δα+γ][\Delta\alpha'+\gamma'][Δα+δ][\Delta\alpha+\delta],这恰为所有小于 [Δα+β][\Delta\alpha+\beta] 的数,即证。
定理 .Δ\Delta 对加法封闭但不对乘法封闭,则 Δ=αβ\Delta=\alpha\beta,其中 (α,β)(\alpha,\beta) 为字典序最小的一对 Δ\Delta 的元素满足 αβ\alpha\beta 不在 Δ\Delta 中。
(例. 88 对加法封闭但不对乘法封闭,字典序最小的 (α,β)=(2,4)(\alpha,\beta)=(2,4),故 8=2×48=2\times4。)
证明 . 显然 αβΔ\alpha\beta\ge \Delta,但是 αβ\alpha\beta 的排除项都在 Δ\Delta 中。(这是因为字典序更小了,且加法封闭)即证。
定理 .Δ\Delta 对加法和乘法封闭,对加法封闭的 ΓΔ\Gamma\le \Delta 满足 Γ\Gamma 中的非零元都在 Δ\Delta 中有乘法逆元(即与其乘积为 11 的元素),则对于任意 γΓ\gamma\in \Gamma,有 Δγ=[Δγ]\Delta\gamma=[\Delta\gamma]
(例. 4={0,1,2,3}4=\{0,1,2,3\} 对加法和乘法封闭,且 444\le 4 中的所有非零元都在 44 中有逆,故 3×4=[3×4]=123\times 4=[3\times4]=12。)
证明 . 考虑归纳。Δγ\Delta\gamma 的排除项为 Δα+βα+βγ,β<Δ,α<γ\Delta\alpha+\beta\alpha+\beta\gamma,\beta<\Delta,\alpha<\gamma。只需证对于任何 α<γ\alpha<\gamma,有 Δα+β(α+γ)\Delta\alpha+\beta(\alpha+\gamma) 能取遍所有 [Δα+δ]=[Δα]+δ=Δα+δ[\Delta\alpha+\delta]=[\Delta\alpha]+\delta=\Delta\alpha+\delta。取 β=δ(α+γ)1\beta=\delta(\alpha+\gamma)^{-1} 即可。
定理 .Δ\Delta 为对四则运算封闭但有些多项式方程无解,设 p(x)p(x) 为系数在 Δ\Delta 中,在 Δ\Delta 中没有根的字典序最小的多项式(从高次项到低次项依次比较)。则 p(Δ)=0p(\Delta)=0。对于任何次数比 pp 小的多项式 p(x)p'(x),有 p(Δ)=[p(Δ)]p'(\Delta)=[p'(\Delta)]
(注意序数乘法可能没有交换律,若 p(x)=αixip(x)=\sum \alpha_ix^i,这里 [p(Δ)]=Δiαi[p'(\Delta)]=\sum \Delta^i\alpha_iii 从大到小加。)
(例。 4={0,1,2,3}4=\{0,1,2,3\} 对四则运算封闭,但是有无根多项式 x2+x+2=0x^2+x+2=0,故 42=4+2=64^2=4+2=6。)
(注:你问对加、乘封闭但没法做除法的情况去哪里了?事实上有,但是书中的证明有一定问题,而且我们用不到,就咕了。)
证明 .pp 的次数为 nn。对于任何一个 NN,考虑 ΔN\Delta^N 的排除项为:
i=1Nαi=mex{i=0N1I{1,2,,N},I=iΔij∉Iβjβj<αj}\prod_{i=1}^N\alpha_i=\operatorname{mex}\{\sum_{i=0}^{N-1}\sum_{I\subsetneq\{1,2,\cdots,N\},|I|=i}\Delta^i\prod_{j\not\in I}\beta_j|\beta_j<\alpha_j\}
先归纳地证明若 N<nN<nNN 次多项式 p(x)p'(x)p(Δ)=[p(Δ)]p'(\Delta)=[p'(\Delta)]
  1. 先考虑 ΔN\Delta^N。只需证明它的排除项能取遍所有 i=0N1Δiγi=[i=0N1Δiγi]\sum\limits_{i=0}^{N-1}\Delta^i\gamma_i=[\sum\limits_{i=0}^{N-1}\Delta^i\gamma_i] 即可。考虑多项式 q(x)=xN+i=0N1xiγiq(x)=x^N+\sum\limits_{i=0}^{N-1} x^i\gamma_i。因为 <n<n 次多项式均有根,它一定可以因式分解为一次因式。设其根为 δ1,δ2,,δn\delta_1,\delta_2,\cdots,\delta_n,重根算多次。根据 Vieta 定理,βj=δj\beta_j=\delta_j 即为所求。
  2. 再考虑 ΔNδ\Delta^N\delta,其中 δΔ\delta\in \Delta。它的排除项为 {ΔNγ+q(Δ)(γ+δ)γ<δ,degq<N,[xi]q(x)Δ}\{\Delta^N\gamma+q(\Delta)(\gamma+\delta)|\gamma<\delta,\deg q<N,[x^i]q(x)\in \Delta\}。只需证明对于任何 γ\gammaq(Δ)(γ+δ)q(\Delta)(\gamma+\delta) 能取遍每个 q(Δ)q'(\Delta) 即可。因为 γ+δΔ\gamma+\delta\in \Delta,故其有逆元,而根据归纳假设,次数更小的多项式乘 Δ\Delta 的元素正常乘即可,故取 q(x)=q(x)(γ+δ)1q(x)=q'(x)(\gamma+\delta)^{-1} 即可。
  3. 再考虑 p(Δ),degp=Np'(\Delta),\deg p'=N。根据归纳假设,次数更小的多项式加法是正常算的,故 ΔN\Delta^N 为一个群。因此设 p(x)=xNδ+q(x)p'(x)=x^N\delta+q'(x),则 p(Δ)=ΔNδ+q(Δ)=[ΔNδ]+[q(Δ)]=[ΔNδ+q(Δ)]=[p(Δ)]p'(\Delta)=\Delta^N\delta+q'(\Delta)=[\Delta^N\delta]+[q'(\Delta)]=[\Delta^N\delta+q'(\Delta)]=[p'(\Delta)]
再证 p(Δ)=0p(\Delta)=0。设 p(x)=xn+q(x)p(x)=x^n+q(x)(显然,若最高次项系数不为 11,则系数均乘以其逆元字典序更小)。考虑 Δn\Delta^n。和以上过程类似,比 q(Δ)q(\Delta) 小(等价于字典序小)的均为 Δn\Delta^n 的排除项。但 q(Δ)q(\Delta) 不是,否则根据 Vieta 定理 pp 就在 Δ\Delta 内有根了。因此 Δn=q(Δ)\Delta^n=q(\Delta),即 p(Δ)=0p(\Delta)=0
定理 .Δ\Delta 对四则运算封闭,且所有多项式方程均有根。则对于任意多项式 p(x)p(x)p(Δ)=[p(Δ)]p(\Delta)=[p(\Delta)]
证明 . 和上述定理类似。
推论 .Δ\Delta 对四则运算封闭,Δ\Delta 不是任何 Δ\Delta 上多项式方程的根。

加法

定理 .Δ\Delta 对加法封闭,则下一个对加法封闭的序数为 [Δ2][\Delta2]
证明 . 显然 {xx<Δ}\{x|x<\Delta\}{Δ+xx<Δ}\{\Delta+x|x<\Delta\} 两两不同,所以至少要包含它们。所以 <[Δ2]<[\Delta2] 的不对加法封闭。而因为 [Δ+x]=Δ+x[\Delta+x]=\Delta+x,所以 [Δ2][\Delta2] 对加法封闭。
定理 . 每个序数 α\alpha 都可以写成 [2β0+2β1++2βn1][2^{\beta_0}+2^{\beta_1}+\cdots+2^{\beta_{n-1}}],其中 nn 有限,β\beta 严格递减。且 α=[2β0]+[2β1]++[2βn1]\alpha=[2^{\beta_0}]+[2^{\beta_1}]+\cdots+[2^{\beta_{n-1}}]
(例如,6=[22+21]=[22]+[21]=4+26=[2^2+2^1]=[2^2]+[2^1]=4+2。)
(注:这也就说明了加法就是异或。)
证明 .α>0\alpha>0,则取最大的 2βα2^\beta\le \alpha,设 α=[2β+γ]\alpha=[2^\beta+\gamma],显然 γ<2β\gamma<2^\beta,故 α=[2β]+γ\alpha=[2^\beta]+\gamma。归纳即可。

扩张(试试看!)

来试着通过扩张的几个定理来扩张,得到一些对四则运算封闭的序数吧!
首先最小的非平凡的肯定是 2={0,1}2=\{0,1\}。我们知道,接下来需要找到一个无解方程。显然一次方程就是除法,不可能无解。二次方程呢?对于有限的对四则运算封闭的 nn,如果有一个无解的二次方程,那下一个就是对四则运算封闭的 [n2]={[an+b]a<n,b<n}={an+ba<n,b<n}[n^2]=\{[an+b]|a<n,b<n\}=\{an+b|a<n,b<n\} 了。(记 nnFn\mathbb F_n,这其实就是 Fn[x]/p(x)\mathbb F_n[x]/p(x),其中 p(x)p(x) 为字典序最小的无根多项式)
定理 . 对于有限的 nn,若 nn 对四则运算封闭,则对任意 a<na<n,存在 b<nb<nb2=ab^2=a
证明 . 显然 cc2(c<n)c\to c^2(c<n) 为单射,故为满射。
所以不需要考虑 x2x^2 型的了。那 x2+xx^2+x 呢?
定理 . 对于有限的 n>1n>1,若 nn 对四则运算封闭,恰有半数 a<na<n,满足不存在 b<nb<nb2+b=ab^2+b=a
证明 . 显然 c2+c=d2+dc^2+c=d^2+d 当且仅当 (c+d)(c+d+1)=0(c+d)(c+d+1)=0,即 c=dc=dc=d+1c=d+1,故恰有一半的 c2+cc^2+c 能被取到。
因此有限情况的扩张都是 x2+x+ax^2+x+a,于是我们做完了……?等等扩张完还是封闭的吗?显然加、乘是封闭呢。除呢?(其实有更一般的关于扩张的证明,但是这里不必要)
定理 . 对于有限的 nn,若 nn 对加法、乘法封闭,则 nn 对四则运算封闭。
证明 .c0c\neq 0,则 xcx(x<n)x\to cx(x<n) 为单射,故为满射,故存在 cx=1cx=1
好,于是我们有:
定理 . 所有有限的对四则运算封闭的序数为:
2,4,16,,[22n],2,4,16,\cdots,[2^{2^n}],\cdots
其中每一个是上一个的[平方]。
证明 . 刚才所讨论的就是这个。
推论 .k<[22n]k<[2^{2^n}],则 22nk=[22nk]2^{2^n}k=[2^{2^n}k]
等等,知道是域有什么用,到底怎么算啊?242\to 4 的过程中,最小的无解方程为 x2+x+1x^2+x+1,故 22=2+1=32^2=2+1=34164\to 16 的过程中,最小的无解方程为 x2+x+2x^2+x+2,故 42=4+2=64^2=4+2=6。在 1625616\to 256 的过程中呢?对于每个 x<16x<16 计算 x2+xx^2+x,发现恰好是 070\sim 7 各一个……?因此 162=16+8=2416^2=16+8=24
更一般地,我们考虑证明:
定理 .
  1. 对于任何非负整数 nn,若 x<[2n]x<[2^n],则 x2<[2n]x^2<[2^n]
  2. 对于任何正整数 xxxxx2x^2 的最高位相同。换言之,若 x<[2n+1]x<[2^{n+1}],则 x2+x<[2n]x^2+x<[2^n]
  3. 对于任何非负整数 nn{x2+xx<[22n]}=[22n1]\{x^2+x|x<[2^{2^n}]\}=[2^{2^n-1}]
  4. 对于任何非负整数 nn[22n]2=[32×22n][2^{2^n}]^2=[\dfrac32\times2^{2^n}]
证明 . 以下归纳不会出现循环论证交给读者作为练习。
  1. 因为 (x+y)2=x2+y2(x+y)^2=x^2+y^2,且 [2n][2^n] 是一个群,因此只需证明 x=[2k]x=[2^k] 的情况 x2<[2k+1]x^2<[2^{k+1}] 即可。设 k=[2ai]k=\sum [2^{a_i}],则 x=[22ai]x=\prod [2^{2^{a_i}}]。(因为 [22ai][2^{2^{a_i}}] 对四则运算封闭,所以乘法和直接乘没区别)因此 x2=[22ai]2x^2=\prod [2^{2^{a_i}}]^2。依归纳假设,这即为 x2=[22ai]+[22ai1]x^2=\prod [2^{2^{a_i}}]+[2^{2^{a_i}-1}]。按照乘法分配律展开后,每一项的[普通]积都不超过 [2k][2^{k}],因此 Nim 积也不超过 [2k][2^k](因为 Nim 积的排除项个数为普通积),即小于 [2k+1][2^{k+1}],故和小于 [2k+1][2^{k+1}]
  2. 根据 1.,有 yy2y\to y^2[2n][2^n][2n][2^n] 的双射,同时也是 [2n+1][2^{n+1}][2n+1][2^{n+1}] 的双射,因此是 [2n+1]\[2n][2^{n+1}]\backslash [2^n] 到自身的双射,即证。自然推出后半句。
  3. 之前证明过前者的大小刚好为 [22n1][2^{2^n-1}],而取值范围也在 [22n1][2^{2^n-1}] 内,即证。
  4. 根据 3.,最小需要扩展的多项式为 p(x)=x2+x+[22n1]p(x)=x^2+x+[2^{2^n-1}],即 [22n]2=[22n]+[22n1]=[22n+22n1]=[32×22n][2^{2^n}]^2=[2^{2^n}]+[2^{2^n-1}]=[2^{2^n}+2^{2^n-1}]=[\dfrac 32\times2^{2^n}]

计算

那么问题来了,我们怎么对 Nim 数进行计算呢?
定理 . 假设位运算的时间复杂度为 O(1)O(1),则存在 O(1)O(1) 的算法,给定 a,b<[22k]a,b<[2^{2^k}],计算 a+ba+b
证明 . 之前证明了 a+ba+b 是异或,调用即可。
定理 . 假设位运算的时间复杂度为 O(1)O(1),则存在 O(3k)O(3^k) 的算法,给定 k,a<[22k]k,a<[2^{2^k}],计算 a[22k1]a[2^{2^k-1}]
证明 . k=0k=0 时可以 O(1)O(1) 计算。若 k1k\ge 1,设 α=[22k1],B=[22k1],β=[22k11]\alpha=[2^{2^k-1}],B=[2^{2^{k-1}}],\beta=[2^{2^{k-1}-1}],则 α=Bβ\alpha=B\beta。设 a=[Bp+q]=Bp+qa=[Bp+q]=Bp+q,则 aα=aBβ=βB(Bp+q)=B2βp+Bβq=βp(B+β)+βqB=(p+q)βB+pββa\alpha=aB\beta=\beta B(Bp+q)=B^2\beta p+B\beta q=\beta p(B+\beta)+\beta qB={\color{red}(p+q)\beta}B+{\color{blue}p\beta\beta}。递归计算 L=(p+q)β,R0=pβ,R=R0βL=(p+q)\beta,R_0=p\beta,R=R_0\beta,则答案为 LB+R=[LB+R]LB+R=[LB+R]。时间复杂度 T(k)=3T(k1)+O(1)=O(3k)T(k)=3T(k-1)+O(1)=O(3^k)
定理 . 假设位运算的时间复杂度为 O(1)O(1),则存在 O(k3k)O(k3^k) 的算法,给定 a,b<[22k]a,b<[2^{2^k}],计算 abab
证明 . k=0k=0 时可以 O(1)O(1) 计算。若 k1k\ge 1,设 B=[22k1],β=[22k11]B=[2^{2^{k-1}}],\beta=[2^{2^{k-1}-1}]。设 a=pB+q,b=rB+sa=pB+q,b=rB+s,则 ab=(pB+q)(rB+s)=prB2+(ps+qr)B+qs=pr(B+β)+(ps+qr)B+qs=(pr+ps+qr)B+prβ+qsab=(pB+q)(rB+s)=prB^2+(ps+qr)B+qs=pr(B+\beta)+(ps+qr)B+qs=(pr+ps+qr)B+pr\beta+qs。递归计算 L0=(p+q)(s+r),L1=qs,L=L0+L1,R0=pr,R1=R0β,R=R1+L1L_0=(p+q)(s+r),L_1=qs,L=L_0+L_1,R_0=pr,R_1={\color{red}R_0\beta},R=R_1+L_1,则答案为 LB+R=[LB+R]LB+R=[LB+R]。时间复杂度 T(k)=3T(k1)+O(3k)=O(k3k)T(k)=3T(k-1)+O(3^k)=O(k3^k)

关于本题

我们还需要证明一个性质:
定理 . 对于对四则运算封闭的 n=[22k]n=[2^{2^k}],任意 x<nx<nxn=xx^n=x
证明 . x=0x=0 时显然。否则 yxyy\to xynn 到本身的双射,且 00 映射到 00。因此 y=1[n1]y=y=1[n1]xy\prod\limits_{y=1}^{[n-1]}y=\prod\limits_{y=1}^{[n-1]}xy,两边消去 y=1[n1]y\prod\limits_{y=1}^{[n-1]}y 可得 x[n1]=1x^{[n-1]}=1,即 xn=xx^n=x
以上。

评论

13 条评论,欢迎与作者交流。

正在加载评论...