目录

用一道小学数学题,复习群、环、域、模和向量空间

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. 有解的初始状态的数量,是总状态数量的 1/n

  2. 存在 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\) 的正规子群,请在评论区一起讨论,笔者将十分感谢!