漫谈OI中的群论入门
来源:互联网 发布:js canvas 画图 编辑:程序博客网 时间:2024/04/23 15:27
前言
本文以群论的一些基本概念及定理证明为主,且多为信息学竞赛所应用,如有不当之处,还望指正
本文对burnside引理与Polya定理仅作引入与证明,达到初步理解的目的,不作深入讨论,具体题目和实现方法会在以后的博文中有所提及
定义
如果从公式化地来说,群G是一个定义在二元组
满足下列条件的二元组
1.封闭性
通俗来讲,就是集合
比如
2.结合律
这个比较简单,不说了
3.单位元
例如
如果
4.逆元
在这种情况下我们可以把
例如
显然
在群中,每个元素都是有逆元的
其实还有左右逆元之分,但是在群中,左逆元
证明:
显然
那么
即
如果
相关概念
阶
因此
实际上
在群
G 中,a∈G 。如果有整数k,使ak=e ,那么使这个等式成立的最小正整数k叫做a的阶,记为k=|a|
(ak 表示连续k个a进行G 中规定的运算,不是传统意义上的k个a相乘)
如果这样的k不存在,则称a的阶是无限的,记为a=+∞
消去律
其实早在小学我们就接触过一些
对于群中的消去律来说,它的定义是
注意这里的
当S是有限集,在具有封闭性,结合律和单位元的二元组(S,·)里,逆元存在
证明:
先说简单的,逆元存在
只要在
消去律存在
对于
根据封闭性,
而且由于不会存在类似
所以
又因为
所以
t就是a的逆元了
置换群
在说置换群之前,我们先来谈谈置换
n个元素1,2,…,n之间的一个置换为
表示1被
我们称其为一个n元置换
对于每一个置换,我们可以理解成由一个元素变成另一种元素,即对目标集
在这个四元置换下
对序列
对
容易发现置换中列的位置是可以改变的,也就是说
当n相等时,置换是可以相互运算的,我们称之为置换的连接,下文中我们将两个置换
显然置换的连接满足结合律,但不满足交换律
记一个n阶循环为
两个循环
因此置换也可以写成若干个互不相交的循环的乘积
例如上面举的这个例子,写成循环就是
数学归纳法的证明如下:
首先
当
定义“n-循环节数”是奇数的置换为奇置换
“n-循环节数”是偶数的置换为偶置换
或者我们可以认为变成单位置换需要奇数次对换的置换为奇置换
变成单位置换需要偶数次对换的置换为偶置换
我们可以把每个循环看做是单位置换进行若干次对换得到的
比如循环
(所以如果由
更进一步来说,每个置换都可以看做是单位置换进行若干次对换得到的
因此对于两个置换的连接,我们可以看做是这两个置换所包含的对换的连接,也就是说新置换进行“这两个置换对换次数之和”次对换一定能够变回单位置换,所以
奇置换·奇置换=偶置换
偶置换·偶置换=偶置换
奇置换·偶置换=奇置换
偶置换·奇置换=奇置换
再谈谈我对置换群定义的理解
具体来说,置换群中的元素是一些置换,运算是置换的连接。
比如对于一个
然后我们规定8种置换:不动,左转90°,右转90°,旋转180°,以及翻折后的这四种操作
在这8种置换下,每个位置上的格子
任意两个置换进行运算都可以得到这四种置换中的一种(封闭性)
置换又满足结合律
各元素的映射是其自身的置换是单位元
而且每种置换都存在逆元
所以它们就可以组成一个置换群了
容易发现,把任意置换倒过来,各循环中元素不变,循环个数不变
即
写成循环形式后循环个数和各循环中元素不变,因为每个置换我们都可以看做若干个不相交的有向环,倒过来以后实际上就是把每个环中的边反向,所以环的个数和大小不变
陪集
设H是群G的子群,对于
陪集有一些性质(由于左右陪集证明方法同理,因此下面证明仅讨论左陪集的情况):
注:下面的
1.H中任意陪集的大小(即元素个数)相等,都等于|H|
这个证明比较简单,因为结合律的存在,使得
2.a∈aH ,且a∈Ha
因为
3.a∈H⇔aH=H
先说
由性质2得
再说
设H中的集合为
由
设集合
由封闭性可知
又因为
所以
所以
即
4.b∈aH⇔bH=aH
先说
由性质2得
再说
显然b可以写成
由性质3得
所以
5.aH∩bH≠∅⇒aH=bH
设
实际上这句话阐述成
“对于G的子群H,H的任意两个左(右)陪集要么相等,要么无相交”
6.∪x∈GHx=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|.
具体来说,
我们来拿百度百科上的正方形顶点二着色问题来举例子
置换有四种:不动,向左旋转90°,旋转180°,向右旋转90°,为了方便表示,我们把这四种置换分别表示为
(实际上,对于一般的正n边形顶点着色问题来说,置换应当有2n种,即旋转
具体置换如下
不动:(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)
我们称
简单来说,这个定理就是
“轨道大小*稳定化子数=变换个数”
其实如果把陪集搞明白的话,证明这个定理还是非常容易的
我们发现
所以定理得证
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的概念
实际上就是
形象的说,我们可以把
即
由轨道-稳定集定理得
由定义易得
该引理得证
如果
再拿上面的正方形顶点二着色问题举例,
这里
所以
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)
循环节数
(其实这里也可以和上面一样,不使用对折的置换,但为了解释的更清楚,所以这里提一下)
(容易发现,它们的置换方式都是一样的)
答案也是6
证明:
我们称原先的群G为
考虑如何用f计算出
又因为
所以定理得证
这样的话就不用再枚举所有的染色方案了,时间复杂度为
《组合数学》中使用生成函数来证明该定理,蒟蒻并不会生成函数,所以这里先留一个坑(以后可能会填)= =
当染色次数有限制时,我们就不能直接套Polya定理了,但可以套用一些思路,对于求解过程中的一个置换来说,想让置换后染色方案不变,就可以让属于同一循环的染色对象颜色相同,这个时候一般用到多重集合排列或DP
本文参考
百度百科,《组合数学》(第五版),《算法艺术与信息学奥赛》(刘汝佳 黄亮),《群论学习笔记》(TA爷)及网上其他的一些博客和资料
感谢TA爷的帮助!
- 漫谈OI中的群论入门
- 群论入门
- 机器学习中的群论方法
- 群论及Polya计数定理题目入门
- OI中的vim配置文件
- 【群论一】以A4为例说明群论中的商群到底有什么用?
- rand在OI中的应用
- OI中的常用数据生成
- OI
- Oi
- 群论专题
- 群论初步
- 群论——从入门到放弃(群、置换、Burnside引理和Polya定理)
- OI? OI!
- 漫谈C++中的宏
- 漫谈MySql中的事务
- 漫谈HTML中的ul
- 漫谈MySql中的事务
- python 正则表达式 re模块
- PostgreSQL学习手册(PL/pgSQL过程语言)
- 由一个整形数组的重复赋初值出错而想到的数组初始化规则
- 网站分析(十)
- Spring Note--IOC
- 漫谈OI中的群论入门
- 【集合框架】2. List容器
- 后序遍历 非递归方法 (利用辅助节点r)
- Java的IO之字符流(Reader)
- Spring Note--AOP
- Linux基础教程——LVM逻辑卷基本操作流程(附图)
- pip安装时ReadTimeoutError解决办法
- 程序猿(媛)实用颜色表 [颜色图示,英文代码,形象颜色,HEX格式,RGB格式]
- H