zoukankan      html  css  js  c++  java
  • Burnside引理与Polya定理

    感觉这两个东西好鬼畜= = ,考场上出了肯定不会qwq。不过还是学一下吧用来装逼也是极好的

    群的定义

    与下文知识无关。。

    给出一个集合$G = {a, b, c, dots }$和集合上的二元运算"$*$",并满足

    (1).封闭性:$forall a, b in G, exists c in G, a * b = c$

    (2).结合律:$forall a, b, c in G, (a * b) * c = a * (b * c)$

    (3).单位元:$exists e in G, forall a in G, a * e = e * a = a$

    (4). 逆元:$forall a in G, exists b in G, a * b = b * a = e$,记$b = a^{-1}$

    则称集合$G$在运算“$*$”之下是一个群,简称$G$是群

    置换

    $n$个元素, $1, 2, dots n$之间的一个置换$egin{pmatrix} 1 & 2 & ldots n \ a_{1} & a_{2} & ldots a_{n} end{pmatrix}$表示$1$被$1$到$n$中的某个数$a_1$取代,$1$被$1$到$n$中的某个数$a_2$取代,$dots$直到$n$被$1$到$n$中的某个数$a_n$取代,且$a_1, a_2, dots a_n$互不相同

    置换群

    置换群的标准定义涉及到新定义,在OI中你可以简单的认为

    置换群的元素是置换,运算是置换的连接,

    例如$$egin{pmatrix} 1 & 2 & 3 & 4 \ 3 & 1 & 2 & 4 end{pmatrix}egin{pmatrix} 1 & 2 & 3 & 4 \ 4 & 3 & 2 & 1 end{pmatrix}=egin{pmatrix} 1 & 2 & 3 & 4 \ 2 & 4 & 3 & 1 end{pmatrix}$$

    解释一下:

    在第一个置换中,$1$变为$3$,第二个置换中$3$变为$2$,因此$1$先变为$3$再变为$2$

    在第一个置换中,$2$变为$1$,第二个置换中$1$变为$4$,因此$2$先变为$1$再变为$4$

    在第一个置换中,$3$变为$2$,第二个置换中$2$变为$3$,因此$3$先变为$2$再变为$3$

    在第一个置换中,$4$变为$4$,第二个置换中$4$变为$1$,因此$4$先变为$4$再变为$1$

    Burnside引理

    设$G= {a_1,a_2, dots a_g}$是目标集$[1,n]$上的置换群,$D(a_i)$表示在置换$a_i$作用下不动点的个数。$L$表示本质不同的方案数,则

    $$L = frac{1}{|G|} sum_{j = 1}^s D(a_j)$$

    P♂lya定理

    在Burnside引理中,$D(a_i)$,也就是不动点的个数往往不是很好计算。如果采用枚举每个元素的搜索算法,总时间复杂度为$O(nsp)$,其中$n$表示元素个数,$s$表示置换个数,$p$表示格子数

    Polya定理对于特定的题目,提供了一种高效的计算方法

    首先介绍一下循环的概念

    $$left( a_{1}a_{2}ldots a_{n} ight) =egin{pmatrix} a_{1} & a_{2} & ldots & a_{n-1}a_{n} \ a_{2} & a_{3} & ldots & a_{n}a_{1} end{pmatrix}$$

    称为$n$阶循环。每个置换都可以写成若干不相交的循环的乘积,两个循环$(a_1, a_2, dots a_n)$和$(b_1b_2 dots b_n)$互不相交是指$a_i ot =b_j,i, j = 1,2, dots n$

    例如

    $$egin{pmatrix} 1 & 2 & 3 & 4 & 5 \ 3 & 5 & 1 & 4 & 2 end{pmatrix}=left( 13 ight) left( 25 ight) left( 4 ight)$$

    解释一下,$1$先变成$3$,$3$再变成$1$,这样无限递归下去$(1,3)$便构成了一个循环

    同理,$(2,5)$也会构成一个循环。

    $4$只能变成自己,因此自己构成为一个循环

    Polya定理:

    设$G$是$p$个对象的一个置换群,用$m$种颜色涂染$p$个对象,则不同染色方案为$$L = frac{1}{|G|} (m^{c(g_1)} + m^{c(g_2)} + dots + m^{c(g_s)})$$

    其中$G = {g_1, g_2, dots g_s }$,$c(g_i)$为置换$g_i$的循环节数$(i = 1, 2, dots s)$

    Polya定理没有枚举元素,因此它的复杂度为$O(sp)$

    但是它也有一定的限制条件,比如说某种颜色的不能选

    这时候我们就需要利用一个高端操作(例如dp),来推广Polya定理

  • 相关阅读:
    jmeter录制
    Jmeter之逻辑控制器
    Jmeter关联
    Jmeter之HTTP请求默认值
    shell一文入门通
    Linux系统编程——基础命令总结
    前端专业方向的尽头
    锤子,技术与交互体验细节
    学习汇总 2019-12-2
    不容错过的 Babel7 知识
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/9296332.html
Copyright © 2011-2022 走看看