Burnside 和 Polya 入门

· · 算法·理论

抽象代数前置

【Burnside 引理】

问题引入

涂色 2\times 2 的方格。旋转相同算一种。有多少种本质不同染色方案?

可以数出有 6 种。

以此为例介绍 Burnside 引理。

设一种染色方案为 xg_{a} 为一种变换,表示将某种染色方案顺时针旋转 a 度,则 "旋转相同" 就是 x^{(g_0,g_{90},g_{180},g_{270})} 算同一种。

考虑:

Burnside 引理告诉我们,本质不同的方案数即这四种情况的平均数,\dfrac{16+2+4+2}{4}=6

数学定义

X 为着色方案的集合,G 为一个作用在 X 上的变换群。

定义 X^{(g)}=\{x|x\cdot g=x,x\in X\}。即对于 g,找所有被 g 作用后不变的 x

Burnside 引理结论:|X/G|=\dfrac{1}{|G|}\sum_{g\in G}|X^{(g)}|

X/G 表示 G 作用在 X 上后的等价类个数,在群论中 "等价类" 也称作 "轨道 (orbit)")

证明

需要一些前置定理。

Lagrange 定理

HG 的子群。\{aH|a\in G\} 会成为 G 的划分。 (\{aH|a\in G\} 是 "陪集",a 这个元素对 H 里每个元素运算得到的集合)

Lagrange 定理:[G:H]=|G|/|H|。([G:H] 表示 \{aH|a\in G\},即陪集的集合)

|G|=[G:H]\cdot |H|

Burnside 证明

定义 O_x=\{x'|\exists g\in G,g\cdot x=x',x'\in X\}=\{gx|g\in G\}。理解 x 为一种着色方案,O_xx 所在的轨道。

定义 G_x=\{g|g\in G,g\cdot x=x\}。即 x 的稳定化子,就是作用到 x 后不变。注意分辨 X^{(g)}G_x

观察 1:G_xG 的子群。

证明 HG 子群的思路:① 证明 a,b\in H\Rightarrow ab\in H。 ② a\in H\Rightarrow a^{-1}\in H

证明 1:

证毕。

观察 2:O_xG_x 的所有陪集形成一一映射。

(轨道元素个数与稳定化子陪集构成一一映射)

证明 2:

理清定义。(下面变换作用在状态上用 \cdot,变换复合用 *

$S=G_x$ 所有陪集 $=\{aG_x|a\in G\}$。 然后开始证明。来一个引理: **引理**:任取一个 $f$ 使得 $f\cdot x=x_i$,有 $fG_x=G_i=\{g|g\in G,g(x)=x_i\}$。 **引理证明**: 反证法。假设 $fG_x\neq G_i$。因为 $f\cdot x=x_i$,而 $\forall f'\in G_x$,都有 $f'\cdot x=x$,所以 $(f\cdot f')\cdot x=f\cdot (f'\cdot x)=f\cdot x=x_i$。所以 $fG_x\subseteq G_i$。 又因为 $fG_x\neq G_i$,所以一定有 $|fG_x|<|G_i|$。根据子群与陪集的性质,$|fG_x|=|G_x|$,所以 $|G_x|<|G_i|$。 但是考虑逆变换 $f_*$ 使得 $f_*\cdot x_i=x$,陪集 $f_*G_i$ 其实就是 $G_x$(变换一次又逆变换回去了)。所以 $|f_*G_i|=|G_x|$。根据子群与陪集的性质,$|G_i|=|f_*G_i|$。 于是有 $|G_i|>|G_x|=|f_*G_i|=|G_i|$,矛盾,反设不成立。引理得证。 --- 下面开始正式证明。 对于每个 $x_i\in O_x$,根据 $O_x$ 的定义,存在某个 $f_i\in G$ 使 $f_i\cdot x=x_i$。 我们任取某个 $f_i$,并记 $f_i$ 与 $G_x$ 构成的陪集为 $P_i=\{f_i\cdot f|f\in G_x\}$。 于是我们把 $O_x$ 映射到 $|O_x|$ 个陪集 $P_i$。我们会说明这些 $P_i$ 构成的集合等于 $S$。 反设有 $f_*\in G$,使得 $f_*G_x$ 不等于任何一个 $P_i$。 设 $f_*(x)=x_p$。根据引理,$P_p$ 包含了所有 $f(x)=x_p$ 的 $f$,矛盾。所以 $\{P_i\}=S$,得证。 ### 推论: 根据拉格朗日定理有 $|G|=|O_x|\cdot |G_x|$。 ### 正式证明: $$\begin{aligned} \sum_{g\in G}|X^{(g)}|&=|\{(g,x)|g\cdot x=x\}|\\ &=\sum_{x\in X}|G_x|=\sum_{x\in X}\dfrac{|G|}{|O_x|}\\ \end{aligned} \Rightarrow \dfrac{1}{|G|}\sum_{g\in G}|X^{(g)}|=\sum_{x\in X}\dfrac{1}{|O_x|} $$ 而 $\sum_{x\in X}\dfrac{1}{|O_x|}$ 其实就是 $X/G$ 的轨道数。因为一个轨道里每一个数贡献轨道大小的倒数,所以一个轨道贡献 $1$。 # 【Polya 定理】 考虑 $|X^{(g)}|$ 有没有其他的计算方式。 考虑 $g180$ 对 $2\times 2$ 的作用: $$ \begin{bmatrix} a&b\\ c&d \end{bmatrix}\Rightarrow \begin{bmatrix} d&c\\ b&a \end{bmatrix} $$ 我们发现,这可以视作两个轮换:$(a,d),(b,c)$。所以问题转化为:给 $a,b,c,d$ 着色,同一轮换里同色的方案数。 记 $k$ 为颜色数,$A$ 为所有格子的集合。记 $C_A(g)$ 为把 $g$ 看作置换,$A$ 会形成的轮换数。 有:$|X^{(g)}|=k^{C_A(g)}$。 ## Polya 定理 $|X/G|=\dfrac{1}{|G|}\sum_{g\in G}k^{C_A(g)}$。 根据 Burnside 引理,$|X/G|=\dfrac{1}{|G|}\sum_{g\in G}|X^{(g)}|$,而 $|X^{(g)}|=k^{C_A(g)}$,所以 Polya 定理成立。 ## 区分 Burnside 引理是 $g$ 作用在 $X$ 上(着色方案),Polya 定理是 $g$ 作用在 $A$ 上(格子)。 # 【题目】 ## 【[P4980:项链计数](https://www.luogu.com.cn/problem/P4980)】 > $n$ 个珠子一串,$k$ 种颜色。旋转相同。求本质不同的着色方案数 $T_{n,k}$。 这个问题有很多拓展,例如每种颜色只能用一次、禁止循环节等。 结论:$T_{n,k}=\dfrac{1}{n}\sum_{d|n}\varphi(d)k^{n/d}$。 考虑 Polya 定理。 $A=\{1,2,\dots,n\}$,$G=\{g_1,\dots,g_n\}$。 根据 Polya 定理,答案为: $$ \dfrac{1}{|G|}\sum_{g\in G}k^{C_A(g)}=\dfrac{1}{|G|}\sum_{i=1}^{n}k^{C_A(g_{i})} $$ 考虑 $C_A(g_i)$ 是多少。记 $p=gcd(i,n)$,则 $i\bmod p$ 相等的在同一个轮换里,所以 $C_A(g_i)=p$。 $$\begin{aligned} &=\dfrac{1}{|G|}\sum_{i=1}^{n}k^{gcd(i,n)}\\ &=\dfrac{1}{|G|}\sum_{d|n}k^d\cdot |\{i|1\le i\le n,gcd(i,n)=d\}|\\ &=\dfrac{1}{|G|}\sum_{d|n}k^d\cdot |\{j|1\le j\le n/d,gcd(j,n/d)=1\}|\\ &=\dfrac{1}{|G|}\sum_{d|n}k^d\cdot \varphi(n/d)\\ \end{aligned} $$ ## 【[P4916:魔力环](https://www.luogu.com.cn/problem/P4916)】 > $n$ 个珠子一串,黑白染色。要求恰好 $m$ 个黑色,且最长黑色段长度 $\le k$。旋转相同,求本质不同方案数。$n,m,k\le 10^5$。 这题有对染色方案的限制,不能用 Polya 定理,只能用 Burnside 引理。因为 Burnside 就是根据染色方案的。 首先,还是有 $G=\{g_1\sim g_n\}$。关键问题在于怎么求 $|X^{(g_i)}|$。 令 $(x_1\sim x_n)$ 表示一种着色方案。需要计数:$x$ 满足题目的要求且 $x$ 在 $g_i$ 下保持不变。 考虑 $x$ 在 $g_i$ 下保持不变是什么意思。令 $d=gcd(g_i,n)$,这个条件等价于 $x$ 以 $d$ 为周期。 于是只需要考虑 $x_1\sim x_d$ 的选法个数,使得里面有 $\dfrac{m}{d}$ 个 $1$,且展开后连续 $1$ 个数 $\le k$。 这个怎么做?这是一个组合计数问题。 首先理一下问题:求长度为 $n$ 的 $01$ 序列,$1$ 有 $a$ 个,$1$ 段长度 $\le k$,认为首尾相连。 先把 $0$ 排成一排,让 $1$ 插入空隙之中。环做不了,必须断环为链,枚举首尾的空隙一共有多少个 $1$。所以方案数可以写作 $\sum_{i=0}^{k}(i+1)Put(a-i,(n-a)-1,k)$。其中 $Put(a,b,k)$ 表示把 $a$ 个球放入 $b$ 个盒子,每个盒子个数 $\le k$ 的方案数。 有容量的放球问题本来只能指数做。但是这里因为每个盒子的上限都一样,所以容斥时对于 $|S|$ 相同的情况可以一起计数。 $Put(a,b,k)=\sum_{i=1}^{\min(a/k,b)}(-1)^i\binom{b}{i}\binom{a-ik+b-1}{b-1}$. ## 【图的同构计数(无标号图计数)】 > 求 $n$ 个点的无向简单图个数。如果能通过将点的编号做置换变成相同的,认为是相同的图。 先用数学语言描述一下变化。若存在置换 $P=(p_1,\dots,p_n)$ 使得 $(i,j)\in G\iff (p_i,p_j)\in G'$,则 $G$ 和 $G'$ 是同构的。 因为没有对置换的特殊限制,考虑 Polya 定理。 把一个图认为是完全图里的边黑白染色得到(黑表示选,白表示不选)。问题转化为一个边的黑白染色计数问题。 考虑如何描述 $A,G$。$A$ 是 $\binom{n}{2}$ 条边的集合,$G$ 是 $n!$ 个点的置换的集合。即 $A=\{e_{i,j}|i<j\}$,$G=\{\text{1 到 n 的所有排列}\}$。 ($g$ 作用到点上之后,$A$ 里的边的编号也要跟着变) 换句话说,$G$ 是 $\dfrac{n(n-1)}{2}$ 条边的对称群的 $n!$ 阶置换群。 问题在于如何求 $C_A(g)$。(注意 $A$ 是边的集合,所以轮换也是边的轮换) 因为 $g$ 是一个置换,相对复杂,先考虑对于 $g$ 的一个轮换内部的边会形成多少个轮换。 手玩一下,观察发现一个大小为 $t$ 的轮换内部的边会形成 $[\dfrac{t}{2}]$ 个轮换。 ![](https://img2024.cnblogs.com/blog/3387368/202412/3387368-20241205194534144-1331347834.png) 这是为什么呢?记两个点 $a,b$ 在轮换中的距离 $dis(a,b)$ 为轮换几次之后 $a$ 变成 $b$。记 $a+d$ 为 $a$ 在轮换上往后走 $d$ 步到的点 我们发现,对于一个固定的 $d$,所有两端距离为 $d$ 的边会形成一个轮换。也就是 $(a,a+d),(a+1,a+d+1),\dots,(a-1,a+d-1)$ 会形成轮换。这是比较显然的。 而 $d$ 有多少种取值?**注意不是 $t$ 种!** 因为 $d=x$ 和 $d=t-x$ 是相同的。所以 $d$ 有 $[\dfrac{t}{2}]$ 个取值,每个取值有一个轮换,所以一共有 $[\dfrac{t}{2}]$ 个。 再考虑轮换之间的边。设两个轮换为 $a_1\sim a_j,b_1\sim b_k$。 手玩一下,观察发现对于两个长度 $j,k$ 的轮换,它们之间会形成 $gcd(j,k)$ 个轮换。 具体证明:假设某条边 $(a_x,b_y)$ 在 $t$ 次之后回到本身,那么 $t\bmod j=0,t\bmod k=0$,最小的 $t$ 即是该轮换的长度,显然 $t=\mathrm{lcm}(j,k)$。这个长度和 $x,y$ 无关!而两轮换一共连了 $jk$ 条边,所以一共有 $jk/\mathrm{lcm}(j,k)=gcd(j,k)$ 个轮换。 那么:若 $g$ 作用在 $V$ 上的轮换长度分别为 $l_1,l_2,\dots,l_s$,那么 $C_A(g)=\sum_{i}[\dfrac{l_i}{2}]+\sum_{i<j}gcd(l_i,l_j)$。 如果暴力枚举 $g$,这复杂度就 $O(n!)$ 了;但是我们发现 $l_1\sim l_s$ 其实是 $n$ 的一个拆分,而 $\{l\}$ 相同的 $g$ 结果相同,所以只需要枚举 $n$ 的拆分,然后计算有多少个 $g$ 能对应到这个拆分即可。 那对于一个拆分,怎么计算有多少个置换,其轮换长度刚好是这个拆分? $1\sim n$ 随便放有 $n!$ 种方案,长度为 $len$ 的轮换会贡献 $len!$ 次重复,所以分配每个元素进轮换里有 $\dfrac{n!}{\prod len!}$。 同时对于相同长度的轮换,它们的元素可以整体交换。设 $c_i$ 为 $i$ 长度的轮换个数,于是又有 $c_i!$ 次重复,再除以 $\prod c_i!$。 然后对于一个轮换内部,就是一个圆排列。 整理一下,对于一个拆分 $(l_1,l_2,\dots,l_k)$,其方案数为 $\dfrac{n!}{\prod l_i\prod c_i!}$。 # 【带权 Burnside 引理】 如果着色方案 $X$ 有权值呢?(**权值符合同轨道内权值相等的性质**) **带权 Burnside 引理**:$ans=\dfrac{1}{|G|}\sum_{g\in G}w(X^{(g)})$,其中 $w(X^{(g)})$ 表示 $\sum_{x\in X^{(g)}} w(x)$。 证明: $\sum_{g\in G}w(X^{(g)})=\sum_{g\in G}\sum_{x\in X^{(g)}}w(x)=\sum_{x}\sum_{g\in G_x}w(x)=\sum_{x}w(x)\cdot |G_x|$。 由拉格朗日定理,$|G_x|\cdot |O_x|=|G|$,所以 $\sum_{x}w(x)\cdot |G_x|=\sum_{x}w(x)\cdot \dfrac{|G|}{|O_x|}$。 所以 $\dfrac{1}{|G|}\sum_{g\in G}w(X^{(g)})=\dfrac{1}{|G|}\sum_{x}w(x)\cdot\dfrac{|G|}{|O_x|}=\sum_xw(x)\cdot \dfrac{1}{|O_x|}=\sum_x w(x)=ans$。 # 【带权 Polya 定理(两种形式)】 ## 形式 1 形式 1(积):假设颜色 $c=1\sim k$ 有权重 $w_c$,着色方案 $x$ 的权重 $w(x)$ 为每个格子颜色权重的**积**。 **带权 Polya 定理 1**:所有本质不同方案的权重总和 $=\dfrac{1}{|G|}\sum_{g\in G}S_1^{l_1(g)}\cdots S_n^{l_n(g)}$。 这里 $S_j=\sum_{c}w(c)^{j}$,$l_j(g)$ 表示 $g$ 的轮换分解中,长度为 $j$ 的轮换个数。 证明: 可以先考虑当所有颜色权重 $=1$ 的时候。此时 $S_j=\sum_{c}1^j=k$,所以 $\sum_{g\in G}S_1^{l_1(g)}\cdots S_n^{l_n(g)}=\sum_{g\in G}k^{l_1(g)+l_2(g)+\cdots+l_n(g)}=\sum_{g\in G}k^{C_A(g)}$。发现这是退化到了无权 Polya 定理的版本。 然后是有权版本。考虑 $g\in G$,设有 $r$ 个轮换,记作 $A_1\sim A_r$。若 $A_1\sim A_r$ 分别着色为 $c_1\sim c_r$ 时,我们产生了一个着色方案 $x$,其权重 $w(x)=w(c_1)^{|A_1|}\cdots w(c_r)^{|A_r|}$。所以 $$\begin{aligned} \sum_{x\in X^{(g)}}w(x)&=\sum_{g\in G}\sum_{c_1,\dots,c_r\in [k]}w(c_1)^{|A_1|}\cdots w(c_r)^{|A_r|}\\ &=\sum_{g\in G}\prod_{i=1}^{r}(\sum_{j=1}^{k}w(j)^{|A_i|})\\ &=\sum_{g\in G}\prod_{j=1}^{n}(\sum_{i=1}^{k}w(i)^j)^{l_j(g)}\\ &=\sum_{g\in G}\prod_{j=1}^{n}S_j^{l_j(g)} \end{aligned}$$ ## 形式 2 形式 2(和):假设颜色 $c=1\sim k$ 有价值 $v_c$,着色方案 $x$ 的价值 $v(x)$ 为每个格子颜色价值的**和**。 求价值为 $m$ 的轨道个数 $T_m$。(这个比总价值更强,如果求了这个,总价值就是 $\sum m\cdot T_m$) 定义 $w(x)=t^{v(x)}$。这里 $t$ 是一个自由变量/参数,我们使用关于 $t$ 的多项式来求解。 (为什么要这样做呢?因为 $v(x)$ 是求和的形式,而转化成 $t^{v(x)}$ 后求和就变成乘积了,可以套用形式一的做法) 目标:$[t^m]\sum_{x\in X}\dfrac{t^{v(x)}}{|O_x|}$。 $$\begin{aligned} [t^m]\sum_{x\in X}\dfrac{t^{v(x)}}{|O_x|}\\ &=\sum_{x\in X}\dfrac{w(x)}{|O_x|}=\text{所有方案 X 的 w 之和}\\ &=\dfrac{1}{|G|}\sum_{g\in G}\prod_{i=1}^{n}S_i^{l_1(g)}\text{(形式一的结论)}\\ \end{aligned}$$ 回顾一下,$S_j=\sum_{c}w(c)^j=\sum_{c}t^{v(c)\cdot j}$。 再引入 $f(t)=\sum_{i=0}^{+\infty}f_i\cdot t^i$,其中 $f_i$ 表示价值为 $i$ 的颜色个数。 那么 $S_j=\sum_{c}t^{v(c)\cdot j}=\sum_{i}f_i\cdot t^{i\cdot j}=\sum_{i}f_i(t^j)^i=f(t^j)$。 再把 $S_j$ 代回原式,则 $T_m=[t^m]\dfrac{1}{|G|}\sum_{g}\prod_{i=1}^{n}f(t^i)^{l_i(g)}$。 ## 形式 2 Ex 当每种颜色的价值不再是一个数,而是一个 $d$ 维向量 $\vec{v(x)}$,也能使用 Polya 定理。 定义 $\displaystyle f(t_1,t_2,\dots,t_d)=\sum_{i_1,\cdots,i_d}(\prod_{j=1}^{d}t_j^{i_j})\cdot f_{(i_1,i_2,\dots,i_d)}$。这里 $f_{(i_1,i_2,\dots,i_d)}$ 表示价值为 $(i_1,i_2,\dots,i_d)$ 的颜色个数。 有:$T_{(i_1,i_2,\dots,i_d)}=[t_1^{i_1}\cdots t_d^{i_d}]\dfrac{1}{|G|}\sum_{g\in G}\prod_{i=1}^{n} f(t_1^i,t_2^i,\dots,t_d^i)^{l_i(g)}$。 # 【题目】 ## 【强制颜色个数的项链计数】 > 有 $k$ 种颜色,求长为 $n$ 的项链个数,使得颜色 $i$ 恰好用 $n_i$ 次。 结论:$\displaystyle ans=\dfrac{1}{n}\sum_{d|gcd(n_1,\dots,n_k)}\varphi(d)\cdot\binom{\frac{n}{d}}{\prod_{i=1}^{k}\frac{n_i}{d}}$。