zoukankan      html  css  js  c++  java
  • 【等价的穿越】Burnside引理&Pólya计数法

    Problem

    起源:
    SGU 294 He’s Circle
    遗憾的是,被吃了。
    Poj有道类似的

    Mission

    一个长度为n(1n24)的环由0,1,2组成,求有多少本质不同的环。

    实际上,如果使用高精度,那么n可以到1e6级别
    

    定义

    一个集合G,以及一个二元运算
    并且满足:

    封闭性

    如果aG,bG,那么abG

    结合律

    如果aG,bG,cG,那么abc=a(bc)

    存在单位元

    存在cG,使得bc=cb=c
    那么c就称为G的单位元。
    类似于加法运算中的0,乘法运算中的1。

    逆元

    对于任意aG,都有a1使得aa1=a1a=c
    其中c是单位元。
    那么a1就称为a的逆元。

    不一定满足交换律


    我们称呼包含n个元素的有限群为n阶群。

    置换

    置换相当于一个排列的一一映射。
    例如:
    (14233241) (13223441) (23423411)
    是置换,而
    (52332411)
    就不是置换。

    置换群

    置换组成的集合,运算是置换的连接。

    置换的连接

    例子:
    (12233441)(12233441)=(12233441)(23344112)=(13243142)


    正片开始
    

    Burnside引理

    已知一个n阶置换群a
    求在其作用下有多少种本质不同的染色方案Ans

    结论

    Ans=1ni=1nD(ai)

    其中D(ai)表示在第i个置换的作用下,
    有多少个染色方案置换后不变。

    Back to the Problem

    一个长度为n(1n24)的环由0,1,2组成,求有多少本质不同的环。


    我们考虑构造这样的n阶置换群
    每一种旋转都当作是一个置换,那么就有n个置换,就构成个群。
    例如,旋转k个元素,对应的置换为:

    (1k+12k+23k+3......nknnk+11nk+22......nk)


    利用burnside引理
    我们可以先枚举出所有的3n染色方案,然后判断有多少种旋转可以使它旋转后不变。
    但这显然是时间超限的。
    我们需要进一步找出更好的性质。

    Pólya计数法

    循环

    定义n阶循环是一种置换满足,

    (a1a2a2a3a3a4......an1anana1)

    用循环表示旋转

    题目中的,假设n=4
    那么置换群就有,以下四种置换:

    (11223344)(12233441)(13243142)(14213243)

    用旋转表示置换,通俗地,例如:
    (12233441)(1,2,3,4)(13243142)(1,3)(2,4)

    简单来讲就是,类似于环状的东西。
    我们用C(ai)表示ai存在多少个循环
    (12233441)1(13243142)2

    简单起见,
    我们称循环里编号最小的珠子的编号,为循环的起始位置

    结论

    处于同一循环的珠子的颜色必须是相同的,才能使得置换后不变
    

    显然,证明略;
    这样可以简化burnside引理的对于D(ai)运算。
    但仍然不够,需要更特殊的性质。

    专门针对旋转的Pólya计数法

    旋转i个珠子对应的置换共有gcd(n,i)个循环,且其中每个循环的起始位置都依次相邻
    

    证明:
    设第u个珠子与第v个珠子处于同一个循环之中;
    x,y是未知数。
    则有

    u+xiv(mod n)u+xi=v+ynxi+yn=vu

    裴蜀定理:ax+by=c,那么gcd(a,b)|c,其中a,b,x,y,c都是质数。
    

    由裴蜀定理,
    想要令uv不在同一循环中的话,
    vu就有0..gcd(n,i)1gcd(n,i)种取值,
    且取值都是连续的。

    所以,共有gcd(n,i)个循环的起始位置,且其中每个循环的起始位置都依次相邻。
    得证。


    True Back

    有了这个特殊的性质,这道题就躺着做。
    由,同一置换中,每个循环都可以染3种颜色,则有

    Ans=1ni=1n3gcd(n,i)

    End

    这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

  • 相关阅读:
    PHP chgrp() 函数
    PHP basename() 函数
    PHP user_error() 函数
    PHP trigger_error() 函数
    my.cnf需要改的参数
    WPF 使用 Direct2D1 画图入门
    win10 uwp 如何开始写 uwp 程序
    win10 uwp 如何开始写 uwp 程序
    C# 快速释放内存的大数组
    C# 快速释放内存的大数组
  • 原文地址:https://www.cnblogs.com/hiweibolu/p/6714777.html
Copyright © 2011-2022 走看看