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

\(Preface\)

群论里的东西。

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

前置知识

群论的基本知识

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

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

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

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

置换群

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

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

\(Polya\)定理的推导

公式:\(|E_k|\times |Z_k|=|G|\)

此处\(G\)是一个\(1\sim n\)的置换群,而\(k\)\(1\sim 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}^L\sum_{k\in E_i}|Z_k|=\sum_{i=1}^L|E_i|\times|Z_i| \]

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

\[\sum_{k=1}^n|Z_k|=L\times |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)\),因此得到答案的式子为:

\[\frac1n\sum_{i=1}^nn^{gcd(i,n)} \]

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

\[\frac1n\sum_{d|n}n^d\sum_{i=1}^{\frac nd}[gcd(i,\frac nd)=1] \]

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

\[\frac 1n\sum_{d|n}n^d\phi(\frac nd) \]

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

参考文献

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

\(Postscript\)

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

posted @ 2020-07-28 18:02  童女讴歌的荣华帝政  阅读(222)  评论(0编辑  收藏  举报