Polya定理

先简单介绍一下置换群burnside引理

置换群


满足如下性质:
1. 封闭性
2. 结合性
3. 单位元
4. 逆元
置换群
置换群 Sn S n 满足群的所有性质, Sn S n 中的元素:置换。
置换可表示为如下形式:其中, ai a i 为1到n的排列。
(1a12a23a3nan) ( 1 2 3 … n a 1 a 2 a 3 … a n )
定义置换 p p 的乘法运算:
p1=(12343124)p2=(12344321)
p1p2=(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分解为若干不相交的循环的乘积。
共轭类
p=(1221344553)=(12)(345) p = ( 1 2 3 4 5 2 1 4 5 3 ) = ( 1 2 ) ( 3 4 5 )
将一个循环的长度称为一个循环的阶, k k 阶循环出现ck次,用 (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={p1,p2,,pg}
G G 中使k保持不变的置换全体,称为 k k 不动置换类,记做Zk .
等价类
定义关系 R:piG,使kj 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.kRjjRlkRj 3. 若 k R j , j R l 则 k R j (传递性)
则称 R R [1,n]上的一个等价关系。
置换群 G G [1,n]划分成了若干等价类,元素 k k 所属的等价类记为Ek
结论
|Ek||Zk|=|G| | E k | | Z k | = | G |
burnside引理
c1(pk) c 1 ( p k ) 是置换 pk p k 中不动点(长度为1的循环)的个数,则 G G 中不同等价类的个数:
L=i=1gc1(pi)|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 时,对应置换有多少个即可。
假设当循环节数为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 ,对于某一个置换pi c(pi) c ( p i ) 为置换 pi p i 的循环节数, ck(pik) c k ( p i k ) 为置换 pi p i 中长度为 k k 的循环的数目。
mc(pi) 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 次对称多项式P(x1,x2,,xm)
在置换 pi p i 下,颜色状态为 mi=1xkii ∏ i = 1 m x i k i 方案数即为多项式 P P 展开后项i=1mxiki的系数。
那么,该颜色状态的方案数即为置换群 G G 中所有置换对应的多项式展开后项i=1mxiki的系数之和。
这样说似乎有些抽象,具体实现过程可以看这里
UVA 10601 Cubes 原题链接
UVA 10601 Cubes 题解

推广2:图的计数

简单图的计数相当于对有 n n 个无标志顶点的完全图用两种颜色进行着色的不同方案数。
首先,考虑点置换与边置换的关系:
一条边连接了两个点,那么对于这两个点,考虑他们在某个置换中的位置:
若这两个点在同一个循环中,那么边的循环的个数为点的循环的个数的一半。
若这两个点不在一个循环中,那么边的循环的个数为gcd(a,b),a,b为这两个点所在的点循环的长度。(可以画个图,看一看就知道了)
好吧,我还是,画一画吧。水平有限,应该勉强能看吧。

其次,考虑如何找出所有的置换:
如果 n n 比较小,可以暴力枚举,时间为n!(点的全排列)
n n 比较大的时候,由于属于同一共轭类的置换对答案的贡献是相同的,所以考虑枚举一个共轭类,求出这个形式的置换的着色方案数,再乘以该形式的置换的数目,即n!i=1n(ci!ici)(ci为长度是 i i 的循环的个数).
现在已经确定了一种点的置换的形式,那么对应的边的着色方案数如上文所说,考虑两个点是否在同一置换中即可。
例题:BZOJ 1488 图的同构
BZOJ 1488 图的同构 题解
一些题目:
比较模板的题:
The Colored Cubes UVA 10733:立方体涂色问题,基础模板,不解释。
Necklace of Beads POJ 1286:用三种颜色图一串项链的方案数。
考虑旋转和翻转,旋转就枚举旋转的长度i=1~n,循环数目就是gcd(i,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颗珠子的手镯(只旋转,不翻转)的方案数,但是有限制,要求某两种颜色不能相邻。 (1m10)(1n109) ( 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个置换)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值