【$Polya$定理·入门篇】浅尝辄止的$Polya$定理

(Preface)

群论里的东西。

感觉跟着论文一步步看下来还是挺好理解的吧。

前置知识

群论的基本知识

自然是群论中最为基础的定义。

若对于一个集合(G)以及一个给定的二元运算(*),满足以下条件:

  • 封闭性: (forall a,bin G,a*bin G)
  • 结合律: (forall a,b,cin G,(a*b)*c=a*(b*c))
  • 单位元: (exists ein G,forall ain G,a*e=e*a=a)
  • 逆元: (forall ain G,exists bin G,a*b=b*a=e)

就称集合(G)在运算(*)之下是一个群

置换群

置换群中的元素是置换(置换是什么相信大家都知道),运算就是置换的连接。

这是一个相对简单的概念,余就不多说了。

(Polya)定理的推导

公式:(|E_k| imes |Z_k|=|G|)

此处(G)是一个(1sim n)的置换群,而(k)(1sim n)的某个元素。

(Z_k)(k)不动置换类): (G)中使(k)保持不变的所有置换记作(Z_k)。(简称(k)不动置换类)

(E_k)等价类):(k)(G)的作用下能够变化得到的所有元素的集合记作(E_k)

根据定义,其实很容易就能证明上面公式的正确性。

(Burnside)引理

首先介绍一个新的定义:

(D(a_j)):在置换(a_j)下不变的元素个数。

由于(|Z_k|)表示的是使(k)不变的置换个数,(D(a_j))表示的是置换(a_j)下不变的元素个数,二者显然可以建立一个等量关系:

[sum_{k=1}^n|Z_k|=sum_{j=1}^sD(a_j) ]

然后,假设共有(N={1,2,...,n})中共有(L)个等价类(注意,(L)就是一般情况下要求的东西),即设(N=E_1+E_2+...+E_L)

重新考虑(sum_{k=1}^n|Z_k|),就可以发现:

[sum_{k=1}^n|Z_k|=sum_{i=1}^Lsum_{kin E_i}|Z_k|=sum_{i=1}^L|E_i| imes|Z_i| ]

根据最早的那个公式,(|E_k| imes |Z_k|=|G|),得到:

[sum_{k=1}^n|Z_k|=L imes |G| ]

简单移项得到:

[L=frac1{|G|}sum_{k=1}^n|Z_k|=frac1{|G|}sum_{j=1}^sD(a_j) ]

(Polya)定理

考虑到在(Burnside)引理中的(D(a_j))依旧不好算。

定义一个置换(g_i)的循环个数为(c(g_i))

容易发现,对于(g_i)同一循环节中的元素涂上相同颜色所得方案数(m^{c(g_i)}),就等于(a_i)作用下不变的图象数。

也就是说:

[L=frac1{|G|}sum_{i=1}^sm^{c(g_i)} ]

这就是(Polya)定理的公式了。

(Polya)定理模板题

题目链接:【洛谷4980】【模板】Polya定理

考虑本质不同只需要判旋转,因此共有(n)种置换方式,其中第(i)种置换方式就是将所有数转(i)位。

显然,第(i)种置换中环的个数应该是(gcd(i,n)),因此得到答案的式子为:

[frac1nsum_{i=1}^nn^{gcd(i,n)} ]

看到(gcd),自然而然想到莫比乌斯反演,按照它的经典套路,枚举(gcd)

[frac1nsum_{d|n}n^dsum_{i=1}^{frac nd}[gcd(i,frac nd)=1] ]

其中,后半部分的式子显然就是(phi(frac nd)),也就是:

[frac 1nsum_{d|n}n^dphi(frac nd) ]

因此,枚举(d),然后暴力计算(phi(frac nd)),这道题就做完了。

参考文献

2001 - 符文杰:《Pólya原理及其应用》

(Postscript)

(Polya)定理感觉应该是一个很有用的计数工具,但它的题目也都很难,余还要多加研究。。。

原文地址:https://www.cnblogs.com/Nero-Claudius/p/Polya1.html