之前学 Burnside 一直没能深入本质,这回与 QYB 学弟讨论了一下 Burnside 引理的证明,做一个记录。

前置知识:群的定义。

一、等价染色方案计数问题

对于一种染色方案组成的集合 \(X\) 和一个群 \(G\),定义一种关系 \(x\sim y\) 为 \(\exists f\in G,f(x)=y\)。

自反性:由群具有单位元即证。对称性:由群存在逆元即证。传递性:由群具有封闭性即证。

所以 \(x\sim y\) 是一种等价关系。我们现在就是要求在这种等价关系的划分下等价类集合 \(X/G\) 的大小,记为 \(|X/G|\)。

二、轨道-稳定集定理

定义轨道 \(O_x=\{f(x)|f\in G\}\)。不难发现 \(O_x\) 的实际意义就是 \(x\) 所在的等价类集合。这一点结合等价关系的性质不难证明。

定义稳定集 \(G_x=\{g|g\in G,g(x)=x\}\)。这也就是作用在 \(x\) 上不变的那些置换。

我们为了导出 Burnside 引理,可以来讨论一下 \(G_x\) 的性质。

首先容易发现 \(G_x\) 是 \(G\) 的一个子群。如逆元性质:\(g\in G_x \Rightarrow g(x)=x\Rightarrow x=g^{-1}(x)\Rightarrow g^{-1}\in G_x\)。单位元和封闭性律读者不难自证。

那么我们就可以对 \(G_x\) 中的元素大用消去律。

接下来一个关键引理:

\[\forall f,g\in G,f(x)=g(x)\iff f\circ g^{-1}\in G_x
\]

利用一些群的性质和 \(G_x\) 的定义不难证明两个方向都是成立的。

那么轨道-稳定集定理讲的是这样一个事实:

\[\forall x\in X,|O_x|=\frac{|G|}{|G_x|}
\]

证明:

考虑 \(G\) 中的所有置换作用在 \(x\) 上形成的结果。显然不能直接拿 \(|G|\) 当作等价类的个数,因为 \(x\) 在经过不同的置换结果可能相同,这样会算重。

对于任意一个 \(f\in G\),考虑有多少个和它算重了,那么如果 \(\exists g\in G,f(x)=g(x)\),则 \(f\circ g^{-1} \in G_x\)。由于这是一个等价条件,所以和 \(f\) 冲突的 \(g\) 的个数一定是 \(|G_x|-1\)。

现在对于每一个 \(f\in G\),恰好有 \(|G_x|-1\) 个跟它算重了,相当于 \(|O_x|\) 中的每个元素被重复算了 \(|G_x|\) 次,因此 \(|O_x|=\frac{|G|}{|G_x|}\)。

初次了解这个证明时不太了解具体为什么要保证 \(G_x\) 是一个子群,以及为什么为什么可以由 \(f \circ g^{-1} \in G_x\) 推出冲突的个数是 \(|G_x|-1\),后来了解了拉格朗日定理的证明后发现轨道-稳定集定理的证明相当于把 \(G\) 做了一个陪集分解。由于 \(G_x\) 是一个子群,所以 \(f\circ g^{-1}\in G_x\) 是一个等价关系,考虑用 \(G_x\) 对 \(G\) 分解成若干个陪集,那么这些陪集大小都是 \(|G_x|\),而根据 \(G_x\) 的定义又可以知道恰好分解出了 \(|O_x|\) 个等价类。

三、Burnside 引理

定义不动点 \(X^g=\{x|x\in X,g(x)=x\}\),即在 \(g\) 的作用下没有变化的 \(x\)。注意到这个定义与上述的"稳定集"的定义对象是不同的:一个定义在 \(x\) 上,另一个定义在 \(g\) 上。

Burnside 引理的结论是:

\[|X/G|=\frac{1}{|G|}\sum_{g\in G} |X^g|
\]

即本质不同的等价类个数是不动点个数的平均值。

证明:考虑用算两次原理对所有满足 \(x\in X,g\in G,g(x)=x\) 的元组 \((x,g)\) 计数。

我们首先枚举 \(g\),答案是 \(\sum_{g\in G} |X^g|\)。

然后考虑枚举 \(x\),答案也是 \(\sum_{x\in X} |G_x|\)。

这两个式子是对同一个对象计数,所以有 \(\sum_{g\in G} |X^g|=\sum_{x\in X} |G_x|\)。

考虑如何表示 \(|X/G|\),如果我们对于一个染色方案 \(x\) 定义它的权值为它所在等价类大小的倒数,那么所有染色方案的权值和自然是等价类大小的个数。

所以 \(|X/G|=\sum_{x\in X} \frac{1}{|O_x|}\)。

最后再结合轨道-稳定集定理,有:

\[|X/G|=\sum_{x\in X} \frac{1}{|O_x|}=\sum_{x\in X} \frac{|G_x|}{|G|}=\frac{1}{|G|}\sum_{x\in X} |G_x|=\frac{1}{|G|}\sum_{g\in G} |X^g|
\]

引理得证。

四、带权的 Burnside 引理

在处理等价类染色问题时,我们可能不单单要数等价类的个数,还要计算定义在等价类上的权值函数的和。

具体地,我们定义在 \(X\) 上定义一个权重函数 \(w(x)\)。\(w(x)\) 需要满足一个限制,即 \(x\sim y\Rightarrow w(x)=w(y)\)。

这样我们就可以对于一个等价类 \(O_x\) 定义权重函数满足 \(w(O_x)=w(x)\)。

仿照 Burnside 引理证明的最后一步,那么所有等价类的权值函数之和可以写成 \(\sum_{x\in X} \frac{w(x)}{|O_x|}\)。稍加推导有:

\[\sum_{x\in X} \frac{w(x)}{|O_x|}=\sum_{x\in X} \frac{w(x)|G_x|}{|G|}=\frac{1}{|G|}\sum_{g\in G} \sum_{x\in X^g} w(x)
\]

即所有等价类的权值之和等于不动点集合 \(|X_g|\) 中所有元素权值和的平均值。

五、Pólya 定理及其带权扩展

Pólya 定理告诉我们如何使用 Burnside 引理去解决具体的计数问题。OI 中 Burnside 引理的应用几乎都是在应用 Pólya 定理。

具体地,我们要解决用 \(m\) 种颜色对 \(n\) 个对象着色在置换群 \(G\) 的作用下有多少个本质不同的染色方案。

\[L=\frac{1}{|G|}\sum_{p\in G} m^{C(p)}
\]

其中 \(C(p)\) 代表 \(p\) 能分解成多少个循环。

注意下这里 \(G\) 的定义与 Burnside 引理中的定义稍有不同。Burnside 引理中的 \(G\) 定义在染色方案上,而 Pólya 定理中的 \(G\) 定义在 \(n\) 个对象上。

考虑应用 Burnside 引理后,一个染色方案要成为不动点当且仅当它的所有置换环都被染上了同一种颜色。因此不动点染色方案数就是 \(m^{C(p)}\)。

感觉从一个 OIer 的角度来看用 Burnside 引理导出 Pólya 定理好像还挺直接的,毕竟 OI 中有关置换环的题目大家见的也多。但其实从严谨的角度来说似乎证明 Pólya 定理还需要费一些功夫。

同时应用带权 Burnside 引理可以导出带权形式的 Pólya 定理。这里的权函数是定义在了颜色上,此时只需要对于每一个置换,分解它的置换环,对每个环求出权值和,然后乘在一起作为这个置换的权值,最后把所有置换环的权值加起来。

六、生成函数形式的 Pólya 定理

还不会 GF,咕了。

七、一个特殊的等价类计数问题

为什么突然重学 Burnside 呢?因为联考遇到了……

给定一个定义在颜色上的置换 \(p\),对于染色方案集 \(X\) 和定义在染色对象上的置换群 \(G\),你需要求出在 \(G\) 的作用下所有本质不同的好的染色方案的个数。对于一个染色方案 \(x\) 它是好的当且仅当 \(p(x)\sim x\)。

考虑套用带权 Burnside 引理,定义权值函数 \(w(x)=[p(x)\sim x]\)(用了个艾弗森括号,可能不太严谨……)。首先验证这个函数是否满足带权 Burnside 的限制。

对于 \(x\sim y\),若有 \(w(x)=1\),则 \(\exists g\in G, g(x)=p(x)\),还有 \(\exists f\in G, f(x)=y\),那么 \(p(y)=p(f(x))=f(p(x))=f(g(x))=(f\circ g)(x)\),即 \(p(y)\sim x\sim y\),也就是 \(w(y)=1\)。

注意到上面 \(p(f(x))=f(p(x))\) 是因为 \(p\) 定义在颜色上,而 \(f\) 定义在对象上,两者是独立的两维,可以交换。

考虑如何简化 \(w(x)\) 的计算,回顾一下我们证明轨道-稳定集的最后一步,指出了如果 \(y\in O_x\),则恰好有 \(|G_x|\) 个 \(g\) 满足 \(g\in G,g(x)=y\)。那么就有:

\[w(x)=[x\sim p(x)]=[\exists f\in G,f(x)=p(x)]=\frac{1}{|G_x|}\sum_{f\in G}[f(x)=p(x)]
\]

这样套用带权 Burnside,答案就是:

\[\frac{1}{|G|}\sum_{g\in G} \sum_{x\in X^g} w(x)=\frac{1}{|G|}\sum_{g\in G} \sum_{x\in X^g} \frac{1}{|G_x|} \sum_{f\in G} [f(x)=p(x)]=\frac{1}{|G|}\sum_{x\in X} \sum_{f\in G} [f(x)=p(x)] \frac{1}{|G_x|} \sum_{g\in G} [g(x)=x]=\frac{1}{|G|}\sum_{f\in G} \sum_{x\in X} [f(x)=p(x)]
\]

Burnside 引理及其扩展的更多相关文章

  1. 等价类计数问题(Polya定理和burnside引理)

    零.约定: (置换等名词会在前置知识中有解释) \(1.\)在本文中,题目要求的染色方案等统称为"元素". \(2.\)两个元素严格相等我们记做"\(=\)", ...

  2. [bzoj 1004][HNOI 2008]Cards(Burnside引理+DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1004 分析: 1.确定方向:肯定是组合数学问题,不是Polya就是Burnside,然后题目上 ...

  3. POJ 2888 Magic Bracelet(Burnside引理,矩阵优化)

    Magic Bracelet Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 3731   Accepted: 1227 D ...

  4. BZOJ 1004 Cards(Burnside引理+DP)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1004 题意:三种颜色的扑克牌各有Sr,Sb,Sg张.给出m种置换.两种染色方案在某种置换 ...

  5. BZOJ_[HNOI2008]_Cards_(置换+Burnside引理+乘法逆元+费马小定理+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1004 共n个卡片,染成r,b,g三种颜色,每种颜色的个数有规定.给出一些置换,可以由置换得到的 ...

  6. [BZOJ 1004] [HNOI2008] Cards 【Burnside引理 + DP】

    题目链接:BZOJ - 1004 题目分析 首先,几个定义和定理引理: 群:G是一个集合,*是定义在这个集合上的一个运算. 如果满足以下性质,那么(G, *)是一个群. 1)封闭性,对于任意 a, b ...

  7. BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )

    题意保证了是一个置换群. 根据burnside引理, 答案为Σc(f) / (M+1). c(f)表示置换f的不动点数, 而题目限制了颜色的数量, 所以还得满足题目, 用背包dp来计算.dp(x,i, ...

  8. BZOJ 1004 HNOI2008 Cards Burnside引理

    标题效果:特定n张卡m换人,编号寻求等价类 数据保证这m换人加上置换群置换后本身构成 BZOJ坑爹0.0 条件不那么重要出来尼玛怎么做 Burnside引理--昨晚为了做这题硬啃了一晚上白书0.0 都 ...

  9. HDU 5868 Different Circle Permutation(burnside 引理)

    HDU 5868 Different Circle Permutation(burnside 引理) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=586 ...

  10. 置换群、Burnside引理与等价类计数问题

    置换群.Burnside引理与等价类计数问题 标签: 置换群 Burnside引理 置换 说说我对置换的理解,其实就是把一个排列变成另外一个排列.简单来说就是一一映射.而置换群就是置换的集合. 比如\ ...

随机推荐

  1. 什么是js柯里化(curry)?

    在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术. 举例来说,一个接收3个参数的普通函数,在进行柯里化后,柯里化版本的函数接收一个参数并返回接收下一个参数 ...

  2. .Net 5.0导出Execl的两种方式

    项目中经常会用到表格的导入导出今天来简绍一下我所了解的两种方式 1.拼接成表格的简单方式直接导出,服务器上不用安装其他程序 可以直接导出 public async Task<FileResult ...

  3. C#软件增加混淆防止反编译

    使用Visual Studio新建一个名为"test"的命令行项目输入如图所示的代码并生成项目,这个项目很简单,就是程序启动时,调用"GetGUID"函数返回一 ...

  4. (转载)Python 浅析线程(threading模块)和进程(process)

    线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 进程与线程 什么 ...

  5. mysql中exists的用法简答

    前言在日常开发中,用mysql进行查询的时候,有一个比较少见的关键词exists,我们今天来学习了解一下这个exists这个sql关键词的用法,这样在工作中遇到一些特定的业务场景就可以有更加多样化的解 ...

  6. 小白都能看懂得Xxl-job安装教程

    大家好,我是咔咔 不期速成,日拱一卒 一.背景 在平时的业务场景中,经常有一些场景需要使用定时任务,比如: 某个时间点发送优惠券 发送短信等等. 批量处理数据:批量统计上个月的账单,统计上个月销售数据 ...

  7. 红黑树(map与unorder_map)B B+树

    红黑树(map) 这个里面有插入的几种方式:红黑树性质的理解 先说性质,1 每个节点要么红要么黑,2 一个节点为红色,左右两个孩子都是黑, 3 根节点是黑, 4 每个叶子(nil)节点都是黑色, 5 ...

  8. 做bad apple第二步: python如何将视频变成一帧帧的图片,如何将一帧帧的图片转为视频

    直接上代码 """视频转图片""" port cv2def getphoto(video_in, video_save): cap = cv ...

  9. Linux & 标准C语言学习 <DAY14>

    一.头文件     头文件可能会被任意源文件包含,意味着头文件中的内容可能会在多个目标文件中存在,要保证合并时不要冲突     重点:头文件只编写声明语句,不能有定义语句         1.头文件应 ...

  10. Why WebRTC丨“浅入深出”的工作原理详解

    前言 近几年实时音视频通信应用呈现出了大爆发的趋势.在这些实时通信技术的背后,有一项不得不提的技术--WebRTC. 今年 1 月,WebRTC 被 W3C 和 IETF 发布为正式标准.据调研机构 ...