博客里表格渲染有问题,建议去
剪贴板里看。
前言
之前很喜欢群论,但是大学教材看不懂,只好作罢。
有一天在知乎上看到
一个专栏,重燃了对群论的热情,决定来写一篇文章。
reference:上面那个专栏,还有维基百科。
群论是抽象代数的分支。它已经很抽象了,所以学习的时候要尽量直观理解,不然就只剩一堆符号了。本文尽量多举一些例子。
定义
给集合配上运算,就构成了代数系统。
如果代数系统没有什么性质,通常就研究出不太多东西;如果性质太多,通常用处就不广。
群就是一个非常典型、非常著名的代数系统。
群
一个集合
G 和一个二元运算
∗:G×G→G,构成一个群
(G,∗),当且仅当满足:
- 封闭性。对于任意 g,h∈G,g∗h∈G。这其实是代数系统的要求。
- 结合律。(a∗b)∗c=a∗(b∗c)。
- 存在单位元 e∈G,使得群中任意元素 g∈G 都满足 e∗g=g。
- 对于群中任意元素 g∈G,都存在逆元 g−1∈G 满足 g−1∗g=e。
不会引起歧义的情况下,可以用
G 代替
(G,∗) 表示群。
举个例子,比如
G 是整数集,
∗ 是加法。
- 任意两个整数相加,结果都是唯一的整数。
- 整数加法满足结合律。
- 整数加法的单位元是 0,因为任意整数加 0 不变。
- 整数加法中,一个数的逆元是它的相反数,因为一个数加上相反数等于单位元 0。
所以整数加法构成群。
模质数
p 乘法也是群,因为每个数都有逆元。但是加法群里必须有
0(单位元),乘法群里不能有
0(它没有逆元)。所以模
n 加法群有
n 个元素,模质数
p 乘法群只有
p−1 个元素。
更多例子:
- 实数加法群。
- 正实数乘法群。
- n 阶可逆矩阵乘法群。
如果一个代数系统满足结合律,叫半群;如果满足结合律和存在单位元,叫幺半群。
对于一个群
(G,∗),如果
G′ 是
G 的子集,而且
(G′,∗) 也构成群,则称群
G′ 是群
G 的
子群,记作
G′≤G。注意不是任意子集都能构成子群的,子群必须包含单位元和它里面每个元素的逆元。
如果
G 是有限集,则群
(G,∗) 称为
有限群;反之为
无限群。
注意群运算不一定满足交换律。满足交换律的群叫阿贝尔群(或者叫交换群),不满足交换律的群叫非阿贝尔群。
一般满足结合律而不一定满足交换律的运算一般被叫做“乘法”,即使它们并不是通常意义下的乘法。乘法的单位元是
1,所以群的单位元又叫幺元。
阿贝尔群中的运算同时满足结合律和交换律,一般可以被叫做“加法”,单位元可以叫零元。
一个元素和它的逆元、一个元素和单位元,一定是可交换的。
对于一个群
(G,∗) 和它里面的一个元素
g∈G,满足
g∗g−1=e。
证明:
g∗g−1=e∗g∗g−1=g−1−1∗g−1∗g∗g−1=g−1−1∗e∗g−1=g−1−1∗g−1=e。
对于一个群
(G,∗) 和它里面的一个元素
g∈G,满足
g∗e=g。
证明:
g∗e=g∗g−1∗g=g。
很多地方直接定义
∀g∈G,ge=eg=g 的
e 是单位元。上面的定理说明,这个定义和我给的定义是等价的。
一些结论
单位元唯一
证明:设
e1,e2 是群
G 的单位元,则
e1=e1e2=e2。
逆元唯一
证明:对于群
G 中的元素
g∈G,如果
h1,h2 是
g 的逆元,则
h1=h1e=h1gh2=eh2=h2。
对于
a,b∈G,有且只有一个
c∈G 满足
ac=b。
证明:
存在:取
c=a−1b。
唯一:如果
ac=b,则
c=ec=a−1ac=a−1b。
于是群里可以自由地做除法。
a−1−1=a
证明:
a−1 同时是
a−1−1 和
a 的逆元,根据逆元唯一可知
a−1−1=a。
消去律:若
ac=bc 则
a=b。
证明:
ac=bc⇒acc−1=bcc−1⇒ae=be⇒a=b。
魔方群
不光数学上的东西可以用群论描述,一些现实中的东西,比如魔方和分子(《群论在化学中的应用》)也可以用群论描述。
首先确定魔方群的集合和运算。
如果你认为魔方群的运算是“拧魔方”,那就错了。这不是二元运算。
实际上,魔方群中的元素是魔方的状态。同时每个元素也代表从复原态到这个状态的变换,或者说打乱公式。
比如下面这个魔方状态就是魔方群里的一个元素。它还代表一个公式 R,也就是它的打乱公式。
你可能会说,同一种打乱效果是可以用不同公式完成的。是的,但是这里并不区分这些公式,因为它们的效果是完全一样的。
所以严格来说,与魔方打乱结果一一对应的,不是打乱公式,而是这种打乱的变换。不管你是用哪个公式打乱的,只要效果相同,都不加区分。
其实魔方群的元素只有变换一种意思也可以,加个魔方状态只是为了直观。魔方群的运算也是关于变换而不是状态的。
魔方群的运算是变换的复合。简单地说,就是把两个公式串起来。
变换的复合满足结合律(不管先做 AB 再做 C,还是先做 A 再做 BC,效果是一样的);变换的单位元是恒等变换(公式为空,状态为复原状态);变换的逆元是逆变换(比如公式 RU 的逆元就是 U'R')。所以这确实构成群。
魔方群是非阿贝尔群,例如 RU 和 UR 效果不同。
但是群论告诉我们,一个公式和它的逆元一定是可交换的。比如 RUU'R'=U'R'RU。
幂和阶
幂
an:={aan−1a−1an+1(n>0)(n<0)
群的阶就是群集合的大小。不过这里说的阶是元素的阶。
元素
g∈G 的
阶是满足
gm=e 的最小正整数
m。如果没有这样的
m,称
g 有无限阶。
比如整数加法群中
1 就有无限阶。魔方群里“旋转一个面
90∘”的阶是
4,因为转四次相当于没转。
有限群
G 中任意元素
g∈G 的阶都是有限的。
证明:列出
g1,g2,g3,⋯,g∣G∣+1。其中有
∣G∣+1 个元素,但是群
G 只有
∣G∣ 个元素。
根据抽屉原理,"数"列中一定有至少两个元素相等,设
gi=gj(i<j)。根据消去律,
gj−i=e。
元素
g 的阶一定不超过
j−i。
对称群
这里指 Symmetric group,因为还有个 Symmetry group 也可以叫对称群(一般称为空间对称群)。
给定一个数列
1,2,3,⋯,n,它有
n! 种排列。
例如,
3 个数有
3!=6 种排列,如下:
1,2,31,3,22,1,32,3,13,1,23,2,1
与刚才魔方群思路类似,这
6 种排列都对应于
置换。
比如
2,3,1 对应于
1 2 3↓ ↓ ↓2 3 1。这个置换可以写作
(1,2,32,3,1)。
当然,这个置换也可以写成
(2,1,33,2,1),交换列是不影响的。
这么写比较麻烦,所以一般写作
(1,2,3),表示这个置换是
1→2→3→1。我们把形如
(a1,a2,a3,⋯,ak) 的置换称为
轮换。
同理,
(1,2,33,1,2) 可以写成
(1,3,2);
(1,2,3,42,1,4,3) 可以写成
(1,2)(3,4)。
(1,2)(3,4) 不是轮换,但可以拆成若干个轮换;任何置换都能拆成若干个轮换。
(1,2,32,1,3),即
(1,2)(3),可以简写成
(1,2),但它仍然是拆成两个轮换。
置换的运算是置换的复合,符号是
∘。它的意思是连续进行两次置换。
(1,2,3,⋯,na1,a2,a3,⋯,an)∘(a1,a2,a3,⋯,anb1,b2,b3,⋯,bn)=(1,2,3,⋯,nb1,b2,b3,⋯,bn)
(1,2,32,1,3)∘(1,2,33,2,1)=(1,2,32,1,3)∘(2,1,32,3,1)=(1,2,32,3,1)
(1,2)∘(1,3)=(1,2,3)
置换的复合满足结合律;单位元是恒等置换
(1);逆元是逆置换(交换上下两行)。
这就是
对称群,记作
Sn。例如上面介绍的三个数上的对称群记作
S3(顺便说一句,这是最小非阿贝尔群)。
置换的复合不满足交换律,例如
(1,3)∘(1,2)=(1,3,2)=(1,2,3)。
有限对称群的子群称为置换群。之后有个定理说明,任何有限群都同构于一个置换群,说明了置换群的重要性。
交错群
首先需要知道,
(a1,a2,a3,⋯,ak)=(a1,a2)∘(a1,a3)∘(a1,a4)∘⋯∘(a1,ak)。归纳法易证。
称这种将两个数交换的置换为对换,并将置换全部分解成对换。
如果一个置换能分解出偶数个对换,这个置换称为偶置换;反之称为奇置换。
所有偶置换也可以构成群,因为恒等置换是偶置换,而且偶置换的逆元也是偶置换。这个群称为
交错群,记作
An。交错群
An 是对称群
Sn 的子群。
交错群的例子:魔方中,不改变角块位置,则棱块位置构成
A12 群。因此只有三棱换,不能只交换两个棱块。
简单证明:魔方每次旋转一个面,对棱块和角块的位置都是奇置换。所以如果角块不改变位置,是偶置换,则棱块也是偶置换。
推论:三棱换公式长度一定是偶数,PLL 中“T 字公式”长度一定是奇数。
循环群
有限循环群
Zn 就是模
n 加法群,无限循环群就是整数加法群
Z。
正经的定义:如果群
G 中存在元素
a∈G,使得群中每个元素都是
a 的幂,称
a 是群
G 的
生成元,群
G 是
循环群。有限循环群记作
Zn,其中
n 是群元素个数;无限循环群记作
Z。
为什么它就是模
n 加法群呢?
有限循环群中从
e 开始反复乘
a,直到变成
e,过程中生成的
a1,a2,a3,⋯,e 和模
n 加法群的
1,2,3,⋯,0 是同构的。
无限循环群中用从
e 开始反复乘
a,得到的
a1,a2,a3,⋯ 和整数加法群的
1,2,3,⋯ 是同构的。
循环群是被研究得很透彻的一类群。如果某个群同构于循环群,那就很好。
熟悉数论的读者可能发现了,模质数
p 乘法群
({1,2,⋯,p−1},×) 就是循环群,生成元就是
p 的原根。
显然,
Zn 中任意的
ak(k⊥n) 都可以当做生成元,所以
Zn 有
φ(n) 个生成元。于是我们轻松证明了
p 有
φ(p−1) 个原根。
同构
对于两个群
(G,∗) 和
(H,⋅),如果存在一个双射
f:G→H,满足:
对于任意的
g,g′∈G,都有
f(g∗g′)=f(g)⋅f(g′);
对于任意的
h,h′∈H,都有
f−1(h⋅h′)=f−1(h)∗f−1(h′);
则称
G 同构于
H,
f 是同构映射。
同构的意思容易理解,就是完全一样。
我们来证明一下刚才提到的定理。
Cayley 定理
任何有限群
(G,∗) 都同构于一个置换群
H。
首先要理解,用一个元素乘整个集合,其实就是一个置换。
比如下面这个群(这个表就叫 Cayley 表):
| ∗ | e | a | b |
|---|
| e | e | a | b |
| a | a | b | e |
| b | b | e | a |
用
a 去乘
(e,a,b),得到
(a,b,e)。这就是个置换。
任何一个元素乘
a 再乘
b,相当于乘
a∗b(因为
G 中的结合律)。所以整个集合进行“乘
a”的置换,再进行“乘
b”的置换,等效于进行“乘
a∗b”的置换。
根据这个结论不难证明 Cayley 定理。
设群
G={g1,g2,g3,⋯,gn}。
构造置换群
H={(g1,g2,g3,⋯,gngkg1,gkg2,gkg3,⋯,gkgn)∣1≤k≤n}。
取双射
f(gk)=(g1,g2,g3,⋯,gngkg1,gkg2,gkg3,⋯,gkgn)。
同态
对于两个群
(G,∗) 和
(H,⋅),如果存在一个映射
f:G→H,满足对于任意的
g,g′∈G,都有
f(g∗g′)=f(g)⋅f(g′),则称
G 同态于
H,
f 是同态映射。
如果
f 是满射,这个同态称为
满同态;如果
f 是单射,这个同态称为
单同态。
感觉这个定义并不是很直观,这里放一张图。
左边蓝色圈是群
G,右边黄色圈是群
H。
G 同态于
H,同态函数是
h。
H 中灰绿色的圈是
H 的一个子群
im(h),即
G 在映射
h 下的
像。
由于像是
G 映射出来的,所以像中的性质在
G 中都能找到。或者说,
G 包含了像的结构。
G 中红色圈里的元素都被映射到了
H 中的单位元(右边的
1)。这个红色圈就是同态的
核 ker(h)。
这张图还很好地展示了商群的概念,之后再说,到时候对同态的理解应该会更深。
陪集
设
H 是群
G 的一个子群,
g∈G,则左陪集
gH={gh∣h∈H},右陪集
Hg={hg∣h∈H}。
陪集就是
g 与
H 中每个元素的乘积构成的集合,你也可以认为陪集就是
g 与
H 这个集合的乘积。
正规子群
对于群
G 的一个子群
H,如果对于任意的
g∈G 与
h∈H 都有
ghg−1∈H,则
H 是
G 的正规子群,记作
H⊴G。
正规子群还有一个等价的定义:如果对于任意的
g∈G,有
gH=Hg,那么
H⊴G。
下面对正规子群和非正规子群各举一个例子。
eabcdf=(1,2,31,2,3)=(1,2,32,3,1)=(1,2,33,1,2)=(1,2,32,1,3)=(1,2,33,2,1)=(1,2,31,3,2)
| ∗ | e | a | b | c | d | f |
|---|
| e | e | a | b | c | d | f |
| a | a | b | e | d | f | c |
| b | b | e | a | f | c | d |
| c | c | f | d | e | b | a |
| d | d | c | f | a | e | b |
| f | f | d | c | b | a | e |
其中子群
A3={e,a,b}(标红)是
S3 的一个正规子群。
因为对于任意一个元素
g,比如说
c,无论从左边乘上
A3 还是从右边乘上
A3,得到的结果是相同的,都是
{c,d,f}(标蓝)。
| ∗ | e | a | b | c | d | f |
|---|
| e | e | a | b | c | d | f |
| a | a | b | e | d | f | c |
| b | b | e | a | f | c | d |
| c | c | f | d | e | b | a |
| d | d | c | f | a | e | b |
| f | f | d | c | b | a | e |
而
S3 的另一个子群
G={e,c},就不是正规子群。用
a 从左边乘
G 得到
{a,f},用右边乘
G 得到
{a,d}。
求证:核
ker(h:G→H)⊴G。
先令
K=ker(h),比较方便。
也就是求证:对于任意
g∈G,有
gK=Kg。
考虑把
g 和
K 都映射到群
H 中。
g 变成
h(g),
K 变成群
H 中的单位元。任何元素和单位元的乘法都是可交换的,证毕。
商群
对于一个群
G 的正规子群
H,定义它们的商群
G/H={gH∣g∈G}。
这个定义有点难懂。
可以这么认为,将每个元素
g 都和
H 相乘,乘积就是陪集。有些元素与
H 的乘积相同。那么将这些乘积去重后,剩下的不同乘积就构成了商群。(其实只有集合,运算还没定义呢)
如何证明商群是群呢?首先定义商群的运算。
(gH)(g′H)={hh′∣h∈gH,h′∈g′H},也就是说,将这两个集合中的元素两两相乘,就得到乘积。
我们自然希望
(gH)(g′H)=(gg′)H,这样就可以根据
G 是群来推出
G/H 是群。
-
必要性。如果
x∈(gg′)H,那么
x∈(gH)(g′H)。
证明:因为
x∈(gg′)H,所以存在
h,使得
x=gg′h=(ge)(g′h)。
其中
ge∈gH,
g′h∈g′H。证毕。
-
充分性。如果
x∈(gH)(g′H),则
x∈(gg′)H。
因为
x∈(gH)(g′H),所以存在
h,h′,使得
x=ghg′h′=gg′g′−1hg′h′。
注意到根据正规子群的性质,其中
g′−1hg′ 是属于
H 的。
设
g′−1hg′=h′′,则
x=gg′h′′h′∈(gg′)H。
还是举那个例子,
S3/A3 得到什么群呢?
注意到
e,a,b 乘上
A3 后都得
{e,a,b},而
c,d,f 乘上
A3 后都得
{c,d,f}。
所以得到的群就是这么一个小群:
| ∗ | {e,a,b} | {c,d,f} |
|---|
| {e,a,b} | {e,a,b} | {c,d,f} |
| {c,d,f} | {c,d,f} | {e,a,b} |
也许你会问:刚才我们是那么定义陪集的乘法的,但是如果直接定义
(gH)(g′H)=(gg′)H,不就不需要
H 是正规子群了吗?
那么,我们试试用这个定义求
S3/G,其中
G={e,c}。
你会发现,
bG=dG={b,d},但是
(bG)(aG)=(ba)G=eG={e,c},并不等于
(dG)(aG)=(da)G=fG={a,f}。所以其实这个运算的结果都是不能确定的。
这有两个显然的结论:
G/{e}=G,
G/G={e}。
一个群同态于它的商群(同态函数显然可以取
f:g→gH),同态的核就是
H。
反过来说,如果群
G 同态于群
H,则核
K⊴G,而且
G/K≅im(h)(像)。
再放一遍这张图。
这是一个同态,我们要证明
G/K≅im(h)。
首先证明:
G 中的任意元素
a,乘上核
K 得到的陪集
aK,就是左边那个黄圈(黄圈的定义是,经过
h 映射后,结果和
a 一样的那些元素)。
充分性:设
k∈K,则
h(ak)=h(a)h(k)=h(a),所以
ak∈ 黄圈。
必要性:设
b∈ 黄圈,则
h(ab−1)=h(a)h(b−1)=h(a)h(b)−1=h(a)h(a)−1=e,所以
ab−1∈K。
所以
im(h) 中的元素和
K 的陪集一一对应。易证这种双射确实导致两个群同构。
Burnside 引理
久 等 了。
这两章(Burnside 引理和 Pólya 定理)在大部分群论教程里都没有,所以参考资料单独列出来:维基百科,
OI-Wiki,
cmd 的博客,刘汝佳的蓝书。
考虑作用在
n 个物品(如果也称为元素的话容易和群元素混)上的置换群
G(或者说
Sn 的某个子群)。
考虑用
G 中每个元素置换物品
k,得到一个集合
Ek={g(k)∣g∈G},称为
k 的
轨迹。
那对于
Ek 中的某个物品
l∈Ek,有多少个置换将
k 挪到
l 呢?
恰好
∣Ek∣∣G∣ 个。
先来定义两个概念:如果在
g 置换下,物品
k 没有改变,就称
k 是
g 的
不动点,
g 是
k 的
不动置换。
设
k 有
x 个不动置换。一定存在某个置换
g 将
k 挪到
l,那么将那
x 个
k 不动置换和置换
g 复合,得到的一定是将
k 挪到
l 的置换。所以将
k 挪到
l 的置换至少有
x 个。
反过来,设将
k 挪到
l 的置换有
y 个,将这
y 个置换和
g−1 复合,得到都是
k 不动置换。所以
k 不动置换也至少有
y 个。
所以将
k 挪到
Ek 中任何一个元素的置换个数相等。
这就是轨道-稳定化子定理(名字有点像化学概念?)。
接下来我们计算每个物品的不动置换个数之和。
它显然等于每个置换的不动点个数之和。
我们来把这个等量关系列出来,看看能得到什么结论。
设
l 为不同轨迹个数,
c(g) 为置换
g 的不动点个数。
要计算每个物品的不动置换数之和,不妨按照轨迹计算。
对于一个轨迹
E,里面的每个物品都有
∣E∣∣G∣ 个不动置换。
所以这
∣E∣ 个物品的不动置换数为
∣G∣。
所以每个物品的不动置换数之和是
∣G∣l。
要计算每个置换不动点个数之和,就是
g∈G∑c(g)。
所以得到结论
l=∣G∣1g∈G∑c(g)。
意思是说,轨迹个数等于平均不动点个数。
这就是 Burnside 引理。
Pólya 定理
和 Burnside 引理一样,
n 个珠子(还是防止和物品混淆所以换个名字)上有一个置换群
G。
这次我们要给这
n 个珠子染色,一共有
k 中颜色。如果一种染色方案可以用
G 里的一种置换变成另一种染色方案,我们称两种染色方案是本质相同的。
举个例子,对于下图的种染色方案
b 进行
(1,2) 置换,得到染色方案
d,所以
b 和
d 是本质相同的。
求本质不同的染色方案个数。
套用 Burnside 引理,但物品不是这
n 个珠子,而是
kn 种染色方案。置换群也不再是这个
G,而是作用在染色方案上的置换群
G′。
还是上面那个例子,假设
G={(1),(1,2)}。
G 中的置换
(1,2),实际上对应于染色方案的置换
(b,d)(c,g)(f,h)。
那么作用在染色方案上的置换群就是
G′={(a),(b,d)(c,g)(f,h)}。它的元素和
G 中的元素是对应的。
注意到本质不同的染色方案个数其实就是
G′ 的轨道数(想想轨道的定义)。比如上面例子中本质不同的染色方案有
6 个,刚好就是
6 个轨道
{a},{b,d},{c,g},{e},{f,h},{i}。
所以可以用 Burnside 引理求本质不同的染色方案个数,也就是
G′ 中每个置换的不动点个数的平均数。
(a) 有
9 个不动点,
(b,d)(c,g)(f,h) 有
3 个不动点(即
a,e,i)。
这两个数有什么好的计算方法吗?
为什么
(b,d)(c,g)(f,h) 有
3 个不动点?因为两个珠子必须是同一种颜色,所以有
k1 个不动点。为什么指数是
1?因为
(1,2) 可以拆成一个轮换
(1,2)。每个轮换的颜色必须相同,所以有
k 个不动点。
同理,为什么
(a) 有
9 个不动点?因为两个珠子都可以随意染色,所以有
k2 个不动点。为什么指数是
2?因为
(1) 可以拆成两个轮换
(1)(2),给这两个轮换染色,有
k2 种方法。
于是总结出规律:置换
g∈G′ 的不动点数,等于
k它对应的 G 中的置换的轮换数。
本质不同染色方案数 =
G′ 的轨迹数 =
G′ 的平均不动点数 =
G 的平均
k轮换数。
这就是 Pólya 定理。
写成公式的话就是本质不同染色方案数
l=∣G∣1g∈G∑km(g),其中
m(g) 表示
g 的轮换数。
n 个珠子(点)排成圈,有
n 种颜色。
G 是将圈旋转的置换群(是个循环群)。
对于
G 中的元素
g,设它将第一个点转到了第
k 个位置,那么容易发现
m(g)=gcd(k,n)。
所以这道题的答案就是
n1i=0∑n−1ngcd(i,n)。剩下就是枚举
gcd,暴力算欧拉函数。