Polya 定理
一.群
1.群的定义
对于一个集合 \(S\) 和定义在这个集合上的二元运算 \(*\) , 满足:
-
封闭性。 \(\forall a \in S,b \in S\) ,\(a*b \in S\)
-
结合律。 \(a*b*c=a*(b*c)\)
-
单位元。 \(\exists \epsilon \in S\) , \(a*\epsilon = \epsilon * a=a\)
-
逆元。 \(\forall a \in S\) , \(\exists b \in S\) , \(a * b = \epsilon\) , 记作 \(a'\)
那么称 \((S,*)\) 为一个群。
值得注意的是,一个群的单位元和逆元都是唯一的。
2.子群
若 \(G(S,*)\) 为一个群,若 \(T \subseteq S\) ,且 \(H(T,*)\) 也为一个群,那么称 \(H\) 为 \(G\) 的子群,记作 \(H \le G\)
3.陪集
左陪集:若群 \(H\) 为群 \(G\) 的一个子群,且对于 \(g \in S\),\(g * H=\{g * h|h \in T \}\)。
同样可以定义右陪集。
注意陪集可能不包含单位元,不一定是群。
陪集的性质:
- \(|H|=|gH|\)
- \(g \in gH\)
- \(gH=H \Leftrightarrow g \in H\)
- \(aH=bH \Leftrightarrow a * b^{-1} \in H\)
- \(aH \not= BH \Rightarrow aH \bigcap bH=\varnothing\)
- \(\displaystyle \bigcup_{g \in G} gH={G}\)
二.拉格朗日定理
\([G:H]\): \(G\) 中 \(H\) 不同陪集的数量
\(G~/~H~\): \(G\) 中所有 \(H\) 的左陪集
有:
证明:由陪集的性质 1、5、6 显然。
三.置换群
1.置换
对于集合 \(S=\{a_1,a_2 \dots a_n\}\) , 一个置换 \(f\) 可表示为:
\(p\) 为 \(1\sim n\) 的排列,意义为将 \(a_i\) 映射为 \(a_{p_i}\)。
称为置换的乘法。
2.循环置换
一种特殊的置换,其中:
任意一个置换都可以表示为若干不相交的循环置换的乘积,例如
将一个置换 \(f\) 拆分的循环置换个数记为 \(c(f)\)
3.置换群
若 \(S\) 包含所有的 \(n!\) 个不同 \(n\) 元置换,\(G(S,\times)\) 为一个群,证明如下:
- 封闭性。 两个 \(n\) 元置换的乘积仍为 \(n\) 元置换,包含于 \(S\)。
- 结合律。置换的乘法有结合律。
- 单位元。置换 \(\begin{pmatrix}a_1,a_2,\dots,a_n\\ a_1,a_2,\dots,a_n\end{pmatrix}\),也称恒等置换。
- 逆元。上下两行交换即可。
\(G\) 的子群称作置换群。
四.Burnsied 引理 和 Pólya 定理
1.轨道稳定子定理
对于作用在集合 \(X\) 上的群 \(G\) 和集合 \(X\) 的一个元素 \(x\)
\(x\) 的轨道:\(G(x)=\{ g(x) | g \in G\}\)
\(x\) 的稳定子:\(G^x=\{ g \in G| g(x)=x\}\)
这里 \(g(x)\) 为群作用的函数,例如上文提到的置换。
- \(G^x\) 为 \(G\) 的子群。
证明:
- 封闭性。 \(f(x)=x,g(x)=x,f \times g=f(g(x))=x\),所以 \(f \times g \in G^x\)
- 结合律。显然。
- 单位元。\(\epsilon(x)=x\),所以 \(\epsilon \in G^x\)
- 逆元。\(\forall g \in G\),因为 \(g\times g'=\epsilon\) , \(g(x)=\epsilon(x)=x\),所以 \(g'(x)=x\),\(g'(x) \in G\)
- \(|G(x)|=[G:G^x]\)
证明:
对于 \(f(x)=g(x)\) , \(f \times g^{-1}=\epsilon\)所以 \(f \times g^{-1} \in G^x\) , \(\Rightarrow fG^x = gG^x\) , 反之亦然。
即不同的 \(g\) 对应不同的陪集。
所以对于 \(G(x)\) 中的 \(g\) , 构造对应陪集为 \(gG^x\)。
轨道稳定子定理:
证明:
因为 \(G^x\) 为 \(G\) 的子群,由拉格朗日定理得:\[|G^x| \times [G:G^x]=|G| \]由性质2得:
\[|G^x| \times |G(x)| = |G| \]
2.Burnside 引理
若一个置换群 \(G\) 作用于 \(X\) , \(X/G\) 表示在群 \(G\) 作用下 \(X\) 的所有等价类的集合。(注意每个等价类也是一个集合,若两个元素在 \(G\) 作用下可以转化则属于同一个等价类)
\(X^g\) 表示在 \(g\) 的作用下不变的 \(X\) 中元素的集合。
那么有:
证明:
即:
可以参考 oi-wiki 的例子。
3.Pólya 定理
证明:
由 burnside 引理发现,在 \(g\) 作用下的不动点的充要条件是每一个循环置换里元素同色。
那么式子就很显然了。
五.例题
1.P4980 【模板】Pólya 定理
首先置换群 \(G\) 包含的元素分别为: 旋转 \(1\) 个点,旋转 \(2\) 个点...旋转 \(n\) 个点
不难发现,旋转 \(k\) 个点的 \(c(g)=\gcd(n,k)\),原因如下:
所有循环置换所包含的元素个数相同,均为 \(\frac{\text{lcm(n,k)}}{k}\)。(旋转次数/旋转步长)
那么循环置换的个数便为 \(\frac{n}{\frac{\text{lcm}(n,k)}{k}}=\gcd(n,k)\)
由 polya 定理得:
化简可得:
直接计算即可,复杂度 \(\mathcal{O(n^{\frac{3}{4}})}\)
2.[POJ 2888]Magic Bracelet
与 例1 区别在于部分颜色无法相邻,解决这类有限制的问题一般使用 Burnside 引理。
记 \(f_i\) 为有 \(i\) 个轮换的不动点数,由 1 得:
注意到同一个轮换里的点仍需同色,且不同轮换的点恰好相邻
设 \(g_{v,i,j}\) 表示第 \(1\) 个点颜色为 \(v\) , 第 \(i\) 个点颜色为 \(j\) 的方案数
\(g\) 可以通过矩阵快速幂求得。
3.SP419/SP422 Transposing is Fun 1/2
将转置看成一种置换,矩阵内的数一定形成若干轮换。
只需进行 \(k-1\) 次对换便可还原一个长度为 \(k\) 的轮换,换句话说,每有一个轮换答案便少 \(1\)。
令 \(K\) 为轮换数,答案便为 \(2^{a+b}-K\)
考虑如何计算 \(K\):
观察 \(a=2,b=1\) 的情况
前:
0(000) | 1(001) |
---|---|
2(010) | 3(011) |
4(100) | 5(101) |
6(110) | 7(111) |
后:
0(000) | 4(100) |
---|---|
1(001) | 5(101) |
2(010) | 6(110) |
3(011) | 7(111) |
发现转置后矩阵内数的二进制循环右移了 \(b\) 位,那么应该有 \(\gcd(a+b,b)=\gcd(a,b)\) 个轮换,每个轮换长度为 \(\frac{a+b}{\gcd(a,b)}\)
将每相邻的 \(\gcd(a,b)\) 个二进制位看成一个整体,它的颜色应有 \(2^{\gcd(a,b)}\) 种 (每位有 0/1 两种选法)
令 \(\displaystyle n = \frac{a+b}{\gcd(a,b)}\) ,即新的’珠子‘个数。现在可以随便旋转,根据例 1 得
筛出 \(\varphi\) 后枚举因数计算, 时间复杂度 \(\mathcal{O}(t\sqrt{n})\)
4.P4128 [SHOI2006] 有色图
作用在点集的置换有 \(n!\) 种,考虑这些点置换对应的边的置换。
不妨将点置换分解为 \(k\) 个轮换,大小分别为 \(b_1\dots b_k\)
对于任意一条边 \((i,j)\) , 记 \(l_i/l_j\) 为 \(i/j\) 所在轮换的长度。
-
\(i,j\) 在同一轮换
轮换数量为 \(\lfloor \frac{l_i}{2} \rfloor\)
-
\(i,j\) 在不同轮换
轮换长度为 \(\operatorname{lcm}(l_i,l_j)\)
轮换数量为 \(\gcd(l_i,l_j)\)
所以得到边的轮换数:
对于相同的 \(b\) ,不动点的数量总是一定的。
\(b\) 的数量为 \(n\) 的整数拆分数,可以直接枚举,只需计算对应 \(b\) 的置换数即可
通过多重集的排列划分方案得到每一个轮换的元素,方案为 \(\displaystyle \frac{n!}{\prod b_i!}\)
通过钦定每个轮换第一个元素保证分解唯一,方案为 \((b_i-1)!\)
答案即为: