漫谈OI中的群论(转载)

本文原地址:http://blog.csdn.net/xym_CSDN/article/details/53456447

前言

本文以群论的一些基本概念及定理证明为主,且多为信息学竞赛所应用,如有不当之处,还望指正
本文对burnside引理与Polya定理仅作引入与证明,达到初步理解的目的,不作深入讨论,具体题目和实现方法会在以后的博文中有所提及

定义

如果从公式化地来说,群G是一个定义在二元组(S,⋅)的代数结构
S是一个集合,⋅是一个二元运算符,并不是指乘号,比如平常我们在数集上所使用的+ − × ÷,集合运算中使用的∪ ∩都是二元运算
满足下列条件的二元组G=(S,⋅)可以称为群

1.封闭性

∀x,y∈S,x⋅y∈S
通俗来讲,就是集合S中任取两个元素,它们⋅运算后的结果也是S中的元素
比如S是二维向量集,⋅是点积,显然这个二元组不是群,因为运算得到的元素不属于S

2.结合律

∀x,y,z∈S,(x⋅y)⋅z=x⋅(y⋅z)
这个比较简单,不说了

3.单位元

∃e∈S,∀x∈S,e⋅x=x⋅e=x
例如
S=Z,⋅=+时,e=0
S=R,⋅=×时,e=1
S=N+,⋅=−时,没有单位元
如果G是加法群时,G中的单位元换叫做“零元”,记为0

4.逆元

∀x∈S,∃y∈S,x⋅y=y⋅x=e
在这种情况下我们可以把y写成x−1
例如
S=Z,⋅=+时,x−1=−x
S=R,⋅=×时,x−1=1x,所以这个二元组不是群,因为0不是逆元

显然(S=N,⋅=+),(S=Z,⋅=×)不是群,因为它们中并不是所有的元素都有逆元
在群中,每个元素都是有逆元的
其实还有左右逆元之分,但是在群中,左逆元=右逆元
证明:
∀x∈G,∃a∈G,a⋅x=e,即a是x的左逆元
显然
∃b∈G,b⋅a=e
那么
x⋅a=(b⋅a)⋅(x⋅a)=b⋅(a⋅x)⋅a=b⋅a=e
即a也是x的右逆元

如果G是加法群时,a的逆元改叫做“负元”,并记为−a

相关概念

G中所含元素的个数,称为群G的阶,记为|G|,即S中所含元素的个数
因此G可以根据|G|是否为+∞,分为有限群和无限群
实际上G中的元素也有阶的定义,此处作为了解

在群G中,a∈G。如果有整数k,使ak=e,那么使这个等式成立的最小正整数k叫做a的阶,记为k=|a|
(ak表示连续k个a进行G中规定的运算,不是传统意义上的k个a相乘)
如果这样的k不存在,则称a的阶是无限的,记为a=+∞

消去律

其实早在小学我们就接触过一些
b=c⇔a+b=a+c
b=c⇔a×b=a×c (a≠0)
对于群中的消去律来说,它的定义是x=y与x⋅a=y⋅a互为充分必要条件
注意这里的x,y,a都是指的是群中的任意元素
当S是有限集,在具有封闭性,结合律和单位元的二元组(S,·)里,逆元存在⇔消去律存在
证明:
先说简单的,逆元存在⇒消去律存在
只要在x⋅a=y⋅a两边同时乘以a−1就可以了
消去律存在⇒逆元存在
对于a∈S,建立一个新二元组(S′={x⋅a|x∈S},⋅)
根据封闭性,S′⊆S,
而且由于不会存在类似x⋅a=y⋅a这样的重复元素情况(因为消去律的存在保证这种情况下x=y,违背集合元素的不重复性),所以|S′|=|S|
所以S′=S
又因为e∈S,所以e∈S′
所以∃t∈S,t⋅a=e
t就是a的逆元了

置换群

在说置换群之前,我们先来谈谈置换
n个元素1,2,…,n之间的一个置换为
(1,2,3,...,na1,a2,a3,...,an)
表示1被a1取代,2被a2取代…n被an取代,其中a1,a2,...,an是[1,n]的一个排列
我们称其为一个n元置换
对于每一个置换,我们可以理解成由一个元素变成另一种元素,即对目标集[1,n]的一种重新排列,如果还是不理解,可以看下面这个例子
(1,2,3,43,1,2,4)
在这个四元置换下
对序列1,2,3,4经过置换就成了3,1,2,4,
对3,1,2,4再置换就成了2,3,1,4
容易发现置换中列的位置是可以改变的,也就是说
(1,2,3,43,1,2,4)=(4,2,3,14,1,2,3)
当n相等时,置换是可以相互运算的,我们称之为置换的连接,下文中我们将两个置换a,b写成ab的形式即是a,b的连接运算,运算规则如下
(1,2,3,...,na1,a2,a3,...,an)(a1,a2,a3,...,anb1,b2,b3,...,bn)=(1,2,3,...,nb1,b2,b3,...,bn)
显然置换的连接满足结合律,但不满足交换律
记一个n阶循环为
(a1a2,…an)=(a1,a2,...,ana2,a3,...,a1)
两个循环(a1a2a3..an),(b1b2b3..bm)不相交是指对于ai (i∈[1,n])来说,不存在bj (j∈[1,m]),使得ai=bj
因此置换也可以写成若干个互不相交的循环的乘积
例如上面举的这个例子,写成循环就是(1,2,3)(4)
数学归纳法的证明如下:
首先n=1时显然成立
当n≥2时,我们可以想象成在原来的n-1阶不相交循环里新加入了一个点n,设i→ai变成了i→n,这样[1,n]的排列a就缺少了ai,所以n→ai,显然这样操作之后仍然满足“互不相交的循环”

定义“n-循环节数”是奇数的置换为奇置换
“n-循环节数”是偶数的置换为偶置换
或者我们可以认为变成单位置换需要奇数次对换的置换为奇置换
变成单位置换需要偶数次对换的置换为偶置换
我们可以把每个循环看做是单位置换进行若干次对换得到的
比如循环(a1a2..an)是单位置换依次进行对换(a1,a2),(a1,a3)..(a1,an)得到的
(所以如果由(a1a2..an)变回单位置换,就是依次进行对换(an,a1)..(a3,a1)(a2,a1))
更进一步来说,每个置换都可以看做是单位置换进行若干次对换得到的
因此对于两个置换的连接,我们可以看做是这两个置换所包含的对换的连接,也就是说新置换进行“这两个置换对换次数之和”次对换一定能够变回单位置换,所以
奇置换·奇置换=偶置换
偶置换·偶置换=偶置换
奇置换·偶置换=奇置换
偶置换·奇置换=奇置换

再谈谈我对置换群定义的理解
具体来说,置换群中的元素是一些置换,运算是置换的连接。
比如对于一个4×4的棋盘,我们可以对它上面的格子进行编号,那样它就可以抽象成一个[1,16]的集合
然后我们规定8种置换:不动,左转90°,右转90°,旋转180°,以及翻折后的这四种操作
在这8种置换下,每个位置上的格子ai都会变成另一个格子bi
任意两个置换进行运算都可以得到这四种置换中的一种(封闭性)
置换又满足结合律
各元素的映射是其自身的置换是单位元e
而且每种置换都存在逆元
所以它们就可以组成一个置换群了

容易发现,把任意置换倒过来,各循环中元素不变,循环个数不变
即(1a12a23a3......nan)与(a11a22a33......ann)
写成循环形式后循环个数和各循环中元素不变,因为每个置换我们都可以看做若干个不相交的有向环,倒过来以后实际上就是把每个环中的边反向,所以环的个数和大小不变

陪集

设H是群G的子群,对于a∈G,{ah|h∈H}表示H的一个左陪集,记作aH;
{ha|h∈H}表示H的一个右陪集,记作Ha.
陪集有一些性质(由于左右陪集证明方法同理,因此下面证明仅讨论左陪集的情况):
注:下面的a,b∈G

1.H中任意陪集的大小(即元素个数)相等,都等于|H|

这个证明比较简单,因为结合律的存在,使得a⋅h(h∈H)不会有重复.

2.a∈aH,且a∈Ha

因为H是一个群,所以e∈H,所以a=a⋅e∈aH
a∈Ha同理

3.a∈H⇔aH=H

先说aH=H⇒a∈H:
由性质2得a∈aH,所以a∈H
再说a∈H⇒aH=H:
设H中的集合为{x1,x2,x3,...,xn}
由a∈H可知a−1∈H
设集合H′={a−1⋅x1,a−1⋅x2,a−1⋅x3,...,a−1⋅xn}
由封闭性可知H′⊆H
又因为H′=a−1H,由1得|H′|=|H|
所以H′=H
所以aH=aH′={x1,x2,x3,...,xn}
即aH=H

4.b∈aH⇔bH=aH

先说bH=aH⇒b∈aH
由性质2得b∈bH,所以b∈aH
再说b∈aH⇒bH=aH
显然b可以写成a⋅x(x∈H)的形式,
由性质3得xH=H
所以bH=a⋅xH=aH

5.aH∩bH≠∅⇒aH=bH

设c∈aH∩bH,由性质4得cH=aH=bH
实际上这句话阐述成
“对于G的子群H,H的任意两个左(右)陪集要么相等,要么无相交”

6.∪x∈GHx=G

因为e∈H,所以枚举所有的x∈G,所有陪集的并一定能组成G

相关定理

拉格朗日定理

H是有限群G的的子群,则|H|∣|G|

由性质5可知,H的陪集之间要么相等要么不相交,
由性质6可知,H所有陪集的并等于G
我们可以把H的不重合的陪集想象成若干条不相交的线段,覆盖在G上
这样G就被划分为了大小相等的若干段,
因此这个结论就十分显然了

轨道-稳定集定理

设G是[1,n]上的一个置换群,Ek是[1,n]在G的作用下包含k的等价类,Zk是使k不动的置换类,有|Ek|×|Zk|=|G|.

具体来说,k是目标集[1,n]上的一个位置,包含k的等价类Ek就是k通过G中的置换能得到的所有的位置,Zk就是置换f∈G的集合,要求k在经过置换f的作用后仍为k
我们来拿百度百科上的正方形顶点二着色问题来举例子
这里写图片描述
置换有四种:不动,向左旋转90°,旋转180°,向右旋转90°,为了方便表示,我们把这四种置换分别表示为f1,f2,f3,f4
(实际上,对于一般的正n边形顶点着色问题来说,置换应当有2n种,即旋转360°n⋅k(k=0..n−1)以及关于n条对称轴的翻折,但由于正方形顶点二着色比较特殊,翻折后的等价类可以通过不翻折的一次旋转直接得到,也就是说我们翻转置换的不动点数量和旋转置换的不动点数量是相同的,为了简化描述与解答,这里是4种了)
具体置换如下
不动:(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)(16)
向左旋转90°:(1)(2 3 4 5)(6 7)(8 9 10 11)(12 13 14 15)(16)
旋转180°:(1)(2 4)(3 5)(6)(7)(8 10)(9 11)(12 14)(13 15)(16)
向右旋转90°:(1)(2 5 4 3)(6 7)(8 11 10 9)(12 15 14 13)(16)
1的等价类E1就是{1},Z1={f1,f2,f3,f4}
2的等价类E2就是{2,3,4,5},Z2={f1}
11的等价类E11就是{8,9,10,11},Z11={f1}
我们称Ek为k的轨道,Zk为k的稳定化子
简单来说,这个定理就是

“轨道大小*稳定化子数=变换个数”

其实如果把陪集搞明白的话,证明这个定理还是非常容易的
我们发现Zk实际上是一个子群,因为k的置换不变,始终是k,所以在Zk中存在单位元e,且每个置换都有逆元,而且满足封闭和结合律
|Ek|实际上是Zk不重复陪集的个数,对于置换f∈Ek,由陪集的性质5可知fZk各不相交(因为f(k)的值各不相同)
所以定理得证

Burnside引理

写了这么多终于提到重头戏了

设G={f1,f2,…f|G|}是目标集[1,n]上的置换群。每个置换都写成不相交循环的乘积。
c(fi)是在置换fi的作用下不动点的个数,也就是长度为1的循环的个数。通过上述置换的变换操作后可以相等的元素属于同一个等价类。若G将[1,n]划分成L个等价类,则等价类个数L为:

L=1|G|∑i=1|G|c(fi)

我们先考虑一下这个等价类L的概念
实际上就是[1,n]在群G作用下不等价元素的个数
形象的说,我们可以把[1,n]看成n个点,而G中的置换相当于一些有向边,即n个点中每个点都会发出|G|条边,如果把这个图上的重边去掉,而L就是该图上的联通块数(实际上就是[1,n]上互不相交的循环个数),而每个联通块bi的大小实际上就是Ek(k∈bi),所以每个点k对答案的贡献就是1Ek

L=∑k=1n1Ek

由轨道-稳定集定理得

L=∑k=1nZk|G|=1|G|∑k=1nZk

由定义易得

∑k=1n|Zk|=∑i=1|G|c(fi)

该引理得证

如果[1,n]中各元素完成置换并判断是否相等的复杂度是O(p),那么使用burnside引理求等价类的复杂度是O(|G|np)
再拿上面的正方形顶点二着色问题举例,
这里n=16,|G|=4
c(不变)=16
c(左转90°)=2
c(旋转180°)=4
c(右转90°)=2
所以L=6

Polya定理

设G={a1,a2,…a|G|}是目标集[1,n]上的置换群。每个置换都写成不相交循环的乘积。
m(fi)是在置换fi的作用下循环节的个数,通过上述置换的变换操作后可以相等的元素属于同一个等价类。若G将[1,n]用k种颜色分别进行染色,然后划分成L个等价类,则染色后的等价类个数L为:

L=1|G|∑i=1|G|km(fi)

注意:burnside引理中的群是针对染色方案,而Polya定理则是针对染色对象。
举例来说,正方形顶点二着色问题我们在burnside引理中讨论的目标集是染色后的格点图,共16种方案,而在Polya定理中的目标集则是我们需要染色的格点,共4个格点,编号为1,2,3,4
这里写图片描述
这样来看的话,G中的置换就是
不变:(1)(2)(3)(4)
左旋90°:(1 2 3 4)
右旋90°:(1 4 3 2)
旋转180°:(3 1)(4 2)
沿着红线对折:(1 4)(2 3)
沿着橙线对折:(1 2)(3 4)
沿着绿线对折:(1)(3)(2 4)
沿着蓝线对折:(2)(4)(1 3)
循环节数m(f)分别为4,1,1,2,2,2,3,3
(其实这里也可以和上面一样,不使用对折的置换,但为了解释的更清楚,所以这里提一下)
(容易发现,它们的置换方式都是一样的)
答案也是6
证明:
我们称原先的群G为G′,原先的f为f′
考虑如何用f计算出c(f′),我们发现用循环乘积来表示的f中,每一个循环中的元素一定是同一个颜色,这样才能保证每次置换前后是同一等价类,所以实际上用k种颜色来染色的方案数就是c(f′)=km(f)
又因为|G|=|G′|
所以定理得证
这样的话就不用再枚举所有的染色方案了,时间复杂度为O(|G|p)
《组合数学》中使用生成函数来证明该定理,蒟蒻并不会生成函数,所以这里先留一个坑(以后可能会填)= =
当染色次数有限制时,我们就不能直接套Polya定理了,但可以套用一些思路,对于求解过程中的一个置换来说,想让置换后染色方案不变,就可以让属于同一循环的染色对象颜色相同,这个时候一般用到多重集合排列或DP

本文参考

百度百科,《组合数学》(第五版),《算法艺术与信息学奥赛》(刘汝佳 黄亮),《群论学习笔记》(TA爷)及网上其他的一些博客和资料

posted @ 2018-03-04 18:50  pechpo  阅读(1813)  评论(0编辑  收藏  举报