先简单介绍一下置换群和burnside引理
置换群
群
满足如下性质:
1. 封闭性
2. 结合性
3. 单位元
4. 逆元
置换群
置换群
Sn
S
n
满足群的所有性质,
Sn
S
n
中的元素:置换。
置换可表示为如下形式:其中,
ai
a
i
为1到n的排列。
(1a12a23a3……nan)
(
1
2
3
…
n
a
1
a
2
a
3
…
a
n
)
定义置换
p
p
的乘法运算:
p1∗p2=(13213244)∗(14233241)
p
1
∗
p
2
=
(
1
2
3
4
3
1
2
4
)
∗
(
1
2
3
4
4
3
2
1
)
=(13213244)∗(32142341)
=
(
1
2
3
4
3
1
2
4
)
∗
(
3
1
2
4
2
4
3
1
)
=(12243341)=(124)(3)=(3)(124)
=
(
1
2
3
4
2
4
3
1
)
=
(
1
2
4
)
(
3
)
=
(
3
)
(
1
2
4
)
burnside引理
可将任一置换
p
p
分解为若干不相交的循环的乘积。
接下来提到的置换,默认将置换分解为若干不相交的循环的乘积。
共轭类
如
p=(1221344553)=(12)(345)
p
=
(
1
2
3
4
5
2
1
4
5
3
)
=
(
1
2
)
(
3
4
5
)
将一个循环的长度称为一个循环的阶,
k
k
阶循环出现次,用
(k)ck
(
k
)
c
k
表示。如
p=(2)1(3)1
p
=
(
2
)
1
(
3
)
1
.
Sn
S
n
中具有相同格式的置换全体构成一个共轭类。
Sn
S
n
中属于
(1)c1(2)c2(3)c3…(n)cn
(
1
)
c
1
(
2
)
c
2
(
3
)
c
3
…
(
n
)
c
n
共轭类的元素个数:
n!∏ni=1(ci!ici) n ! ∏ i = 1 n ( c i ! i c i )
k
k
不动置换类
设置换群。
G
G
中使保持不变的置换全体,称为
k
k
不动置换类,记做 .
等价类
定义关系
R:若∃pi∈G,使得k→j
R
:
若
∃
p
i
∈
G
,
使
得
k
→
j
,则称
kRj
k
R
j
.
如果满足:
1.kRk
1.
k
R
k
(自反性)
2.若kRj,则jRk
2.
若
k
R
j
,
则
j
R
k
(对称性)
3.若kRj,jRl则kRj
3.
若
k
R
j
,
j
R
l
则
k
R
j
(传递性)
则称
R
R
是上的一个等价关系。
置换群
G
G
将划分成了若干等价类,元素
k
k
所属的等价类记为。
结论:
|Ek||Zk|=|G|
|
E
k
|
|
Z
k
|
=
|
G
|
burnside引理:
设
c1(pk)
c
1
(
p
k
)
是置换
pk
p
k
中不动点(长度为1的循环)的个数,则
G
G
中不同等价类的个数:
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
进入正题
Polya定理
设
G={p1,p2,…,pg}
G
=
{
p
1
,
p
2
,
…
,
p
g
}
是n个对象的一个置换群,记
c(pi)
c
(
p
i
)
为置换
pi
p
i
的循环节数, 用m种颜色染这n个对象,则不同的染色方案数为:
L=∑gi=1mc(pi)|G|
L
=
∑
i
=
1
g
m
c
(
p
i
)
|
G
|
所以,计数时只需统计当循环节数为
k
k
时,对应置换有多少个即可。
假设当循环节数为时,对应置换有
a[k]
a
[
k
]
个,则不同的染色方案数为:
L=∑ni=1(a[k]∗mk)|G|
L
=
∑
i
=
1
n
(
a
[
k
]
∗
m
k
)
|
G
|
当然,如果这并不是一个单纯的染色,可能涉及到一些限制时,你可以将
mc(pi)
m
c
(
p
i
)
替代为在置换
pi
p
i
下染色的方案数
f(i)
f
(
i
)
,由于不同循环间相互独立,而同一循环中的元素染色相同,所以
f(i)
f
(
i
)
等于每一个循环的染色方案数的乘积。
UVA 11540 Sultan’s Chandelier 原题链接
UVA 11540 Sultan’s Chandelier 题解
推广1:母函数形式的Polya定理
如果我们已经确定了m种颜色的状态(某种颜色i染k[i]个对象),要求在这种状态下的方案数,就要用到母函数形式的Polya定理。
接下来我们用
xi
x
i
表示颜色
i
i
,对于某一个置换,
c(pi)
c
(
p
i
)
为置换
pi
p
i
的循环节数,
ck(pik)
c
k
(
p
i
k
)
为置换
pi
p
i
中长度为
k
k
的循环的数目。
将用
P=∏mk=1(∑mi=1xki)ck(pik)
P
=
∏
k
=
1
m
(
∑
i
=
1
m
x
i
k
)
c
k
(
p
i
k
)
形式代替形成以
x1,x2,…,xm
x
1
,
x
2
,
…
,
x
m
为变元的
n
n
次对称多项式。
在置换
pi
p
i
下,颜色状态为
∏mi=1xkii
∏
i
=
1
m
x
i
k
i
方案数即为多项式
P
P
展开后项的系数。
那么,该颜色状态的方案数即为置换群
G
G
中所有置换对应的多项式展开后项的系数之和。
这样说似乎有些抽象,具体实现过程可以看这里
UVA 10601 Cubes 原题链接
UVA 10601 Cubes 题解
推广2:图的计数
简单图的计数相当于对有
n
n
个无标志顶点的完全图用两种颜色进行着色的不同方案数。
首先,考虑点置换与边置换的关系:
一条边连接了两个点,那么对于这两个点,考虑他们在某个置换中的位置:
若这两个点在同一个循环中,那么边的循环的个数为点的循环的个数的一半。
若这两个点不在一个循环中,那么边的循环的个数为为这两个点所在的点循环的长度。(可以画个图,看一看就知道了)
好吧,我还是,画一画吧。水平有限,应该勉强能看吧。
其次,考虑如何找出所有的置换:
如果
n
n
比较小,可以暴力枚举,时间为(点的全排列)
n
n
比较大的时候,由于属于同一共轭类的置换对答案的贡献是相同的,所以考虑枚举一个共轭类,求出这个形式的置换的着色方案数,再乘以该形式的置换的数目,即为长度是
i
i
的循环的个数).
现在已经确定了一种点的置换的形式,那么对应的边的着色方案数如上文所说,考虑两个点是否在同一置换中即可。
例题:BZOJ 1488 图的同构
BZOJ 1488 图的同构 题解
一些题目:
比较模板的题:
The Colored Cubes UVA 10733:立方体涂色问题,基础模板,不解释。
Necklace of Beads POJ 1286:用三种颜色图一串项链的方案数。
考虑旋转和翻转,旋转就枚举旋转的长度i=1~n,循环数目就是,翻转要分成两种情况:
n为偶数:选择一颗珠子,以这颗珠子到项链圆心的连线为轴翻转,置换的数目是n/2(显然,这根轴还穿过了另一颗珠子,所以是n/2),置换中循环的数目是n/2+1(两个不动置换和n/2-1个2阶置换)。或选择相邻的两颗珠子,以他们的中点到项链圆心的连线为轴翻转,置换的数目是n/2,置换中循环(2阶循环)的数目是n/2。
n为奇数:选择一颗珠子,以这颗珠子到项链圆心的连线为轴翻转,置换的数目是n,置换中循环的数目是(n+1)/2。
无论n为奇数还是偶数,所有置换的数目都是2n。
The Queen’s New Necklaces UESTC 75:用ki个颜色为i的珠子能串成多少不同的项链。
母函数形式的Polya定理,求出系数和即可。
Count the Tetris HDU 1812:用C种颜色染n*n的棋盘的方案数。
考虑旋转0度,90度,180度,270度,这道题比较困难的是要写高精度。
变式:
Magic Bracelet POJ 2888:用m种颜色染一个n颗珠子的手镯(只旋转,不翻转)的方案数,但是有限制,要求某两种颜色不能相邻。
(1≤m≤10)(1≤n≤109)
(
1
≤
m
≤
10
)
(
1
≤
n
≤
10
9
)
如果没有限制,这道题就是个板题了,然而~~。
如果不旋转,这道题就等价于:在一个有m点的图中(一个点代表一个颜色),求从任意点开始,走n步再回到起点的方案数。图上不能相邻的两种颜色之间没有边。
由于m比较小,n比较大,所以用矩阵快速幂可以解决这个简化的问题。
现在考虑旋转:当旋转的长度为i时,循环数目就是gcd(i,n),这样的置换是唯一的,但我们可以发现不同的gcd(i,n)最多只有
2n−−√
2
n
个。所以我们不妨枚举gcd(i,n),即
n−−√
n
枚举n的因子,符合gcd(i,n)=k (i≤n) 的 i 显然有
ϕ(nk)
ϕ
(
n
k
)
个,即循环的数目为k的置换有
ϕ(nk)
ϕ
(
n
k
)
个。
所以,答案加上为走k步回到起点的方案数乘
ϕ(nk)
ϕ
(
n
k
)
,最后答案再除以n(有n个置换)