2025.11.17 闲话:Pólya 计数

11.17 闲话:Pólya 计数

不是闲话。

不谈群论。

我不是计数大手子。

Part.1 基础定理

基础概念

现在考虑一个群 \(G\) 作用到一个集合 \(A\) 上。

那么定义 \(x\) 的轨道表示 \(\mathcal{O} = \{y | y = g\cdot x, g \in G\}\)

定义 \(x\) 的稳定子 \(G_x = \{g \in G | x = g\cdot x\}\),也就是使得 \(x\) 不变的所有变换。

性质 1:轨道要么相等,要么不交。

证明考虑如果 \(a = g\cdot b\) 此时 \(a\)\(b\) 的轨道内,那么 \(b = g^{-1} \cdot a\) 此时 \(b\)\(a\) 的轨道内。

我们发现这个轨道数量其实就是一个作用规则下的等价类。

轨道-稳定子定理

对于任意一个 \(a \in A\),有:

\[|\mathcal{O}_a||G_a| = |G| \]

证明考虑拿出来一个 \(b \in \mathcal{O}_a\)\(G_{a\to b}\) 表示从 \(a\) 变化到 \(b\) 的所有作用,那么将 \(G_{a\to b}\) 中的任何一个元素和 \(G_a\) 进行复合,均可以得到 \(G_{a\to b}\) 的所有变换,并且这些变换两两不同,也就是 \(|G_a| = |G_{a\to b}|\)

两两不同原因:如果 \(g_1x = g_2x\) 那么 \(g_1 = g_2\),这说明 \(|G_a| \leq |G_{a\to b}|\)

然后将这个东西换为 \(G_{b\to a}\)\(G_{a\to b}\) 复合,同理得到 \(|G_a| \geq |G_{a\to b}|\)

所以每个 \(b \in \mathcal{O}_a\) 挑出来一个变换都能复合上 \(G_a\) 得到 \(G_{a\to b}\),那么全部加起来就是 \(G\) 了。

Burnside 引理

于是对于一个轨道有:

\[\sum_{b \in \mathcal{O}_a}|G_b| = |G| \]

由此每个轨道内的稳定子数量加起来就是 \(G\) 的大小,那么将所有的稳定子加起来再除以 \(|G|\) 不就是轨道数量了吗?

所以轨道数量为:

\[\frac{1}{|G|}\sum_{x \in A}{G_x} \]

不过这个不是很好用,因为大部分题目都是集合大群比较小,所以将其变化一下。

\[\frac{1}{|G|}\sum_{x \in A}{\sum_{g \in G}[x\cdot g = x]} = \frac{1}{|G|}\sum_{g \in G}{\sum_{x \in A}[x\cdot g = x]} = \frac{1}{|G|}\sum_{g \in G}f(g) \]

其中 \(f(g)\) 表示在 \(g\) 的作用下有多少不变的元素。

Pólya 定理

其实我不知道啥是 Pólya 定理。

这东西其实就是一个特例,Pólya 计数最没用的是 Pólya 定理

假设现在给你一个环,让你统计一些限制下的方案数,此时作用 \(g_i\) 表示将环旋转 \(i\) 下。

那么如何求 \(f(g_i)\) 呢?

发现将环上一个点染成一种颜色后,这个点旋转 \(i\) 下到达的点也要被染成一样的颜色,如果将这个点连向到达的点,通过某些深刻的数论知识直觉发现此时整个环被分为了 \(\gcd(n, i)\) 个大小相同的小环,如果此时没有任何限制并染成 \(m\) 个颜色,则一个小环的方案数是 \(m\)

所以答案是:

\[\sum_{i = 0}^{n - 1}{m^{\gcd(n, i)}} = \sum_{d | n}{m^d \varphi(\frac{n}{d})} \]

这东西感觉更应该现推,因为不同题目的 \(f(g_i)\) 是不同的,而这便是 Pólya 计数的精髓:环上计数。

Part.2 基础题目

其实会个板子题,做一个例题,就已经 Pólya 计数毕业了,剩下的基本上都是各种其他计数技巧了。

其实这个算法可以看成是一个黑盒,就好比 SAM 一样,一些深刻的证明其实没必要,毕竟 Burnside 引理实在太好背了。

P4980 【模板】Pólya 定理

板子题,最善良的题目,这么多题目里面唯一一个没有嵌套别的的题目。

套用上面的式子:

\[\sum_{d | n}{n^d \varphi(\frac{n}{d})} \]

直接求就好了。

P5233 [JSOI2012] 爱之项链

初见端倪。

首先这是一道二合一题目,先考虑戒指方案其实是上面的板子题,假设是 \(c\)

那么第二部分项链由于多了一个神秘装饰物导致其失去了循环不同构的限制,变成了毫无装饰的环上计数。

答案变成统计 \(n\) 个点的环相邻颜色不相同的方案数,根据深刻的数列知识(不难推)得到:

\[(c - 1)^n +(-1)^n(c - 1) \]

直接算就行。

P3307 [SDOI2013] 项链

初见端倪 * 2。

首先这还是一道二合一题目,首先一个三角形旋转翻转可以得到所有排列,那么珠子的方案就变成了:

\[\sum_{i = 1}^{a}{\sum_{j = i}^{a}{\sum_{k = j}^{a}{[\gcd(i, j, k) = 1]}}} \]

上一步莫反得到:

\[\sum_{d = 1}^{a}{\sum_{i = 1}^{\lfloor \frac{a}{d} \rfloor}{\sum_{j = i}^{\lfloor \frac{a}{d} \rfloor}{\sum_{k = j}^{\lfloor \frac{a}{d} \rfloor}{\mu(d)}}}} \]

后面三个求和可以变成 \(x_i + \Delta x_j + \Delta x_k + \Delta = \lfloor \frac{a}{d} \rfloor\)

方案数是 \(\binom{\lfloor \frac{a}{d} \rfloor + 2}{3}\)

假设求出来是 \(c\)

那么第二部分和上一题是一样的,不过需要套一个 Burnside 引理。

补充:对于一个 \(g_i\) 产生的 \(\gcd(n, i)\) 个小环其实是构成一个环的。

这题最恶心的一点就是 \(p | n\)

这东西需要将 \(p\) 改为 \(p^2\) 即可,正确性挺好证的。

P1446 [HNOI2008] Cards

比较开拓思维的一道题。

直接给定了一个群,然后求轨道数,还是求 \(f(g_i)\),使用前面的思路将一个点连向变化后的点,容易发现连出了若干个环,这些环内的颜色应该相同,于是直接求出每个环然后暴力背包就好了。

补充:其实题目给的不是一个群,因为单位元需要自己添加一下。

P8633 [蓝桥杯 2015 国 B] 模型染色

比较开拓思维的一道题 * 2。

哇,这个甲烷好可爱哦。

首先题目要求的其实一张图的无标号染色方案数。

考虑对于每个排列的置换判断其是否是原图的一个同构图,然后计算一下这个排列置换的环个数,最后使用 Burnside 引理计算答案即可。

P2561 [AHOI2002] 黑白瓷砖

这不是一道很板子的题,但也不难。

考虑先旋转再翻转等价于三个方向的翻转。

先考虑旋转的方案数,旋转后会产生 \(\lceil{\frac{\frac{n(n+1)}{2}}{3}}\rceil\) 个环。

翻转的贡献是:\(\sum_{i = 1}^{n}{\lceil\frac{i}{2}\rceil}\) 个环。

加上不变的贡献,就对了,记得写高精。

其实可以直接打表的。

abc428_g Necklace

这题重点是其他东西,如果啥也不会可以看看这个 luogu, [cnblogs]。(ajdkfjjflsjl)

P4916 [MtOI2018] 魔力环

这题的重点是环上计数,如果你是组合数学大手子可以看看这个 luogu, cnblogs

P4128 [SHOI2006] 有色图

首先考虑暴力枚举 \(n!\) 种排列。

假设现在有 \(k\) 个环,每个环的大小是 \(siz_i\)

那么先考虑两个环之间的连边,现在钦定一个起始位置为 \(st_i, st_j\),那么此时 \(((st_i + x) \bmod siz_i, (st_j + x) \bmod siz_j)\) 都能被到达(从 \(0\) 标号),发现是一个形如裴蜀定理的形式,这条边会导致 \(\frac{siz_isiz_j}{\gcd(siz_i, siz_j)}\) 条边变为一样的颜色,于是只有 \(\gcd(siz_i, siz_j)\) 条边能自由染色。

再考虑单个环之间的连边,由于每次移动会遍历所有点,所以只需要考虑一个点的连边情况,容易发现可以连出 \(\left\lceil\frac{siz_i - 1}{2}\right\rceil\) 也就是 \(\left\lfloor\frac{siz_i}{2}\right\rfloor\) 条能自由染色边。

以上过程为严谨一些的证明,大部分可靠猜测。

于是对于这个排列有这么多方案:

\[\left(\prod_{i = 1}^{k}{\prod_{j = i + 1}^{k}}{m^{\gcd(siz_i, siz_j)}}\right) \times \prod_{i = 1}^{k}{m^{\left\lfloor\frac{siz_i}{2}\right\rfloor}} \]

不过这个复杂度太劣了,考虑剪枝,由于一个排列的答案只与所有的 \(siz\) 有关,于是容易想到使 \(siz\) 单调不降(这样就是分拆数复杂度),打个表发现挺小的,可以通过。

最后一个问题就是如何统计有多少排列的 \(siz\) 是上面枚举的单调序列。

考虑枚举每个环放哪些元素假设 \(s_i = \sum_{j = 1}^{i}{siz_i}\)

这部分贡献是:

\[\prod_{i = 1}^{k}{\binom{n - s_{i - 1}}{siz_i}} \]

然后每个环内还可以更改顺序这部分是:

\[\prod_{i = 1}^{k}{(siz_i - 1)!} \]

不过如果多个 \(siz_i\) 重复,那么会算重,因为交换这两个环的所有元素是本质相同的,但是现在是将其算成不同的了,设 \(tot_i = \sum_{j = 1}^{k}{[siz_j = i]}\)

那么这部分贡献是:

\[\frac{1}{\prod_{i = 1}^{n}{tot_i!}} \]

总贡献为:

\[\frac{\left(\prod_{i = 1}^{k}{\prod_{j = i + 1}^{k}}{m^{\gcd(siz_i, siz_j)}}\right)\left(\prod_{i = 1}^{k}{m^{\left\lfloor\frac{siz_i}{2}\right\rfloor}}\right)\left(\prod_{i = 1}^{k}{\binom{n - s_{i - 1}}{siz_i}}\right)\left(\prod_{i = 1}^{k}{(siz_i - 1)!}\right)}{\prod_{i = 1}^{n}{tot_i!}} \]

直接计算就好了。

P7454 [THUSC 2017] 如果奇迹有颜色

神人题目,先不写了,找个时间再写题解。

posted @ 2025-11-17 19:29  QEDQEDQED  阅读(29)  评论(5)    收藏  举报