置换群、Burnside引理与Pólya计数法

upd on 2024/10/25:本质上就是陪集分解

问题的引入

​ 一个 2×2 的棋盘,给每一个格子黑白染色,如果两种染色方案能通过旋转完全重叠的话,那么这两种方案算一种,那么求总共有几种染色的方法?

sol#1 暴力枚举

​ 这个就没什么好说的了,反正总共四个格子,每个格子两种颜色,那么总共就有 24=16 种染色方法,先列出来再去重。

正解

使用Burnside引理来计算。

计数公式:

N(C,G)=1|G|fG|C(f)|

其中:

N(C,G) 表示对于染色方案集合 C 以及作用在其上面的置换 G 而言,本质不同的等价类的个数

C 表示染色方案集合

G 表示置换群

C(f) 表示在置换 f 下的稳定核,即所有染色方案 xC 满足 fc=c

意义

​ 就像诸多反演、容斥公式一样,一个量直接计算的难度巨大,那么就求出一些与其有关的但是相对容易直接计算的信息,再用这些有关的信息来计算需要的量

简单证明

首先引入记号 :

C , G , N(C,G) , C(f)

G(c) 表示在染色 c 下的稳定核,即所有置换 fG 满足 fc=c

根据置换的可合并性与消去律,我们容易知道 G(c) 是一个群

然后考虑到与 c 本质相同的染色方案的形式应满足如下条件

t()=fc

然后想象一下当 f 遍历 G 的时候总共产生了 |G|fc ,但是 t 可能远远没有那么多种,其原因就在于可能出现这样的情况:

虽然fg ,但是 f=xa,g=ya ,而 x,yG(c)

因此纵使置换 fg ,但是 fc=gc

设参 U(c) 表示与 c 本质相同的染色方案,那么感性理解一下,假设我先设置 |U(c)| 个置换 f ,使之与这 |U(c)| 个结果一一对应,然后再分别对于这几个 f 使用稳定核 G(c) ,然后就能生成全部的 G ,由此可以得到等式:

|U(c)|×|G(c)|=|G| => |U(c)|=|G||G(c)|

组合意义:可以把每个染色方案看做一个点,而置换则看做一条边,而 U(c) 则恰好构成一个团

再考虑这样一个计数常用技巧“算两次”:

计算 染色-置换 对 (c,f) 满足 fc=c 的个数:

那么答案等于 cC|G(c)| 或者是 fG|C(f)|

然后就有 cC|G(c)|=fG|C(f)|

根据之前的证明得知 |G(c)|=|G||U(c)|

因此就有 1|G|fG|C(f)|=cC1|U(c)|

然后再仔细考虑一下等式右边,根据刚才的组合意义,每一团点的贡献恰好是 1 ,那么答案就是团的数量,再仔细想一想,这不就是 N(C,G)

因此得到计数公式 :

N(C,G)=1|G|fG|C(f)|

posted @   chx#XCPC  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示