Burnside 定理

问题:

给定一个 \(n\) 个点,\(n\) 条边的环,有 \(m\) 种颜色,给每个顶点染色,问有多少种本质不同的染色方案,答案对 \(10^9+7\) 取模

注意本题的本质不同,定义为:只需要不能通过旋转与别的染色方案相同

题目初步解读

我们考虑如果不要求本质不同只需要 \(n^n\) 。

但因为无标号的环就会重复。

例如这是一个 4 个点, 2 种颜色的情况:

在这里面如果不要求本质不同就有 16 种方案,若要求,则只有 6 种。

同一行的都是一种方案。

Burnside 引入

我们先来一些定义

置换群

令集合 \(N=\{1,2,\cdots,n\}\) 。

令集合 \(M\) 为 \(N\) 若干个排列构成的集合。

令群 \(G = (M,\times)\) 其中符号 \(\times\) 解释如下:

\(\sigma\) 是一个排列,也就是 \(M\) 周一个元素。

写为 \(\sigma \times a\) 不过更习惯被表示为 \(\sigma(a)\) 。

其运算规则为:\(\sigma(a)= (a_{\sigma_1},a_{\sigma_2}...a_{\sigma_n})\)。

在前面样例中,置换群是:

\((\{\)旋转\(0°,\)旋转\(90°,\)旋转\(180°,\)旋转\(270° \},\times)\)

若写成排列则是:

\((\{\{1,2,3,4\},\{2,3,4,1\},\{3,4,1,2\},\{4,1,2,3\}\},\times)\)

轨道

考虑一个作用在 \(X\) 上的置换群 \(G\) , \(X\) 中一个元素 \(x\) 的轨道则是 \(x\) 通过 \(G\) 中元素可以转移到的元素的集合。记作 \(G(x)\) 。

样例中每一行就是一个轨道。例如下面就是一个轨道。

稳定子

稳定子定义为:\(G^x = \{g|g\in G,g \times x = x\}\)。

使用语言描述,便是群 \(G\) 中满足 \(g(x)=x\) 的所有元素 \(g\) 所构成的集合。

样例中:

的稳定子为 \(\{\)旋转\(0°\}\),

的稳定子为 \(\{\)旋转\(0°,\)旋转\(180°\}\),

的稳定子为 \(\{\)旋转\(0°,\)旋转\(90°,\)旋转\(180°,\)旋转\(270°\}\)。

轨道-稳定子定理:

我们可以发现:

1.在同一轨道的元素稳定子个数一定相等。

2.稳定子大小乘轨道大小等于群 \(G\) 大小。

\[|G^x|\times |G(x)|=|G|
\]

没错,他是个定理,考虑感性证明:

一个元素 \(x\) 按照 \(G\) 的操作一定可以得到轨道内所有元素,也就是集合 \(G(x)\) 。

但在操作过程中会有重复的,重复的次数也就是稳定子集合大小。

详细证明可以看这里

不动点

若 \(g(x) = x\) 则称 \(x\) 是在 \(g\) 下的不动点。

定义集合 \(X^g = \{x|g(x) = x,x\in X\}\)。

稳定子和不动点有类似反演的关系。

若 x 的稳定子集合里有 \(g\),那么 g 下不动点集合中也有 x。

所以对于每一个 \(x\) 稳定子的个数之和等于对于每一个 \(g\) 不动点个数之和

形式化

\[\sum_{x\in X} {|G(x)|} = \sum_{g\in G} |X^g|
\]

注意稳定子是对于 g 来说的,而不动点是对于 x 来说的。

例如 ''旋转180°'' 不动点是

Burnside 定理

公式:

我们要求的答案一般来说也就是轨道数量。

\[ans = \dfrac{1}{|G|}\sum_{g\in G} X^g
\]

证明:

等价类数量也就是轨道数量。

\(|G(x)|\) 代表 \(x\) 所在轨道大小。

\[ans = \sum_{x\in X} \frac 1 {|G(x)|}
\]

根据轨道-稳定子定理得

\[ans = \sum_{x\in X} \frac {|G^x|}{|G|}=\frac 1 {|G|} \sum_{x\in X} {|G^x|}
\]

用稳定子和不动点关系得:

\[ans = \dfrac{1}{|G|}\sum_{g\in G} |X^g|
\]

回到题目

扩展到 \(n\),现在的 \(G\) 就是\(\{\) 旋转 \(0\) 次,旋转 \(1\) 个,\(\cdots\),旋转\(n-1\)个 \(\}\)。

考虑旋转 \(k\) 次的不动点个数是 \(n^{\gcd(k,n)}\)。

当 \(\gcd(k,n) = k\):

我们按照 \(k\) 将环切成 \(\frac n k\) 份,然后标上号。

将他旋转。

我们发现每一份必须一样他才是个不动点。

答案就是 \(n^k = n^{\gcd(n,k)}\)。

当 \(gcd(k,n) \ne k\):

令 \(g = \gcd(k,n)\) 那么我们将他旋转 \(g \times \frac k g\) ,等价于将长度为 \(g\) 的旋转 \(\frac k g\) 次。

答案就是 \(n^{gcd(n,k)}\)。

如果还不懂,建议手模一下 \(k = 4,n = 6\) 这个样例。

应用Burnside则有

\[Ans = \dfrac{1}{n}\sum_{k=1}^{n} n^{\gcd(k,n)}
\]

发现有 \(\gcd\) ,可以莫反。

莫反基操,不多说。

\[\frac{1}{n}\sum_{d|n}n^d \varphi(\frac{n}{d})
\]

直接暴力可过。

Pólya 定理

就是染色问题中Burnside的运用。

对于一个排列 \(g\) ,我们将每一个 \(i\) 向 \(a_i\) 连一条边,会得到若干环,每个环内元素颜色应该相同。定义 \(c(g)\) 代表环数量,那么 Pólya 就是

\[\dfrac{1}{|G|}\sum_{g\in G}m^{c(g)}
\]

Burnside 定理的更多相关文章

  1. 我对Burnside定理的理解

    我想了想,发现可以证明burnside定理. 置换:n个元素1,2,-,n之间的一个置换表示1被1到n中的某个数a1取代,2被1到n中的某个数a2取代,直到n被1到n中的某个数an取代,且a1,a2, ...

  2. poj 2409+2154+2888(Burnside定理)

    三道burnside入门题: Burnside定理主要理解置换群置换后每种不动点的个数,然后n种不动点的染色数总和/n为answer. 对于旋转,旋转i个时不动点为gcd(n,i). 传送门:poj ...

  3. HUST 1569(Burnside定理+容斥+数位dp+矩阵快速幂)

    传送门:Gift 题意:由n(n<=1e9)个珍珠构成的项链,珍珠包含幸运数字(有且仅由4或7组成),取区间[L,R]内的数字,相邻的数字不能相同,且旋转得到的相同的数列为一种,为最终能构成多少 ...

  4. 埋锅。。。BZOJ1004-置换群+burnside定理+

    看这道题时当时觉得懵逼...这玩意完全看不懂啊...什么burnside...难受... 于是去看了点视频和资料,大概懂了置换群和burnside定理,亦步亦趋的懂了别人的代码,然后慢慢的打了出来.. ...

  5. 【Burnside定理】&【Pólya定理】

    Burnside & Pólya (详细内容请参阅<组合数学>或2008年cyx的论文,这里只写一些我学习的时候理解困难的几个点,觉得我SB的请轻鄙视……如果有觉得不科学的地方欢迎 ...

  6. BZOJ1004 [HNOI2008]Cards 【burnside定理 + 01背包】

    题目链接 BZOJ1004 题解 burnside定理 在\(m\)个置换下本质不同的染色方案数,等于每种置换下不变的方案数的平均数 记\(L\)为本质不同的染色方案数,\(m\)为置换数,\(f(i ...

  7. bzoj 1004 1004: [HNOI2008]Cards burnside定理

    1004: [HNOI2008]Cards Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1668  Solved: 978[Submit][Stat ...

  8. bzoj1004 [HNOI2008]Cards Burnside定理+背包

    题目传送门 思路:首先是Burnside引理,要先学会这个博客. Burnside引理我们总结一下,就是 每种置换下不动点的数量之和除以置换的总数,得到染色方案的数量.        这道题,显然每种 ...

  9. POJ 1286 Necklaces of Beads (Burnside定理,有限制型)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=11117 就是利用每种等价情形算出置换节之后算组合数 #include <stdio. ...

  10. 1004: [HNOI2008]Cards burnside定理

    https://www.lydsy.com/JudgeOnline/problem.php?id=1004 输入数据保证任意多次洗牌都可用这 m种洗牌法中的一种代替,且对每种洗牌法,都存在一种洗牌法使 ...

随机推荐

  1. ChatGPT Plugin 插件开发:基于 ASP.NET Core Minimal API

    前言 这是一篇ChatGPT插件开发教程,描述如何使用 ASP.NET Core Minimal API 开发 ChatGPT 插件,以最简单的 Todo List 指导示例作为入门教程. 这个Tod ...

  2. 使用Kepserver 自带 DataLogger 功能 实现工控数据转储关系型数据库

    本文以 Mysql数据库为例,介绍使用 kepserver 的datalogger 功能转储数据到 mysql 第一步:下载安装 Mysql ODBC 数据库驱动前往 官网下载ODBC驱动https: ...

  3. SaaS化开源项目之HouseKeeper云上部署实践

    摘要:华为云DTSE技术专家从源码构建.应用部署到系统调测,详细解读云原生SaaS应用构建的全过程. 本文分享自华为云社区<HouseKeeper云上部署实践>,作者:华为云DTSE. H ...

  4. 2020-09-25:rust中Point是结构体类型,【let p1=Point{x:25,y:25};let p2=p1;】请问p1和p2是同一个对象吗?

    福哥答案2020-09-25:#福大大架构师每日一题# 不是同一个对象.p1和p2直接存内容,不存地址.这点跟java里的new对象是不一样的.p1.x和p1的地址相同,说明p1存的是内容,而不是地址 ...

  5. 2022-03-25:给定一个长度为 N 的字符串 S,由字符‘a‘和‘b‘组成,空隙由 ‘?‘ 表示。 你的任务是用a字符或b字符替换每个间隙, 替换完成后想让连续出现同一种字符的最长子串尽可能短。

    2022-03-25:给定一个长度为 N 的字符串 S,由字符'a'和'b'组成,空隙由 '?' 表示. 你的任务是用a字符或b字符替换每个间隙, 替换完成后想让连续出现同一种字符的最长子串尽可能短. ...

  6. pytest在conftest里添加钩子函数进行失败处截图,并绑定到allure报告里

    在conftest里要先定义一个selenium之类的driver. @pytest.hookimpl(tryfirst=True, hookwrapper=True)def pytest_runte ...

  7. LeetCode 周赛 348(2023/06/05)数位 DP 模板学会了吗

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 加入知识星球提问! 往期回顾:LeetCode 单周赛第 347 场 · 二维空间上的 LIS 最长递增子序列问题 ...

  8. QQ 邮箱设置自定义域名邮箱

    编者有话说 这篇文章来源于2019年12月左右,我在配置 Galaxy 生信分析平台的邮件服务过程中的一个尝试,我最早把它记录在了语雀上面,但由于某些原因一直迟迟没有更新到生信科技爱好者的公众号.直至 ...

  9. 自然语言处理(NLP)

    "自然语言处理(Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和 ...

  10. P3498 [POI2010]KOR-Beads 题解

    前言: 最近在做哈希的题,发现了这道好题,看题解里很多大佬的方法都很巧妙,自己就发一个较为朴素的方法吧. 题意: 题目传送门 给你一个序列,需要求出数 k,使划分的子串长度为 k 时,不同的子串数量最 ...