• [学习笔记]置换群


    这是群论

    置换群是群论的一种:
    必须要知道的:

    置换群和Burnside引理,Polya定理

     

    理解一下

    这里置换就是旋转同构的表示,方案就是“染色方案”

    m种置换,假如所有可能的方案,每种同构的方案都算了m次。(每种置换都有一次),那么直接除以m即可。

    但是有的方案并没有被计算m次。例如旋转同构的11111只计算了1次。

    为了都出现m次,保证能直接除法,就把少算的加上,最后除以m

    burnside引理的思想就是这样。

    更具体地,我们称不动点表示一个置换下置换前后不动的方案。

    显然对于每个置换的不动点,那么这个不动点会在总方案中少出现一次(起码这个置换不会多一次),就要补上1

    所以,

    本质不同的“染色方案”,就是每个置换下不动点的个数除以置换数。

    polya定理相当于一个辅助。

    对于每个置换下的不动点个数提供了计算方法:

    =颜色^环个数

    环就是一个连等式。移动到的位置和自身必须相等。

    当然,这只是对于颜色可以随便填的情况可以直接算。

    对于不能随便填的情况,polya定理也给我们提供了思路:每个环每个环相对独立地考虑。

    例题:

    Let it Bead

    [ACM] POJ 2409 Let it Bead (Polya计数)

    基础题。

    置换只有n种旋转(包括元置换),和翻转。

    对于翻转,奇偶讨论一下环个数即可。

    旋转i次,环个数gcd(n,i),环长都是n/gcd(n,i)

    ax=0 mod y 所以ax=ty=lcm(x,y) 所以a=lcm(x,y)/x=y/gcd(x,y)

    每个环都相等,所以环个数:gcd(n,i)

    统计不动点之和。再除以置换数

    如果都是这样的题就没有意思了

    出题人会在置换的枚举和不动点的计算上设计麻烦。

    1.置换的枚举优化:一些置换本质上是一样的:环的种类个数都一样。对于旋转同构可以枚举gcd,对于n!的完全置换,可以自然数拆分(n不能太大<=80)

    因为本身统计不动点也是和环有关系。环的组合就少了很多

    2.不动点的枚举:一般还是考虑从环入手,环内部的,环之间的有时都要考虑。题目的一些要求会对每个环内颜色的填法,不是非常无脑,就要额外进行特殊处理了。经常用到dp

     

    Magic Bracelet

     poj 2888 Magic Bracelet

    灵活统计

    hdu 5868 Different Circle Permutation

    上一题的弱化版。

    [HNOI2008]Cards

    [HNOI2008]Cards

     

     SGU - 282

    好题。比较灵活运用了burnside引理和polya定理的思想。

    [HNOI2009]图的同构记数

    上题削弱版。

    相当于每个边有两种颜色。有或者没有。

    配赠福利:

    二维旋转同构(旋转一行或者一列,共n×m种置换)

    对于右移i个,下移j个:
    环个数n×m/lcm(n/gcd(i,n),m/gcd(j,m))
    枚举a=n/gcd(i,n)和b=m/gcd(j,m)
    方案数乘上:phi(a)phi(b)
    复杂度:O(约数个数×约数个数)

    大概一个环长这样子:

  • 相关阅读:
    Tempter of the Bone HDU
    hihocoder1015 kmp算法
    hihocoder1174 拓扑排序1
    hihocoder1175 拓扑排序2
    Statues CodeForces
    【Git学习】git遇到fatal: bad config line 1 in file C:/Users/lenovo/.gitconfig
    【Windows学习】如何设置程序默认“以管理员身份运行”
    【Python学习】urlparse urllib urllib2 urllib3 requests
    【Python学习】操作excel样例
    【接口测试学习】web和APP接口抓包
  • 原文地址:https://www.cnblogs.com/Miracevin/p/10217849.html
Copyright © 2020-2023  润新知