用一道小学数学题,复习群、环、域、模和向量空间
0. 题目介绍
只用这一道高考模拟题,就可以复习抽象代数的群、环、域、模、向量空间等概念。题目如下图所示:

某地的高考模拟题,其实稍微试一下就能试出来,不难
简单来说,就是“牵一发而动周围”。改变一个格子,周围的格子也会转。相信不少人玩过这个益智游戏。这个游戏,小学生都可以看懂。
对于这个谜题,我们不仅想研究解的结构(例如何时有解,何时无解,以及解与解之间的关系),还想找到求解的通用算法。下文将会逐一展开。
阅读本文的前置要求:知道群、环、域、向量空间的基本定义;知道正规子群和商群的定义及其相关定理。
1. 群
1.1 单个开关:二阶循环群
先来简单地分析一下这道题:每个开关只有两种状态,那么这两种状态显然可以构成一个二阶循环群,也就是 $\mathbb{Z}_2=\mathbb{Z}/2\mathbb{Z}$ 。
1.2 所有开关:二阶循环群的直和
九个格子整体的所有状态,也可以构成群吗?答案是肯定的。
容易证明,群的直和可以构成群。
而开关阵列整体的所有状态是 $\mathbb{Z}_2^9=(\mathbb{Z}/2\mathbb{Z})^9$ ,也就是群 $\mathbb{Z}_2$ 与自己的直和。因此九个格子整体的所有状态确实可以构成一个群。这个群的加法恒等元就是所有格子为零的状态。
另外,这个群还是一个阿贝尔群(即加法满足交换律),证明留给读者。
1.3 所有操作构成的群
研究完了状态,下面我们来研究一下可能的操作。
可能的操作是从 $\mathbb{Z}_2^9$ 到 $\mathbb{Z}_2^9$ 的映射,且满足题设的限制(即改变一个格子的状态,会导致周围四个格子的状态也改变)。可能的操作还包括这些操作的任意叠加。
所有可能的操作也可以构成一个群,这个群就是九种基本操作(分别按动九个不同的格子)所张成的群。我们记这个群为 $M$ 。另外,记所有状态构成的群为 $S$ 。我们可以简称 $M$ 为“操作群”,简称 $S$ 为“状态群”。
$M $ 的加法恒等元就是“不操作”。
另外,这个群也是阿贝尔群,证明留给读者。
1.4 “操作群”是“状态群”的子群
设 $s_0 \in S$ 是开关阵列的初始状态, $m_k \in M$ 是对开关阵列进行的(一系列)操作。
显然,$m_k(s_0)=s_k\in S$ 。因此 $M$ 同构于 $S$ 的一个子群。或者也可以说, $M$ 就是 $S$ 的一个子群。
1.5 “操作群”是“状态群”的正规子群
因为 $S$ 和 $M$ 都是阿贝尔群,所以 $M$ 不仅是 $S$ 的子群,而且还是 $S$ 的正规子群。
1.6 商群
既然有正规子群,那么就有商群 $S/M$ 。
在这道题里,商群体现为什么?待我缓缓道来。
假设可以把 $S$ 分为 $n$ 个子集 $\{S_k\}\,(k=1,\cdots,n)$ (换言之, $\{S_k\}$ 是 $S$ 的一个划分),
使得 $S_k$ 内的元素之间可以通过操作(即 $m\in M$)互相转化得到,但 $S_k$ 的元素与 $S_l\,(k\neq l)$ 的元素之间不能通过操作(即 $m\in M$)互相转化得到,
这样的 $\{S_k\}$ 就是 $S$ 的一个商群(除以 $M$ )。
当然,以上这些条件并非商群的充要条件,而是必要条件。
也就是说,商群里的某一个元素是一个集合,这个集合是由原来的群里的某一个状态通过可能的操作(这些操作属于正规子群)可以得到的所有状态组成的集合。
上面这段话还挺绕的。总之,商群的元素是集合,或者说,商群是集合的集合。
打个比方,如果把群里的元素比作鸡蛋,那么商群里的元素就可以比作装鸡蛋的篮子。
如果商群里只有一个元素 {e},那么就说明所有的状态都可以从某一个状态出发得到。此时,$M$ 与 $S$ 同构。
说了这么多关于商群的东西,目的是为了揭示这类谜题的一个重要结构:有解的初始状态的集合及其陪集的元素数量是相等的。换句话说,
有解的初始状态的数量,是总状态数量的 1/n
存在 n 种不同的初始状态,它们之间无法互相转化。
至于这个 n 是多少,要对不同的开关阵列及其规则进行具体研究和求解。
2. 向量空间
第一节讲的全部都是群。没错,只需要群,我们就可以刻画整个谜题的代数结构了。但如果目标是求解,那么我们可能需要更强大的工具。这个工具是向量空间吗?
我们都知道向量空间是一个阿贝尔群 $V$ 加上一个域 $F$ ,并配备了数乘 $F \cdot V\rightarrow V$。
域 $F$ 可以让我们进行“更加定量”的操作,因此向量空间很可能是我们需要的用来求解的工具!
下图是某高中老师给的解答:

看起来确实是用了向量空间。毕竟用了矩阵嘛。
至于求逆矩阵的方法就是“土法”:同时对原矩阵和单位矩阵做初等变换,使得原矩阵变为单位矩阵;此时原来的单位矩阵就变成了逆矩阵。
实际上,这个向量空间的群是 $\mathbb{Z}_2=\mathbb{Z}/2\mathbb{Z}$ ,域也是 $\mathbb{Z}_2=\mathbb{Z}/2\mathbb{Z}$。
现在改一下问题,把每个开关有两种状态改成有三种状态( $0,1,2$ ),并且每次按动开关,只能轮换状态( $0\rightarrow1\rightarrow2\rightarrow0$ )。此时也可以建立向量空间,这个向量空间的群和域都是 $\mathbb{Z}_3=\mathbb{Z}/3\mathbb{Z}$(注意,在 $\mathbb{Z}_3$ 中,2 的乘法逆元是其自身,即 2 * 2 = 1 mod 3)。
但是向量空间真的是这类谜题的最终答案吗?其实不然,让我们往下看。
3. 模
现在改一下问题,把每个开关只有两种状态改成有四种状态( $0,1,2,3$ ),并且每次按动开关,只能轮换状态( $0\rightarrow1\rightarrow2\rightarrow3\rightarrow0$ )。
此时单个开关的所有状态构成了四阶循环群 $\mathbb{Z_4}$。所有开关总体的状态构成 $\mathbb{Z}_4^9$ ,记为 $S$ 。
同样,所有操作的集合构成 $S$ 的一个子群 $M$ 。
但是!问题来了, $\mathbb{Z}_4$ 并不是一个域(因为 2 这个元素没有乘法逆元),这样就没法建立美丽的向量空间了,因为向量空间要求必须是域才行。
幸亏,我们有一个救星,它是向量空间的姐姐,它叫做模(Module)。
与向量空间的定义相比,模的定义就是把域改成环了。
也就是说,模包括一个阿贝尔群和一个环,以及群和环之间的数乘。
太好了!$\mathbb{Z_4}$ 虽然不是一个域,但是是一个环。
而且,相比于向量空间,模确实能更好地描述离散群上的定量关系。你可以按动开关一次,两次,n次,但是不能按动1.5次!
也就是说,用环就足够了,不需要域上的除法来产生分数(况且,分数在这个问题中本就是 nonsense,你不可能按动分数次开关)。
至此,我们就得出了描述整个谜题所需要的代数结构,以及定量求解该谜题所需要的代数结构。它们分别是群和模。
另外,正规子群与群相等的关系,可以用模上的“线性无关”来表述。即如果每个开关对应的模里的元素彼此“线性无关”,则所有状态都可以从同一个状态出发得到。这个关系也等价于矩阵的行列式非零(还是挺像线性代数的嘛!)
4. 总结
对于“牵一发而动周围”类型的谜题(益智游戏),我们用群论研究了这类谜题的解的性质,并且用模论得到了一般的求解方法。
5. 尾声
那么,对于更一般的群 $\mathbb{Z}_n^m$,它有什么样的正规子群和商群?
商群的结构可以告诉我们,对于上述谜题,什么样的初始状态有解,以及有多少组不同的初始状态,使得这些状态之间无法互相转化。我想这个问题应该是很有趣的。
如果读者恰好研究过 $\mathbb{Z}_n^m$ 的正规子群,请在评论区一起讨论,笔者将十分感谢!