[整理]Pólya 定理入门到入土

0.闲扯

请注意,Pólya 是匈牙利数学家,请尽量不要漏掉 ó 上的长音符写成 Polya (Polay 就更不行了)

1.前置知识

参见《抽象代数 I》
为了照顾不了解的同学,我们从最基础的定义开始。

1.0 群论简介

已知一个集合 \(G\) 和定义在 \(G\) 上的运算 \(\circ\),说 \(G\) 是一个当且仅当其满足:
\((1)\forall a,b,c\in G,\ (a\circ b)\circ c=a\circ (b\circ c)\)(结合律)
\((2)\exists e,\) 使得 \(\forall a\in G,\ e\circ a=a\circ e=a\)(单位元)也有的屑译者将其译作“幺元”
\((3)\forall a\in G,\ \exists b\in G,\ a\circ b=b\circ a=e\)(逆元)
此时也将这个群记作 \((G,\circ)\)

\((G,\circ)\) 是群,\(H\subseteq G,H\ne\varnothing\)\(H\) 对运算 \(\circ\) 构成群,那么说 \(H\)\(G\)子群,记作 \(H\le G\)
\(H,K\in G\),定义它们的 \(HK=\{hk|h\in H,k\in K\}\)\(K=\{a\}\) 时也可记作 \(Ha\)
\(G\) 是群,\(H\le G,\ a\in G\),则称 \(aH\) (同理,\(Ha\))为 \(H\) 的一个左(同理,右)陪集
易知左陪集和右陪集的个数相等,我们将其记作 \(|G:H|\)
Lagrange 定理:若 \(G\) 为有限群,\(H\le G\),则 \(|G|=|G:H||H|\),证明显然,留作练习。
\(G\) 是群,\(M\in G\),称 \(G\) 的所有包含 \(M\) 的子群之交为\(M\) 生成的子群,记作 \(\langle M\rangle\)

\(G\) 为群,\(S\) 为集合,定义 \(G\)\(S\) 上的一个作用为一个映射

\[\begin{aligned} \varphi:G\times S&\rightarrow S\\ (g,s)&\mapsto g(s) \end{aligned} \]

满足 \(e(s)=s,\ g_1(g_2(s))=(g_1g_2)(s)\)。其中 \(e\)\(G\) 的单位元,\(g_1,g_2\in G,s\in S\)
对于 \(s\in S\),我们定义它在 \(G\) 作用下的轨道 \(\text{Orb}(s)=\{g(s)|g\in G\}\)
定义等价关系 \(\sim:\forall s_1,s_2\in S,\ s_1\sim s_2\Leftrightarrow\exists g\in G,\ g(s_1)=s_2\),容易验证 \(\text{Orb}(s)\) 即为 \(s\) 的等价类。
对于 \(s\in S\),定义其稳定化子 \(\text{Stab}(s)=\{g\in G|g(s)=s\}\)
容易发现,\(|\text{Orb}(s)|=|G:\text{Stab}(s)|=|G|/|\text{Stab}(s)|\),证明留做练习。

1.1 置换与置换群

\([n]={1,2,\dots ,n}\)\([n]\) 到自身的一个双射称为 \([n]\) 上的一个置换
易证 \([n]\) 上的全体 \(n!\) 个置换对映射复合构成群,称为 \([n]\) 上的对称群\(n\) 级对称群,记作 \(S_n\)。对称群的子群称为置换群
定义 \([n]\) 上的二面体群 \(D_n=\{\sigma_i,\tau_j\ |i,j=1,2,\dots ,n\}\),其中 \(\sigma_i(a)=a+i\pmod n,\ \tau_j(a)=-a+j\pmod n,\ a\in[n]\)
二面体群的子群 \(\{\sigma_i\ |i=1,2,\dots ,n\}\) 称作 \([n]\) 上的循环群

1.2 轮换与轮换指标

若置换 \(\sigma\) 满足 \(\sigma(i_1)=i_2,\ \sigma(i_2)=i_3,\dots ,\sigma(i_{k-1})=i_k,\ \sigma(i_k)=i_1\)\(\forall j\ne i_1,i_2,\dots ,i_k,\ \sigma(j)=j\),那么称 \(\sigma\) 是一个 \(k\)-轮换,记作 \(\sigma=(i_1i_2\dots i_k)\)
显然,任意非恒等置换都可唯一分解为不相交轮换的复合。
\(l_i(\sigma)\) 表示 \(\sigma\) 的分解中 \(i\)-轮换的个数,称 \((l_1(\sigma),l_2(\sigma),\dots ,l_n(\sigma))\)\(\sigma\)轮换型号,记作 \(\text{type}(\sigma)\)
Cauchy 公式\(S_n\) 中型号为 \((l_1,l_2,\dots ,l_n)\) 的置换个数为 \(\dfrac{n!}{l_1!l_2!\dots l_n! 1^{l_1}2^{l_2}\dots n^{l_n}}\)
证明留作练习。
\(G\) 是一个 \(n\) 元置换群,定义 \(G\)轮换指标为关于变量 \(x_1,x_2,\dots ,x_n\) 的一个多项式 \(P_G(x_1,x_2,\dots ,x_n)=\dfrac{1}{|G|}\sum\limits_{\sigma\in G}x_1^{l_1(\sigma)}x_2^{l_2(\sigma)}\dots x_n^{l_n(\sigma)}\)
例:因为 \(S_3=\{(1)(2)(3),(12)(3),(13)(2),(23)(1),(123),(132)\}\),所以 \(P_{S_3}=\dfrac{x_1^3+3x_1x_2+2x_3}{6}\)
下面给出一个计算轮换指标的例子(绝大多数证明过程蒯了《组合数学》上的)
\(\sigma=(12\dots n)\),求由 \(\sigma\) 生成的 \(n\) 阶循环群 \(\langle\sigma\rangle\) 的轮换指标。
显然 \(\langle\sigma\rangle=\{\sigma,\sigma^2,\dots ,\sigma^n\}\),下面我们需要计算 \(\text{type}(\sigma^k)\)
\(1\le k\le n\),因为 \(\sigma\)\(n\)-轮换,所以 \(\gcd(k,n)=1\)\(\sigma^k\) 也为 \(n\)-轮换,而 \(k|n\)\(\sigma^k\) 可分解为 \(k\)\(n/k\)-轮换的复合。
对于更加一般的情况,可以设 \(d=\gcd(k,n)\),此时 \(\sigma^k=(\sigma^d)^{k/d}\),易证它也是 \(d\)\(n/d\)-轮换的复合。
由上即得 \(l_i(\sigma^k)=\begin{cases}0,&i\ne n/d,\\d,&i=n/d,\end{cases}\)
\(P_{\langle\sigma\rangle}(x_1,x_2,\dots ,x_n)=\dfrac 1n\sum\limits_{k=1}^n(x_{n/\gcd(k,n)})^{\gcd(k,n)}\)
优化:这个式子求起来是 \(O(n)\) 的,一般无法使用,考虑计算重复的答案。
发现有些 \(\gcd\) 是相同的,考虑计算 \(1\le k\le n,\gcd(k,n)=d\)\(k\) 的个数,同除以 \(d\) 就得到它等于 \(\varphi(n/d)\)
所以原式等于 \(\dfrac 1n\sum\limits_{d|n}\varphi(n/d)(x_{n/d})^d\)

2.Pólya 定理

终于要进入正题了

2.0 Burnside 引理

\(G\) 作用在 \(S\) 上,\(\psi(g)=\{s\in S|g(s)=s\}\),则 \(G\) 的轨道个数为 \(\dfrac{1}{|G|}\sum\limits_{g\in G}|\psi(g)|\)
\(G\) 作用在 \(S\) 上的轨道个数等于 \(S\) 的不动点个数的平均值。

2.1 Pólya 定理

\(A\)\(C\) 分别为 \(n\) 元集和 \(m\) 元集,记 \(C^A={f|f:A\rightarrow C}\)
\(G\)\(A\) 上置换群,\(G\) 作用在 \(C^A\) 上,则轨道个数为 \(P_G(m,m,\dots ,m)\)
证明从略,因为作者也不会。

3.应用

定理的描述很简单,那么它如何应用呢?

3.0 例题

洛谷P4980 【模板】Pólya 定理
观察题目,发现实质上是一个循环群(设为 \(G\))作用在颜色的 \(n\) 元集上,那么就可以直接套定理了:\(ans=P_G(n,n,\dots ,n)=\dfrac 1n\sum\limits_{d|n}\varphi(n/d)n^d\)
此题数据范围较小,暴力求欧拉函数可以很宽松地卡过去。

const int p=1000000007;
int T,n;
il int Phi(int n){
  int res=n;
  for(rg int i=2;i*i<=n;i++){
    if(n%i==0){
      res-=res/i;
      while(n%i==0)n/=i;
    }
  }
  return n>1?res-res/n:res;
}
il int Pow(int a,int b){
  int res=1;
  while(b){
    if(b&1)res=1ll*res*a%p;
    a=1ll*a*a%p,b>>=1;
  }
  return res;
}
int main(){
  Read(T);
  while(T--){
    Read(n);
    int res=0,d;
    for(d=1;d*d<n;d++){
      if(n%d==0){
        res=(res+1ll*Phi(n/d)*Pow(n,d)%p)%p;
        res=(res+1ll*Phi(d)*Pow(n,n/d)%p)%p;
      }
    }
    if(d*d==n)res=(res+1ll*Phi(n/d)*Pow(n,d)%p)%p;
    res=1ll*res*Pow(n,p-2)%p;
    cout<<res<<endl;
  }
  return 0;
}

4.拓展

4.0 带权的 Burnside 引理和 Pólya 定理

给每条轨道加一个权值 \(w(\text{Orb}(s))\),定理的形式也有了变化。
Burnside 引理中的 \(|\psi(g)|\) 替换成内部元素的权值之和;Pólya 定理中的 \(P_G(m,m,\dots ,m)\) 替换成 \(P_G(\sum\limits_{c\in C}w(c),\sum\limits_{c\in C}w(c)^2,\dots ,\sum\limits_{c\in C}w(c)^n)\)

4.1 思考

由于时间原因不再多讲(作者懒),这里留下几个问题供大家思考。
1.仿照循环群,计算二面体群的轮换指标。
2.尝试求 \(n\) 阶简单图的个数。
3.洛谷P4128 [SHOI2006]有色图有色图?来了来了,在哪里啊!

5.参考文献

\([1]\) 赵春来, 徐明耀. 抽象代数 I. 北京:北京大学出版社, 2008.
\([2]\) 冯荣权, 宋春伟. 组合数学. 北京:北京大学出版社, 2015.

posted @ 2021-04-12 21:30  ajthreac  阅读(774)  评论(2编辑  收藏  举报