学习burnside、polya小结

前言

我好蔡啊
之前597问我群论是什么,我一脸懵逼。
心中暗自安慰自己——这玩意对现在的我用处不大。
没想到第二天比赛就出了这么一道题。
由于临近中考,中考压力过大,没有细学。
硬着头皮,好歹也算是学会了。

简介

群论是法国数学家伽罗瓦(Galois)的发明。伽罗瓦是一个极具传奇性的人物,年仅21岁就英年早逝于一场近乎自杀的决斗中。他用该理论,具体来说是伽罗瓦群,解决了五次方程问题。在此之前柯西(Augustin-Louis Cauchy),阿贝尔(Niels Henrik Abel)等人也对群论作出了贡献。
——来自百度百科

管他什么自杀的决斗呢,如果想知道为什么,去看看历史说不定知道。
这不是重点。

群论有很多很多的分支,但其中信息学主要利用的是其中的burnside与polya。

群的定义

首先,这个不重要。(其实是我懒得打一些奇奇怪怪的符号)
贴一下百度百科的,了解一下即可
在这里插入图片描述

置换

首先,置换这个玩意儿有点难以理解。
在这里插入图片描述
上面一排表示1被1到n中某个数a1a_1取代,2被1到n中某个数a2a_2代替,……,一直到n。
并且a1,a2,a3,,ana_1,a_2,a_3,……,a_n互不相同。

置换群

其实这个就是一个置换的连接。
它也满足群的4个条件:
在这里插入图片描述
百度百科写的真好。

Burnside引理

Burnside引理是一个结论,用来计算组合数中的等价类计算。是用于Polya的
D(aj)D(a_j)表示在置换aja_j下不变的元素的个数,也可称作不定点。
用L表示本质不同的方案数。

结论就是:
L=1Gj=1sD(aj)L=frac{1}{|G|}sum_{j=1}^sD(a_j)
证明看这里 https://baike.baidu.com/item/burnside引理/1505996?fr=aladdin

我们用一道题目来理解这个玩意:
SGU294 He’s Circles
大意就是给你一个有n颗珠子的项链,上面写着“X”和“E”,问本质不同的环有多少种。
(本质不同的环指循环重构后相同,例如XEX与XXE是同一种情况)

从这个题下手,当N=4时,一共有4种置换:(用s表示)
在这里插入图片描述
我们发现,所有的方案在置换a1a_1下都不变,则D(a1)=16D(a_1)=16
XXXX、EEEE在置换a2a_2下不变,则D(a2)=2D(a_2)=2
XXXX、EEEE、XEXE、EXEX在置换a3a_3下不变,则D(a3)=4D(a_3)=4
XXXX、EEEE在置换a4a_4下不变,则D(a4)=2D(a_4)=2
根据引理计算,可以得到:L=6L=6

这个玩意儿很好用,可是其中的D很不好求,怎么办呢?

Polya定理

如果我们利用爆搜来搞其中的D,可以发现时间复杂度及其的BIG。
接下来就要运用到polya定理了。

首先,我们要明白循环节是什么东东。
a1a2an=(a2a3a1a1a2an)(a1a2……an)=(^{a1a2……an}_{a2a3……a1})
举个例子:
在这里插入图片描述
我们发现,其中(132)就是前面3个数字旋转。(45)这是后面2个数字旋转。
由此可知,每个置换都可以写成若干个互不相交的循环。
如上面(132)与(45)就互不相交。
那么,循环节则表示一个置换中的循环个数。上述的循环节个数为2.

实在无法理解可以看看这个:
https://wenku.baidu.com/view/8ae2981033d4b14e84246829.html

正题:
Polya定理:设G为一个置换群,如上面一题,用m种颜料涂染n个珠子,则方案为:
L=1G(mc(g1)+mc(g2)++mc(gs))L=frac1{|G|}(m^{c(g_1)}+m^{c(g_2)}+……+m^{c(g_s)})
其中:c(gi)c(g_i)表示gig_i置换的循环节数,G=(g1,g2,,gs)G=(g_1,g_2,……,g_s)

继续举个例子:
同上题:
g1g_1为(2,3,4,1)则g1=(4321),c(g1)=1g_1=(4321),c(g_1)=1
g2g_2为(3,4,1,2)则g2=(13)(24),c(g2)=2g_2=(13)(24),c(g_2)=2
g3g_3为(4,1,2,3)则g3=(1234),c(g3)=1g_3=(1234),c(g_3)=1
g4g_4为(1,2,3,4)则g4=(1)(2)(3)(4),c(g4)=4g_4=(1)(2)(3)(4),c(g_4)=4
因为m=2m=2则算出来可得L=6L=6

接下来分析时间复杂度:
通常情况下:
求出一个置换的循环节点数:O(n)O(n)
求出每个置换:O(s)O(s)
结合起来就是:O(sn)O(sn)
非常优秀。

在上面的这道题,我们发现,c(gi)=n/gcd(n,i)c(g_i)=n/gcd(n,i)
感性理解理解。
所以就更加优秀了。

例题

jzoj4800. 【GDOI2017模拟9.24】周末晚会

参考资料

本人版权意识薄
https://blog.csdn.net/liangzhaoyang1/article/details/72639208
https://wenku.baidu.com/view/8ae2981033d4b14e84246829.html
https://blog.csdn.net/gmh77/article/details/90731621
百度百科

原文地址:https://www.cnblogs.com/RainbowCrown/p/11148356.html