本文参考自:https://blog.csdn.net/lyc1635566ty/article/details/52545355
首先由一个 2 * 2的矩阵里染色问题引出:
在一个 2 * 2的矩阵中染色,问有多少种染色方法,旋转后相同的算一种。
显然穷举的话,有以上种,但是不难发现,(2,3,4,5)是同一种,(6,7)是同一种,(8,9,10,11)是一种,(12,13,14,15),1,16分别是一种。
当颜色少、格子少的时候,很容易枚举,但是当问题规模大的时候,枚举起来就比较麻烦。
所以我们要用到Burnside定理和Polay计数。
Burnside定理
先简单介绍几个概念:
- 置换群G,即所有的置换。以上面为例,一共有四种置换——旋转0°(g1),旋转90°(g2),旋转180°(g3),旋转270°(G4)。所以 |G| = 4;
- Zk表示以上面为例,对于每个元素,当 k 满足 1 <= k <= 16,G中使得 k 保持不变的置换全体。
eg. Z1 = {g1,g2,g3,g4}
Z2 = {g1} - Ek表示以上面为例,对于四种置换下依次得到G下的转换的编号。
eg.E1 = {1},E2 = {2,3,4,5}
每一个Ei其实就是一个等价类。
根据上面的定义很容易得到一个公式:
|Ek| * |Zk| = |G|
PS:|Ek|是第k个元素,在|G|重置换下形成的种数。
|Zk|表示 k 在|G|种置换下保持不变的个数。
|G|表示置换种数 - D(gi)表示在第i种置换下,没有发生变换的元素个数,以上面为例:
D(g1) = 16,D(g2) = 2,D(g3) = 4,D(g4) = 2。
在第一种置换(转0°)下,上面的16个元素(图)都不发生变化。
在第二种置换(转90°)下,上木安只有1和16元素不变
……
显然有个公式
∑ j = 1 16 ∣ Z i ∣ \sum_{j=1}^{16}|Z_i| ∑j=116∣Zi∣ = ∑ i = 1 4 ∣ D g i ∣ \sum_{i=1}^{4}|D_{g_{i}} | ∑i=14∣Dgi∣
推导一下:
n = ∑ i = 1 L ∣ E i ∣ \sum_{i=1}^{L}|E_i| ∑i=1L∣Ei∣ ps.L个等价类
∑ j = 1 n ∣ Z j ∣ \sum_{j=1}^{n}|Z_j| ∑j=1n∣Zj∣ = ∑ i = 1 L ∑ j ∈ E ∣ Z i ∣ \sum_{i=1}^{L}\sum_{j∈E}|Z_i| ∑i=1L∑j∈E∣Zi∣ = ∑ i = 1 L ∣ E i ∣ ∗ ∣ Z i ∣ \sum_{i=1}^{L}|E_i|*|Z_i| ∑i=1L∣Ei∣∗∣Zi∣ = L*|G|
又因为 ∑ j = 1 16 ∣ Z i ∣ \sum_{j=1}^{16}|Z_i| ∑j=116∣Zi∣ = ∑ i = 1 4 ∣ D g i ∣ \sum_{i=1}^{4}|D_{g_{i}} | ∑i=14∣Dgi∣
所以推出了我们著名的Burnside定理:
这就是著名的Bunrside定理。
第一步,求出所有置换。
第二步,求出所有置换下,不变的元素的个位数。以最开始的例子,L = (16+2+4+2)/4 = 6。
很容易发现后半部分是比较难求的,所以我们接下俩介绍Polay计数法.
Polay定理
首先介绍概念——循环节。
置换(1,2,3,4,5)——> (3,5,1,4,2)
它的循环节是(13)(25)(4),所以循环节长度是3,两个循环节是不相交的。
记上面问题按逆时针将四个格子放上1,2,3,4;
然后 G = {g1,g2,g3,g4},|G| = 4,gi的循环节个数记作c,则有下述情况
g1 旋转0°:g1 = (1)(2)(3)(4) c(g1) = 4
g2旋转90°:g2 = (4321) c(g2) = 1
g3 旋转180度:g3=(13)(24) c(g3)=2
g4 旋转270度:g4=(1234) c(g4)=1
我们发现,gi的同一个置换节中的元素用同一种颜色(现在可以用m种颜色,最初的样例是m=2)则染色得到的方案数mc[i] 就是在上面gi 置换下不变的元素个数:
最后得到著名的ploay公式。
至于如何使用这个定理,我们只需要找到每个置换的循环节即可。