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

零.约定:

(置换等名词会在前置知识中有解释)

(1.)在本文中,题目要求的染色方案等统称为“元素”。

(2.)两个元素严格相等我们记做“(=)”,两个元素等价(按题目所给的置换可以互相得到)我们记做“(Leftrightarrow)”。

(3.)元素(a)进行置换(g)我们记做(aotimes g)

(4.)置换之间的乘积记做(odot)(g_i=g_jodot g_k),当且仅当(forall a,aotimes g_i=aotimes g_jotimes g_k),将(g_jodot g_k)代入(g_i)(aotimes(g_jodot g_k)=aotimes g_jotimes g_k)

一.前置知识:

(1.)置换:

如下图所示,这是一个置换,一个置换只与两行之间的对应关系有关,与列的顺序无关。

[left(egin{matrix}1&2&3&4\2&3&1&4end{matrix} ight)=left(egin{matrix}1&4&3&2\2&4&1&3end{matrix} ight) ]

我们的一个元素(left(egin{matrix}3&2&4&1end{matrix} ight))在经过这个置换后就变成了(left(egin{matrix}4&3&2&1end{matrix} ight))。列({^a_b})表示原来第(a)位的元素置换后到了第(b)位。

(2.)循环:

形式如下的置换叫做一个(n)阶循环(任意一个(n)阶循环可以记做(r_n)):

[left(egin{matrix}a_1&a_2&a_3&cdots&a_n\a_2&a_3&a_4&cdots&a_1end{matrix} ight) ]

(3.)置换的分解:

指把置换(g)分解成(r_1^{k_{1}}r_2^{k_{2}}cdots r_n^{k_{n}})的形式((r_j^{k_{j}})表示(j)阶循环一共有(k_{j})个(同阶循环可以不相同)),各个循环之间的元素互不相交。感性理解一下就是,对于列(^a_b),从(a)(b)连一条有向边,这样会形成一个个环,一个长度为(i)的环对应着一个(r_i)。令(w(g)=sum_{i=1}^n k_i),即循环总个数。

(4.)不动点:

如果元素(aotimes g_i = a),那么我们称(a)为置换(g_i)的不动点,(g_i)的不动点个数用(chi(g_i))表示。

(5.)群:

群用((G,oplus))表示,其中(G)是一个集合,(oplus)是定义在(G)上的一个二元运算,并且满足:

封闭性((forall a,b in G,aoplus b in G))

结合律((aoplus(boplus c)=(aoplus b)oplus c))

存在单位元((exists e,forall a,eoplus a = aoplus e = a))

存在逆元((forall a,exists a^{-1},aoplus a^{-1} = a^{-1}oplus a = e))

那么这是一个群。

(6.)置换群:

置换群就是将置换作为元素的群。

证明:

封闭性:置换的乘积也是置换,在这个群中。

结合律:手模小样例可知,(aodot bodot c=aodot(bodot c))

单位元:

[left(egin{matrix}1&2&3&cdots&n\1&2&3&cdots&nend{matrix} ight) ]

逆元:将置换的两行交换位置便是逆元。

(7.)等价类:

如果(exists g,s.t.~aotimes g = b)那么我们称(aLeftrightarrow b),所有互相等价的元素组成一个等价类,元素(a)所属的等价类记做(E_a)答案(L)便是等价类的种类。

(8.)不动置换类:

置换群(G)中,使元素(a)不变的置换全体,称为(a)的不动置换类,记做(Z_a(forall g in Z_a,aotimes g=a&&forall g otin Z_a,aotimes g e a))

二.(Burnside)引理:

内容:

等价类个数

[L = frac {sum_{gin G} chi(g_j)}{|G|} ]

证明:

(step~1:)首先看两个定理:

(1.)

仿佛没什么用的定理:(|Z_k|)(G)的一个子群。

证明:

封闭性:使(k)不动的两个置换的积也使(k)不动,属于这个群。

结合律:显然

存在单位元:显然任何元素都(G)单位元的不动点。

存在逆元:置换(g)属于元素(a)的不动置换类,当且仅当(g)的每一列(^x_y)(a_x=a_y)。显然(g)的逆元也满足这个条件,也在不动置换类中。

(2.)

重要定理:(forall a,|E_a||Z_a|=|G|)

证明:

如果对于(forall bin E_a)都有恰好(|Z_a|)个不同置换使(a)转化成(b),那么定理得证(因为(a)进行一种置换有且仅有一个结果)。

首先,因为(bin E_a)一定存在一个置换(p)使得(aotimes p = b)。因为(Z_a)(a)的不动置换类,所以

(forall zin Z_a)

(ecause aotimes z=a,aotimes p = b)

( herefore aotimes zotimes p = b)

( herefore aotimes(zodot p)=b)

(z)互不相同,所以(zodot p)互不相同,(z)(|Z_a|)种取值,所以有至少(|Z_a|)种置换,使(a)转化成(b)。现在我们只要能证明(zodot p)能够取遍所有使(a)转化成(b)的置换即可。

我们考虑反证法:

同上,因为(bin E_a)一定存在一个置换(p)使得(aotimes p = b)

假设存在一个置换(q)(aotimes q = b),且(forall zin Z_a,zodot p eq q)

显然(exists c=qodot p^{-1}in G,s.t.~codot p = q)

(ecause aotimes q =b,codot p = q)

( herefore aotimes(codot p)=b)

( herefore aotimes cotimes p=b)

(ecause aotimes p =b)

( herefore aotimes c = a)

( herefore cin Z_a,)与假设(forall zin Z_a,zodot p eq q)相悖,所以不成立。

证毕。

(step~2:)

(U)为一个等价类集合,共(L)个等价类。

(n)是元素总数。

(ecause forall a,|E_a||Z_a|=|G|)

( herefore |Z_a|=frac{|G|}{|E_a|})

( herefore sum_{i=1}^n|Z_i|=|G|sum_{i=1}^nfrac{1}{|E_i|})

因为每个(E_i)大小为(|E_i|),贡献(frac{1}{|E_i|}),会被算(|E_i|)次,所以每一种等价类的总贡献(1)(sum_{i=1}^{n}frac{1}{|E_i|}=)等价类的种类即答案(L)

( herefore sum_{i=1}^n|Z_i|=|G|L)

( herefore L=frac{sum_{i=1}^n|Z_i|}{|G|})

不动点和不动置换的关系是相互的,所有置换的不动点之和等于所有元素的不动置换之和。

( herefore L=frac{sum_{gin G}chi(g)}{|G|})

证毕。

三.(Polya)定理:

内容:

若题目是对(n)个对象染(m)种颜色,则

[chi(g)=m^{w(g)} ]

[L=frac{sum_{gin G}m^{w(g)}}{|G|} ]

证明:

(a)(g)的不动点,对于每一列(^x_y),都有(a_x=a_y),而一个循环是许多列首尾相接,所以他们都相等。所以对于(g)的一个循环(r)(forall i,jin r,a_i =a_j),所以(chi(g))就相当于给(g)每个循环染色的方案数(每个循环染相同的颜色)。所以(chi(g)=m^{w(g)})

证毕。

扩展:

这个式子是基于可以给(g)每个循环任意染色这个前提的,如果染色数量有限制,我们就需要求给(g)每个循环染色的方案数,通常用(dp)来扩展此问题。

四.应用与例题:

常见置换的循环个数:

(1.)(套路(1))将长度为(n)序列(或者环)循环移(k)位,循环个数为(gcd(n,k))

(2.)(套路(2))将长度为(n)环沿对称轴反转,若(n)是奇数则(n)条对称轴的循环个数都是(lceilfrac n 2 ceil);否则,有(frac n 2)对称轴的循环个数是(frac n 2),另外一半对称轴个数是(frac n {2}+1)

例题:

(1.)luogu 1446

(a.)题目大意:

(n)张扑克牌,染三种颜色,每种颜色规定数目。再给定(m)中洗牌方法,通过洗牌可以互相得到的方案等价,求有多少种不同方案。

(b.)题目分析:

在本题中,洗牌方法就是置换,而染色方案是“元素”。

本题给了 “输入数据保证任意多次洗牌都可用这(m)种洗牌法中的一种代替,且对每种洗牌法,都存在一种洗牌法使得能回到原状态” 的条件,使满足封闭性和存在逆元。至于单位元,我们需要人为添加一种置换(自己到自己),来使之满足条件,由于单位元(aotimes e = a)的性质,不会对答案产生影响,但我们必须添加使之可以使用(Burnside)引理。

(c.)具体做法:此处染色有数目限制,不能直接使用(Polya)定理。我们首先(Theta(n))求出每一种洗牌方案的循环个数。然后我们对于每一种洗牌方案,通过(dp)求染色方案,具体的说,(f[i][a][b][c])表示前(i)个循环已经染完色,三种颜色分别剩(a,b,c)
,初始状态(f[0][Sum_a][Sum_b][Sum_c])答案是(f[w][0][0][0])

总复杂度(Theta(nmSum_aSum_bSum_c)),可过。

(2.)luogu 4980

(a.)题目大意:自己看吧

(b.)题目分析:直接套公式,置换为(n)种循环移位 ,直接套用套路(1),循环个数为(gcd(n,k))的性质来优化。

[ans = frac 1 {|G|}{sum_{i = 0} ^ {n-1}m^{gcd(n,i)}} ]

我们优化一下:

[sum_{i=0}^{n-1}m^{gcd(n,i)}=sum_{t|n}sum_{i=1}^{frac n t}I[gcd(it,n)==t] imes m^t=sum_{t|n}sum_{i=1}^{frac n t}I[gcd(i,frac n t)==1] imes m^t=sum_{t|n}varphi(frac n t)m^t ]

我们只需要枚举(t)(sqrt{n})就可以了,然后再(sqrt{n})(varphi),复杂的(Theta(Tn^{frac 3 4}))您也可以大力Pollad-rho一发

(3.)UVA11255

大水题限制染色次数+可以翻转旋转,直接套用套路(1)(2)即可。

(4.)UVA10601

(a.)题目大意:一个正方体,给棱染色,有数量限制,旋转同构。

(b.)题目分析:

我们本题置换种类繁多:横向旋转(面向自己的面不变),竖向旋转(面向自己的面发生改变),以及两种旋转的组合。

但是我们发现有一些旋转的组合结果是相同的,我们考虑枚举结果,即选定面向自己的正方形的下底边为基准,枚举原来哪个位置的边转到了这个位置,共十二种置换,然后统计每个置换的循环个数(暴枚或者手模都可以),再根据数量限制扩展一下定理即可。

五.总结:

全是废话

(Polya)定理实质上是(Burnside)引理的一个扩展,虽然式子简单,但是能够解决的问题却很有限。我们通常通过(dp),组合数等来求不动点个数(chi(g)),这既可以说是(Polya)定理的扩展也可以说是(Burnside)引理的扩展。

原文地址:https://www.cnblogs.com/Smeow/p/10582991.html