Burnside引理和Pólya定理
不想写很多冗杂的群论定义,所以本博客不是用来入门的。
如果你想要入门,请点这里。
概要
对于一个作用在集合 \(X\) 上的有限群 \(G\) ,对于每个 \(g\in G\) 令 \(X^g\) 表示 \(X\) 在 \(g\) 作用下的不动元素,即 \(X^g={x|x\cdot g=x,x\in X}\) ,则轨道数 \(|X/G|=\dfrac{\sum\limits_{g\in G}|X^g|}{|G|}\) 。
假设 \(X\) 中的两个元素 \(x_1,x_2\) ,存在变换,使得 \(x_1\cdot g=x_2\) ,则称 \(x_1\) 和 \(x_2\) 在同一个等价类里,上式中 \(|X/G|\) 就是等价类的数量。
好像也没有说明白,假设群 \(G\) 里面的 \(g\) 均表示图形的某种变换(如平移,旋转,翻折等),能够在进行一系列变换之后能够完全重合的图形成为同一种图形,对于某一种变换 \(g\) ,设有 \(c(g)\) 个图形属于某个图形的集合 \(X\) 在这种变换下和自己重合,则不同的图形一共有 \(\dfrac{1}{|G|}\sum\limits_{g\in G}c(g)\) 种。
举个例子:对于正三角形的三个顶点,我们用实心点和虚心点来标记,假设变换为旋转和翻折,则我们会有如下的6种变换方式。

对于所有可能存在的 \(2^3=8\) 个三角形,我们可以知道每一种变换分别有多少个三角形是不变的 \(c(g_1)=8,c(g_2)=2,c(g_3)=2,c(g_4)=4,c(g_5)=4,c(g_6)=4\) 。
所以本质不同的正三角形一共有 \(\dfrac{\sum\limits_{g\in G}c(g)}{|G|}=\dfrac{8+2+2+4+4+4}{6}=4\) 个,暴力验证一下就是这个答案。
接下来我们就可以考虑如下的问题了:我们对于一个图形(可能是网格,也可能是多面体,甚至可以是一个树或者图),要将它用 \(m\) 中颜色染色,置换群为 \(G\) ,问有多少种本质不同的方案。
我们考虑对于一个置换 \(g\in G\) 有哪些染色方案是不会变化的,也就是 \(c(g)\) 的值为多少。
不难发现,如果可以将置换表示成 \(k=\sigma(g)\) 环,只有每一个环内的所有颜色相同的时候,方案才不会变化,每个环有 \(m\) 种颜色可选,所以 \(c(g)=m^k\) 。
也就是说,本质不同的方案一共有 \(\dfrac{1}{|G|}\sum\limits_{g\in G}m^{\sigma(g)}\) ,这个也就是我们熟知的Pólya定理了。
例题
[HNOI2008] Cards
直接套用Burnside引理。
每一种洗牌法相当于一种置换(注意,还有不洗牌这种置换),我们需要求出不动元素的数量。
在这题的条件下不动元素就相当于数每一个环内的颜色相同,我们考虑对每一个置换变成若干个环,并对其进行三维背包,维护 \(f_{r,b,g}\) 表示染了 \(r\) 和红色, \(b\) 个蓝色和 \(c\) 个绿色的方案数。
最后将答案乘上 \(\dfrac{1}{m}\) 即可。
整体复杂度 \(O(RBG\sum k)\) ,其中 \(\sum k\) 表示所有置换的环的总数,且 \(\sum k\leqslant O(nm)\) 。
[SDOI2013]项链
求满足下列条件的项链个数:
1.这串项链由 \(n\) 颗珠子构成。
2.每一个珠子上面的每个数字 \(x\),必须满足 \(0<x\leqslant a\),且珠子上面三个数字的最大公约数要恰好为 \(1\)。
3.相邻的两个珠子必须不同。两个珠子被认为是相同的,当且仅当它们经过旋转,或者翻转后能够变成一样的。
4.两串项链如果能够经过旋转变成一样的,那么这两串项链被认为是相同的。
首先,我们枚举 \(d|\gcd(x_1,x_2,x_3)\) 的珠子数并进行莫比乌斯反演,可以得到本质不同的珠子有 \(m=\dfrac{\sum\limits_{i=1}^a\left(\dfrac{a}{i}\right)^3+3\times\sum\limits_{i=1}^a\left(\dfrac{a}{i}\right)^2+2}{6}\) 种,求职的复杂度为 \(O(a)\) 。
我们考虑对于某一种置换的不动点数量:对于顺时针旋转 \(k\) 个单位,他相当于是 \(\gcd(n,k)\) 个置换环,由于需要相邻两点不同,相当于需要对长为 \(\gcd(n,k)\) 的环进行 \(m\) 染色,且相邻的颜色不能相同,由于对于 \(n\) 元环 \(m\) 染色的方案数为 \((m-1)^n+(-1)^n(m-1)\) 。
对于 \(d|n\) , \(\gcd(n,k)=d\) 的 \(k\) 有 \(\varphi(\frac{n}{d})\) 个,所以最终答案为 \(\dfrac{1}{n}\sum\limits_{d|n}\varphi(\frac{n}{d})[(m-1)^d+(-1)^d(m-1)]\) 。
求值复杂度为 \(O(\sqrt{n}\log n)\) 。
Luogu P4980 【模板】Pólya 定理
对于这个环,它的置换群就是 \(n\) 种旋转方式,假设某一个旋转是将所有的点对应向后的 \(k\) 第个,也就意味着他们会出现 \(\gcd(n,k)\) 个环,也就意味着有 \(n^{\gcd(n,k)}\) 种方案在这种变换下不会改变。
所以最终答案为 \(\dfrac{1}{n}\sum\limits_{i=1}^nn^{\gcd(n,i)}=\dfrac{1}{n}\sum\limits_{d|n}n^d\sum\limits_{i=1}^n[gcd(n,i)==d]=\dfrac{1}{n}\sum\limits_{d|n}n^d\sum\limits_{i=1}^{\frac{n}{d}}[gcd(\frac{n}{d},i)==1]=\dfrac{1}{n}\sum\limits_{d|n}\varphi(\frac{n}{d})n^d\) 。
暴力枚举 \(\leqslant \sqrt{n}\) 的因数,并暴力求解 \(\varphi(\frac{n}{d})\) 可以得到一个亚线性的做法。
[蓝桥杯 2015 国 B] 模型染色
置换群由满足在变换之后图同构的置换构成,对于这个顶点的置换,我们可以用 \(O(n)\) 的时间来求出环的数量。
由于 \(n\) 很小,暴力枚举所有的置换并判图是否同构即可。
最终复杂度为 \(O(m\times n!+n|G|)\) 。
[AHOI2002]黑白瓷砖
不难发现只有6种置换方式(具体可以参考最上面的例子)。
对于不变的置换(第一种),有 \(\dfrac{n(n+1)}{2}\) 个环。
对于旋转类置换(第二三种),有 \(\left\lceil\dfrac{n(n+1)}{6}\right\rceil\) 个环(除中心点外均三个一组)。
对于反转类置换(第四五六种),有 \(\dfrac{\frac{n(n+1)}{2}+\left\lceil\frac{n}{2}\right\rceil}{2}\) 个环(除对称轴上的均两两一组)。
所以最终答案为 \(\dfrac{2^{\frac{n(n+1)}{2}}+2\times 2^{\left\lceil\frac{n(n+1)}{6}\right\rceil}+3\times 2^{\frac{\frac{n(n+1)}{2}+\left\lceil\frac{n}{2}\right\rceil}{2}}}{6}\) ,需要写高精度。
[HNOI2009]图的同构计数
相当于对于完全图的每一条边染上黑色或者白色,问本质不同的方案数有多少。
置换群为所有 \(n!\) 种置换。
考虑对于一种置换有多少个环:
这 \(n!\) 种置换是和点编号的排列一一对应的,我们可以先找出这个排列中的所有环长 \(c_1,c_2\dots c_k\)。
对于两个不同的环 \(c_i,c_j\) 他们之间共有 \(c_ic_j\) 条边,这些边一共构成 \(\gcd(c_i,c_j)\) 个环。
对于某一个环 \(c_i\) ,其中一个节点向后跨越了 \(\leqslant \dfrac{c_i}{2}\) 个节点的边可以和所有环一一对应(对于 \(t> \dfrac{c_i}{2}\) 的,它和跨越 \(c_i-t\) 个节点的在同一个环内),也就是有 \(\left\lfloor\dfrac{c_1}{2}\right\rfloor\) 个环。
在所有的置换中一共有 \(\dfrac{n!}{\prod\limits_{i=1}^kc_i\cdot\prod\limits_{i-1}^n\sum\limits_{j=1}^k[c_j=i]}\) 个满足上述条件。
搜索 \(\{c\}\) 的值,对于每一种统计出答案即可。
[SHOI2006] 有色图
这题为上面一题的加强版,将 \(2\) 种颜色变为了 \(m\) 种颜色,方法和上面一题基本相同。
Burnside引理和Pólya定理的更多相关文章
- Burnside引理和Polya定理之间的联系
最近,研究了两天的Burnside引理和Polya定理之间的联系,百思不得其解,然后直到遇到下面的问题: 对颜色限制的染色 例:对正五边形的三个顶点着红色,对其余的两个顶点着蓝色,问有多少种非等价的着 ...
- Burnside引理和Polya定理
转载自:https://blog.csdn.net/whereisherofrom/article/details/79631703 Burnside引理 笔者第一次看到Burnside引理那个公式的 ...
- Burnside引理和polay计数学习小记
在组合数学中有这样一类问题,比如用红蓝两种颜色对2*2的格子染色,旋转后相同的算作一种.有多少种不同的染色方案?我们列举出,那么一共有16种.但是我们发现,3,4,5,6是同一种,7,8,9,10是用 ...
- 置换群和Burnside引理,Polya定理
定义简化版: 置换,就是一个1~n的排列,是一个1~n排列对1~n的映射 置换群,所有的置换的集合. 经常会遇到求本质不同的构造,如旋转不同构,翻转交换不同构等. 不动点:一个置换中,置换后和置换前没 ...
- Burnside引理与Polya定理
感觉这两个东西好鬼畜= = ,考场上出了肯定不会qwq.不过还是学一下吧用来装逼也是极好的 群的定义 与下文知识无关.. 给出一个集合$G = \{a, b, c, \dots \}$和集合上的二元运 ...
- Burnside引理与Polya定理 学习笔记
原文链接www.cnblogs.com/zhouzhendong/p/Burnside-Polya.html 问题模型 有一个长度为 $n$ 的序列,序列中的每一个元素有 $m$ 种取值. 如果两个序 ...
- Burnside引理和polay计数 poj2409 Let it Bead
题目描述 "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you ...
- 【uva 10294】 Arif in Dhaka (First Love Part 2) (置换,burnside引理|polya定理)
题目来源:UVa 10294 Arif in Dhaka (First Love Part 2) 题意:n颗珠子t种颜色 求有多少种项链和手镯 项链不可以翻转 手镯可以翻转 [分析] 要开始学置换了. ...
- 等价类计数(Polya定理/Burnside引理)学习笔记
参考:刘汝佳<算法竞赛入门经典训练指南> 感觉是非常远古的东西了,几乎从来没有看到过需要用这个的题,还是学一发以防翻车. 置换:排列的一一映射.置换乘法相当于函数复合.满足结合律,不满足交 ...
- burnside引理&polya定理
burnside引理&polya定理 参考资料: <polya计数法的应用>--陈瑜希 黄学长 置换: 置换即是将n个元素的染色进行交换,产生一个新的染色方案. 群: 一个元素的集 ...
随机推荐
- 人人都会Kubernetes(二):使用KRM实现快速部署服务,并且通过域名发布
1. 上节回顾 上一小节<人人都会Kubernetes(一):告别手写K8s yaml,运维效率提升500%>介绍了KRM的一些常用功能,并且使用KRM的DEMO环境,无需安装就可以很方便 ...
- mybatis plus 获取新增实体的主键
转载请注明出处: mybatis plus 新增实体对象调用的是 IService 接口中的 save 方法: default boolean save(T entity) { return SqlH ...
- 基于React开发的chatgpt网页版(仿chatgpt)
在浏览github的时候发现了一个好玩的项目本项目,是github大神Yidadaa开发的chatgpt网页版,该开源项目是跨平台的,Web / PWA / Linux / Win / MacOS都可 ...
- 在Winform系统开发中,使用MediatR来实现类似事件总线的消息处理
MediatR是一款进程内的消息订阅.发布框架,可实现请求/响应.命令.查询.通知和事件的消息传递,解耦了消息处理器和消息之间耦合.提供了Send方法用于发布到单个处理程序.Publish方法发布到多 ...
- [转帖]AES算法(五)GCM工作模式
https://zhuanlan.zhihu.com/p/376692295 在以前介绍的基本工作模式中,ECB.CFB.OFB 三种模式可以解决 ECB 模式中相同明文生成相同密文的缺陷,CTR 又 ...
- [转帖] Linux命令拾遗-使用blktrace分析io情况
https://www.cnblogs.com/codelogs/p/16060775.html 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 一般来说,想检 ...
- [转帖]Linux中的Page cache和Buffer cache详解
1.内存情况 在讲解Linux内存管理时已经提到,当你在Linux下频繁存取文件后,即使系统上没有运行许多程序,也会占用大量的物理内存.这是因为当你读写文件的时候,Linux内核为了提高读写的性能和速 ...
- [转帖]/etc/profile 和 /etc/profile.d/ 的区别
https://my.oschina.net/calmsnow/blog/2989570 /etc/profile 是文件, /etc/profile.d/ 是目录,用在设置环境变量方面,/etc ...
- CTT Day3
T1 忘了叫什么名字 对于一个排列 \(p\),定义它的权值为其有多少个子串是一个值域从 \(1\) 开始的排列.给定排列 \(p\),对于 \(1\le i\le j\le n\),定义 \(f(i ...
- NextJs 与 Tailwind 入门开发笔记
前言 距离上次更新已经过去好久了,之前我在 StarBlog 博客2023年底更新一览的文章里说要使用 Next.js 来重构博客前端,最近也确实用 next.js 做了两个小项目,一个是单点认证项目 ...