Burnside 引理与 Polya 定理

抽象代数前置

【Burnside 引理】

问题引入

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

可以数出有 6 种。


以此为例介绍 Burnside 引理。

设一种染色方案为 xga 为一种变换,表示将某种染色方案顺时针旋转 a 度,则 "旋转相同" 就是 x(g0,g90,g180,g270) 算同一种。

考虑:

  1. xg0=x 的有几种?有 16 种。

  2. xg90=x 的有几种?有 2 种。

  3. xg180=x 的有几种?有 4 种。

  4. xg270=x 的有几种?有 2 种。

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

数学定义

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

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

Burnside 引理结论:|X/G|=1|G|gG|X(g)|

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

证明

需要一些前置定理。

Lagrange 定理

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

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

|G|=[G:H]|H|

Burnside 证明

定义 Ox={x|gG,gx=x,xX}={gx|gG}。理解 x 为一种着色方案,Oxx 所在的轨道。

定义 Gx={g|gG,gx=x}。即 x 的稳定化子,就是作用到 x 后不变。注意分辨 X(g)Gx

观察 1:GxG 的子群。

证明 HG 子群的思路:① 证明 a,bHabH。 ② aHa1H

证明 1:

  1. a,bGx。由定义,ax=x,bx=x,而 (ab)x=a(bx)=ax=x。所以 abGx。利用了群的结合律。

  2. aGx,ab=ee 为单位元),即 b=a1。由定义 ax=x,则 b(ax)=bx,b(ax)=(ba)x=ex=x,所以 bx=x,所以 bGx

证毕。

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

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

证明 2:

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

Oxx 通过 G 能到达的所有状态。Gx={f|fx=x}Gx 的某个陪集 aGx={ab|bGx}
S=Gx 所有陪集 ={aGx|aG}

然后开始证明。来一个引理:

引理:任取一个 f 使得 fx=xi,有 fGx=Gi={g|gG,g(x)=xi}

引理证明

反证法。假设 fGxGi。因为 fx=xi,而 fGx,都有 fx=x,所以 (ff)x=f(fx)=fx=xi。所以 fGxGi

又因为 fGxGi,所以一定有 |fGx|<|Gi|。根据子群与陪集的性质,|fGx|=|Gx|,所以 |Gx|<|Gi|
但是考虑逆变换 f 使得 fxi=x,陪集 fGi 其实就是 Gx(变换一次又逆变换回去了)。所以 |fGi|=|Gx|。根据子群与陪集的性质,|Gi|=|fGi|
于是有 |Gi|>|Gx|=|fGi|=|Gi|,矛盾,反设不成立。引理得证。


下面开始正式证明。

对于每个 xiOx,根据 Ox 的定义,存在某个 fiG 使 fix=xi
我们任取某个 fi,并记 fiGx 构成的陪集为 Pi={fif|fGx}

于是我们把 Ox 映射到 |Ox| 个陪集 Pi。我们会说明这些 Pi 构成的集合等于 S

反设有 fG,使得 fGx 不等于任何一个 Pi
f(x)=xp。根据引理,Pp 包含了所有 f(x)=xpf,矛盾。所以 {Pi}=S,得证。

推论:

根据拉格朗日定理有 |G|=|Ox||Gx|

正式证明:

gG|X(g)|=|{(g,x)|gx=x}|=xX|Gx|=xX|G||Ox|1|G|gG|X(g)|=xX1|Ox|

xX1|Ox| 其实就是 X/G 的轨道数。因为一个轨道里每一个数贡献轨道大小的倒数,所以一个轨道贡献 1

【Polya 定理】

考虑 |X(g)| 有没有其他的计算方式。

考虑 g1802×2 的作用:

[abcd][dcba]

我们发现,这可以视作两个轮换:(a,d),(b,c)。所以问题转化为:给 a,b,c,d 着色,同一轮换里同色的方案数。

k 为颜色数,A 为所有格子的集合。记 CA(g) 为把 g 看作置换,A 会形成的轮换数。
有:|X(g)|=kCA(g)

Polya 定理

|X/G|=1|G|gGkCA(g)

根据 Burnside 引理,|X/G|=1|G|gG|X(g)|,而 |X(g)|=kCA(g),所以 Polya 定理成立。

区分

Burnside 引理是 g 作用在 X 上(着色方案),Polya 定理是 g 作用在 A 上(格子)。

【题目】

P4980:项链计数

n 个珠子一串,k 种颜色。旋转相同。求本质不同的着色方案数 Tn,k

这个问题有很多拓展,例如每种颜色只能用一次、禁止循环节等。

结论:Tn,k=1nd|nφ(d)kn/d

考虑 Polya 定理。

A={1,2,,n}G={g1,,gn}

根据 Polya 定理,答案为:

1|G|gGkCA(g)=1|G|i=1nkCA(gi)

考虑 CA(gi) 是多少。记 p=gcd(i,n),则 imodp 相等的在同一个轮换里,所以 CA(gi)=p

=1|G|i=1nkgcd(i,n)=1|G|d|nkd|{i|1in,gcd(i,n)=d}|=1|G|d|nkd|{j|1jn/d,gcd(j,n/d)=1}|=1|G|d|nkdφ(n/d)

P4916:魔力环

n 个珠子一串,黑白染色。要求恰好 m 个黑色,且最长黑色段长度 k。旋转相同,求本质不同方案数。n,m,k105

这题有对染色方案的限制,不能用 Polya 定理,只能用 Burnside 引理。因为 Burnside 就是根据染色方案的。

首先,还是有 G={g1gn}。关键问题在于怎么求 |X(gi)|

(x1xn) 表示一种着色方案。需要计数:x 满足题目的要求且 xgi 下保持不变。

考虑 xgi 下保持不变是什么意思。令 d=gcd(gi,n),这个条件等价于 xd 为周期。

于是只需要考虑 x1xd 的选法个数,使得里面有 md1,且展开后连续 1 个数 k

这个怎么做?这是一个组合计数问题。

首先理一下问题:求长度为 n01 序列,1a 个,1 段长度 k,认为首尾相连。

先把 0 排成一排,让 1 插入空隙之中。环做不了,必须断环为链,枚举首尾的空隙一共有多少个 1。所以方案数可以写作 i=0k(i+1)Put(ai,(na)1,k)。其中 Put(a,b,k) 表示把 a 个球放入 b 个盒子,每个盒子个数 k 的方案数。

有容量的放球问题本来只能指数做。但是这里因为每个盒子的上限都一样,所以容斥时对于 |S| 相同的情况可以一起计数。
Put(a,b,k)=i=1min(a/k,b)(1)i(bi)(aik+b1b1).

【图的同构计数(无标号图计数)】

n 个点的无向简单图个数。如果能通过将点的编号做置换变成相同的,认为是相同的图。

先用数学语言描述一下变化。若存在置换 P=(p1,,pn) 使得 (i,j)G(pi,pj)G,则 GG 是同构的。

因为没有对置换的特殊限制,考虑 Polya 定理。

把一个图认为是完全图里的边黑白染色得到(黑表示选,白表示不选)。问题转化为一个边的黑白染色计数问题。

考虑如何描述 A,GA(n2) 条边的集合,Gn! 个点的置换的集合。即 A={ei,j|i<j}G={1 到 n 的所有排列}
g 作用到点上之后,A 里的边的编号也要跟着变)
换句话说,Gn(n1)2 条边的对称群的 n! 阶置换群。

问题在于如何求 CA(g)。(注意 A 是边的集合,所以轮换也是边的轮换)

因为 g 是一个置换,相对复杂,先考虑对于 g 的一个轮换内部的边会形成多少个轮换。

手玩一下,观察发现一个大小为 t 的轮换内部的边会形成 [t2] 个轮换。

这是为什么呢?记两个点 a,b 在轮换中的距离 dis(a,b) 为轮换几次之后 a 变成 b。记 a+da 在轮换上往后走 d 步到的点
我们发现,对于一个固定的 d,所有两端距离为 d 的边会形成一个轮换。也就是 (a,a+d),(a+1,a+d+1),,(a1,a+d1) 会形成轮换。这是比较显然的。

d 有多少种取值?注意不是 t 种! 因为 d=xd=tx 是相同的。所以 d[t2] 个取值,每个取值有一个轮换,所以一共有 [t2] 个。

再考虑轮换之间的边。设两个轮换为 a1aj,b1bk

手玩一下,观察发现对于两个长度 j,k 的轮换,它们之间会形成 gcd(j,k) 个轮换。

具体证明:假设某条边 (ax,by)t 次之后回到本身,那么 tmodj=0,tmodk=0,最小的 t 即是该轮换的长度,显然 t=lcm(j,k)。这个长度和 x,y 无关!而两轮换一共连了 jk 条边,所以一共有 jk/lcm(j,k)=gcd(j,k) 个轮换。

那么:若 g 作用在 V 上的轮换长度分别为 l1,l2,,ls,那么 CA(g)=i[li2]+i<jgcd(li,lj)

如果暴力枚举 g,这复杂度就 O(n!) 了;但是我们发现 l1ls 其实是 n 的一个拆分,而 {l} 相同的 g 结果相同,所以只需要枚举 n 的拆分,然后计算有多少个 g 能对应到这个拆分即可。

那对于一个拆分,怎么计算有多少个置换,其轮换长度刚好是这个拆分?

1n 随便放有 n! 种方案,长度为 len 的轮换会贡献 len! 次重复,所以分配每个元素进轮换里有 n!len!
同时对于相同长度的轮换,它们的元素可以整体交换。设 cii 长度的轮换个数,于是又有 ci! 次重复,再除以 ci!
然后对于一个轮换内部,就是一个圆排列。

整理一下,对于一个拆分 (l1,l2,,lk),其方案数为 n!lici!

【带权 Burnside 引理】

如果着色方案 X 有权值呢?(权值符合同轨道内权值相等的性质

带权 Burnside 引理ans=1|G|gGw(X(g)),其中 w(X(g)) 表示 xX(g)w(x)

证明:

gGw(X(g))=gGxX(g)w(x)=xgGxw(x)=xw(x)|Gx|

由拉格朗日定理,|Gx||Ox|=|G|,所以 xw(x)|Gx|=xw(x)|G||Ox|

所以 1|G|gGw(X(g))=1|G|xw(x)|G||Ox|=xw(x)1|Ox|=xw(x)=ans

【带权 Polya 定理(两种形式)】

形式 1

形式 1(积):假设颜色 c=1k 有权重 wc,着色方案 x 的权重 w(x) 为每个格子颜色权重的

带权 Polya 定理 1:所有本质不同方案的权重总和 =1|G|gGS1l1(g)Snln(g)
这里 Sj=cw(c)jlj(g) 表示 g 的轮换分解中,长度为 j 的轮换个数。

证明:

可以先考虑当所有颜色权重 =1 的时候。此时 Sj=c1j=k,所以 gGS1l1(g)Snln(g)=gGkl1(g)+l2(g)++ln(g)=gGkCA(g)。发现这是退化到了无权 Polya 定理的版本。

然后是有权版本。考虑 gG,设有 r 个轮换,记作 A1Ar。若 A1Ar 分别着色为 c1cr 时,我们产生了一个着色方案 x,其权重 w(x)=w(c1)|A1|w(cr)|Ar|。所以

xX(g)w(x)=gGc1,,cr[k]w(c1)|A1|w(cr)|Ar|=gGi=1r(j=1kw(j)|Ai|)=gGj=1n(i=1kw(i)j)lj(g)=gGj=1nSjlj(g)

形式 2

形式 2(和):假设颜色 c=1k 有价值 vc,着色方案 x 的价值 v(x) 为每个格子颜色价值的
求价值为 m 的轨道个数 Tm。(这个比总价值更强,如果求了这个,总价值就是 mTm

定义 w(x)=tv(x)。这里 t 是一个自由变量/参数,我们使用关于 t 的多项式来求解。

(为什么要这样做呢?因为 v(x) 是求和的形式,而转化成 tv(x) 后求和就变成乘积了,可以套用形式一的做法)

目标:[tm]xXtv(x)|Ox|

xXtv(x)|Ox|=xXw(x)|Ox|=所有方案 X 的 w 之和=1|G|gGi=1nSil1(g)(形式一的结论)

回顾一下,Sj=cw(c)j=ctv(c)j
再引入 f(t)=i=0+fiti,其中 fi 表示价值为 i 的颜色个数。
那么 Sj=ctv(c)j=ifitij=ifi(tj)i=f(tj)

再把 Sj 代回原式,则 Tm=[tm]1|G|gi=1nf(ti)li(g)

形式 2 Ex

当每种颜色的价值不再是一个数,而是一个 d 维向量 v(x),也能使用 Polya 定理。

定义 f(t1,t2,,td)=i1,,id(j=1dtjij)f(i1,i2,,id)。这里 f(i1,i2,,id) 表示价值为 (i1,i2,,id) 的颜色个数。

有:T(i1,i2,,id)=[t1i1tdid]1|G|gGi=1nf(t1i,t2i,,tdi)li(g)

【题目】

【强制颜色个数的项链计数】

k 种颜色,求长为 n 的项链个数,使得颜色 i 恰好用 ni 次。

结论:ans=1nd|gcd(n1,,nk)φ(d)(ndi=1knid)

posted @   FLY_lai  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示