重新入门的Polya定理
前言
之前根据别人的博客学习\(Polya\)定理,不知道为什么总是一脸懵逼。
今天在法老建议下,去翻了翻集训队论文《Pólya原理及其应用》,一点一点看下来突然就懂了?
群
最基础的定义。
对于一个集合\(G\)以及一个给定的二元运算\(*\),满足以下条件:
- 封闭性: 对于\(G\)中所有\(a,b\),\(a*b\)都在集合中。
- 结合律: 对于\(G\)中所有\(a,b,c\),满足\((a*b)*c=a*(b*c)\)。
- 单位元: 在\(G\)中存在一个\(e\),满足对于\(G\)中所有的\(a\),都有\(a*e=e*a=a\)。
- 逆元: 对于\(G\)中所有的\(a\),都存在一个同在\(G\)中的\(b\),满足\(a*b=e\)。
于是就称集合\(G\)在运算\(*\)之下是一个群。
一个简单的公式
\[|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\),得到:
\[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定理。
待到再迷茫时回头望,所有脚印会发出光芒