置换群 / Polya 原理 / Burnside 引理 学习笔记
置换群 / Polya 原理 / Burnside 引理 学习笔记
在 GJOI 上做手链强化,经过长达三小时的 OEIS 和手推无果后开摆,喜提 rnk12,故开始学习置换群相关内容。
笔记主要以 Polya 原理和 Burnside 引理的应用为主,所以会非常简单,很大一部分的群论概念和证明不会写,因为我不会。
基础群论
定义
群论主要研究的是一种叫「群」的代数结构。
群,简单来说是一个集合和一种二元运算构成的二元组
群公理:
- 二元运算
要对集合 封闭。 - 满足结合律,即对于元素
,要满足 。 - 有单位元,即存在一个元素
满足对于任意 都有 成立。这个元素 被称为「单位元」。 - 任意一个元素都有逆元。即对于任意
,一定能找到一个元素 满足 ,我们称 和 互为单位元。
子群
对于两个群
阶
群的阶指的是群的集合的元素个数,记作
没了。只是学习利用置换群计数且不管证明的话,只知道这些概念够了。
置换群
置换群是一类被系统研究过的群。
置换的概念
置换是从一个
例如像这样:
这个置换会将原排列的
例如这个置换接收了一个排列
置换群
置换群
两个置换进行
若
举个例子吧,假设
那么有:
来验证这个群满足群公理。
- 一个置换进行
运算后还是一个置换,显然满足封闭性。 - 试一下就知道结合律是满足的。
- 有单位元,单位元是
。 - 有逆元,交换上下两行即可。
所以这玩意是满足的。
Burnside 引理
设
(如果
那么有:
其中
如果有点难懂的话那就举个例子吧。
(因为 OI Wiki 上的正方体的例子需要思考()所以搬了另一个例子过来)
(出自 集训队论文 符文杰:《Pólya原理及其应用》)
一个简单的例子:
将一个
首先先列出来吧。
不考虑本质不同,一共有
其中本质不同的有
把上面的集合列出来吧。
套公式吧,下面来探究
- 转
。也就是 置换为 。要求 格子颜色一样,也就是所有格子颜色一样,所以一共有 种方案,也就是图中的 C1 和 C2。 - 转
。也就是 置换为 。要求 格子颜色一样。对于每组格子都能选择两种颜色,所以一共有 种方案,也就是图中的 C1,C2,C11,C12。 - 转
。也就是 置换成 。和第一种情况一样,一共有 种方案,C1 和 C2。 - 转
。所有方案都满足,所以有 种。
所以根据公式:
然后我们就得到了本质不同的方案有
这里问题规模较小所以可以枚举解决,但是问题规模增大到
证明不会。反正 OI 不考证明()
Polya 原理
数有多少个点置换后不动是不是很烦?那么还有更简单的式子。
定义与 Burnside 引理的定义相同。
如果
其中
举个例子,例如置换
我们能把它拆成三个子置换:
所以
这就是 Polya 原理。
上面的例题太简单了,让我们把规模增长到
因为所有的染色方案都是允许的,没有说什么某个格子不能涂黑啊、哪个格子不能涂白啊,所以满足 Polya 原理的前置条件。
讨论每个置换的
- 转
:置换为 ,共有 个子置换, 。 - 转
:置换为 ,共有 个子置换,分别是 组成的子置换、 组成的子置换和 组成的子置换。 。 - 转
:置换为 ,共有 个子置换,除了 以外其他数字都能两两分组组成一个子置换。 。 - 转
:置换为 ,共有 个子置换,看到自己想必大家都能自己数出来了。 。
套公式吧。
所以有
感兴趣的读者自己验证吧反正我懒了。
如果你枚举法,那么枚举
例题
P4980 【模板】Polya 定理
给定一个
个点, 条边的环,有 种颜色,给每个顶点染色,问有多少种本质不同的染色方案,答案对 取模 注意本题的本质不同,定义为:只需要不能通过旋转与别的染色方案相同。
板子题。
置换群中的置换有
考虑每种置换的
容易得到,对于转
代入公式中。
这里
时间复杂度
P2561 [AHOI2002] 黑白瓷砖
题面是图片所以就自己看吧。
这题也很板。
操作也就只有
因为先翻转后旋转或者先旋转后翻转已经包括在上面的情况之中了。
图形很对称,所以只用考虑不变、旋转
不变的话有
考虑旋转的情况。画下图,发现所有格子三三匹配构成子置换,或者除了最中间的格子单独构成置换其他三三匹配构成子置换。所以:
- 如果
是三的倍数,那么 就是 。 - 否则中间一个点构成子置换,
是
所以对于旋转
考虑翻转的情况。画下图,发现中轴线上穿过的格子翻转后不变,其他格子两两匹配构成子置换。
有
然后套公式就行了。
这题要高精度所以我没写代码。
GJOI 2024/2/15 T2 手链强化
要给一个
个节点的环染色,每个点可以染成 种颜色的一种或者不染色。环上相邻的点不能同时染色。求本质不同方案数。
不满足 Polya 原理的前置条件,所以考虑 Burnside 引理。
设
先用 Burnside 引理推下式子。
考虑怎么计算
很容易想到一个
设
容易得到状态转移方程:
因为是环,首尾相接而首尾不能同时染色,所以要做两次 dp,第一次钦定第一位不染色,第二次钦定最后一位不染色即可。
但是这样时间复杂度还是很高。
其实这个 dp 方程是简单的递推,矩阵优化即可。
时间复杂度
[MtOI2018] 魔力环
要求给一个
个节点的环染上 个黑色节点和 个白色节点,并且满足环上不包含一段连续的长度超过 的黑色节点。求本质不同方案数。
一样的。设
如果我们知道了
那么设
固定白色节点,在白色节点的间隙中插入黑色节点。
因为在一个环上,所以第一个间隙和最后一个间隙本质是相同的,所以第一个间隙和最后一个间隙的黑色珠子数量的和不能超过
枚举放在第一个间隙和最后一个间隙的黑色珠子数量,然后就能转化为序列上的问题了。
假设第一个间隙和最后一个间隙的黑色珠子数量和为
在
转换为球和盒子的问题,即在
设
容斥一下。枚举有至少
然后套 Burnside 引理的式子就行了。
P1446 [HNOI2008] Cards
给定一个置换群
。 问将
张牌染成 张红色 张蓝色 张绿色形成的集合经过置换群 的作用后形成的等价类数量。
Burnside 引理。
对于一个置换,一种染色方案在这个置换作用下相等,相当于要求这一置换的所有子置换内部染的颜色相同。
假设置换
那么我们要算将
这里可以用背包 dp,但是我做题的时候没想到所以用的是搜索。
设
我们可以直接通过搜索划分
然后就有
那么根据多重排列数,当前
所以对于置换
这个暴力算就行。因为
最后带入到 Burnside 引理中即可。
时间复杂度
看似很大过不了,但是完全跑不满,所以完全能过,而且跑得挺快的。
P4128 [SHOI2006] 有色图
用
种颜色将一个顶点数为 的无向完全图的边染色,如果两张图能通过一种将顶点重新标号的方案变为相同则称这两张图本质相同。求本质不同的染色方案数。
“什么?有色图?哪里有色图?”
这题的置换是作用在顶点上的,但是这题的染色是在边上的,所以我们需要找到点的置换和边的关系。
假设一个置换
先考虑子置换内的情况。
考虑子置换
其内部连成的边为
当我们执行一次置换,排列变成了
设
因为我们要让置换后前后不变,所以要满足
也就是所有在子置换中距离相同的点形成的边颜色要相同。
形象地,如果我们将
边长相同的边有
然后考虑两个子置换之间的情况。
举个例子吧,假设有两个子置换,其长度分别为
那么,边
上面的边组成一个等价类,其他的边组成一个等价类,共两个。
再举一些例子就能得到对于两个长度为
所以一个置换构成的等价类数量为
所以
回到 burnside 引理的式子:
这明显还是算不了一点的样子嘛!
细看,发现一个置换的
首先是一个多重排列,把
在每个子置换里分配数的顺序,这相当于一个圆排列,又要乘上一个
但是这样会算重,和上题一样,如果有相等的
综合起来就是
这里的
dfs 即可。实现的比较好的话
时间复杂度是
P4727 [HNOI2009] 图的同构计数
求
个点的本质不同的简单图的个数。两张图本质相同指的是有一种给图中的点重新编号的方案使得这两张图完全一样。
这题和上题本质相同,所以要除掉(误
维护本质不同的简单图,本质是维护在点置换后一些边是否存在。
考虑回到上题,如果把边存在当作染成黑色,边不存在当作染成白色,那就变成了这题。
所以这题就是上题
[ABC284Ex] Count Unlabeled Graphs
给定整数
, 和质数 。 你需要在一个
个节点的无标号无向图上给每一个节点标上一个 到 的数,且每一个数都要用到,求出标号后本质不同的图的数量对 取模。
这题在上题的基础上多了一个顶点上要有标号。
容易发现顶点上的标号和边的有无是没有关系的,所以只需要在上题的基础上乘上点标号的方案数就行了。
设
考虑第
所以有状态转移方程:
然后在算
所以只用在算
没了。
真没了。
你问 烷烃计数 烷基计数 烯烃计数 同分异构体计数 呢?
看我什么时候学完多项式再回来填。
本文作者:AzusidNya の 部屋
本文链接:https://www.cnblogs.com/AzusidNya/p/18041954
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步