Problem

起源:

SGU 294 He’s Circle

遗憾的是,被吃了。

Poj有道类似的

Mission

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

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

定义

一个集合G,以及一个二元运算∗。

并且满足:

封闭性

如果a∈G,b∈G,那么a∗b∈G

结合律

如果a∈G,b∈G,c∈G,那么a∗b∗c=a∗(b∗c)

存在单位元

存在c∈G,使得b∗c=c∗b=c

那么c就称为G的单位元。

类似于加法运算中的0,乘法运算中的1。

逆元

对于任意a∈G,都有a−1使得a∗a−1=a−1∗a=c

其中c是单位元。

那么a−1就称为a的逆元。

不一定满足交换律


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

置换

置换相当于一个排列的一一映射。

例如:

(14233241) (13223441) (23423411)

是置换,而

(52332411)

就不是置换。

置换群

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

置换的连接

例子:

(12233441)∗(12233441)=(12233441)∗(23344112)=(13243142)


正片开始

Burnside引理

已知一个n阶置换群a;

求在其作用下有多少种本质不同的染色方案Ans。

结论

Ans=1n∑i=1nD(ai)

其中D(ai)表示在第i个置换的作用下,

有多少个染色方案置换后不变。

Back to the Problem

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


我们考虑构造这样的n阶置换群

每一种旋转都当作是一个置换,那么就有n个置换,就构成个群。

例如,旋转k个元素,对应的置换为:

(1k+12k+23k+3......n−knn−k+11n−k+22......nk)


利用burnside引理

我们可以先枚举出所有的3n染色方案,然后判断有多少种旋转可以使它旋转后不变。

但这显然是时间超限的。

我们需要进一步找出更好的性质。

Pólya计数法

循环

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

(a1a2a2a3a3a4......an−1anana1)

用循环表示旋转

题目中的,假设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+x∗i≡v(mod n)u+x∗i=v+y∗nx∗i+y∗n=v−u

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

由裴蜀定理,

想要令u和v不在同一循环中的话,

v−u就有0..gcd(n,i)−1这gcd(n,i)种取值,

且取值都是连续的。

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

得证。


True Back

有了这个特殊的性质,这道题就躺着做。

由,同一置换中,每个循环都可以染3种颜色,则有

Ans=1n∑i=1n∗3gcd(n,i)

End

【等价的穿越】Burnside引理&Pólya计数法的更多相关文章

  1. 置换群 Burnside引理 Pólya定理(Polya)

    置换群 设\(N\)表示组合方案集合.如用两种颜色染四个格子,则\(N=\{\{0,0,0,0\},\{0,0,0,1\},\{0,0,1,0\},...,\{1,1,1,1\}\}\),\(|N|= ...

  2. Burnside引理&Pólya定理

    Burnside's lemma 引例 题目描述 一个由2*2方格组成的正方形,每个格子上可以涂色或不涂色, 问共有多少种本质不同的涂色方案. (若两种方案可通过旋转互相得到,称作本质相同的方案) 解 ...

  3. BZOJ_[HNOI2008]_Cards_(置换+Burnside引理+乘法逆元+费马小定理+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1004 共n个卡片,染成r,b,g三种颜色,每种颜色的个数有规定.给出一些置换,可以由置换得到的 ...

  4. 数学:Burnside引理与Pólya定理

    这个计数定理在考虑对称的计数中非常有用 先给出这个定理的描述,虽然看不太懂: 在一个置换群G={a1,a2,a3……ak}中,把每个置换都写成不相交循环的乘积. 设C1(ak)是在置换ak的作用下不动 ...

  5. 等价类计数:Burnside引理 & Polya定理

    提示: 本文并非严谨的数学分析,有很多地方是自己瞎口胡的,仅供参考.有错误请不吝指出 :p 1. 群 1.1 群的概念 群 \((S,\circ)\) 是一个元素集合 \(S\) 和一种二元运算 $ ...

  6. @总结 - 12@ burnside引理与pólya定理

    目录 @0 - 参考资料@ @1 - 问题引入@ @2 - burnside引理@ @3 - pólya定理@ @4 - pólya定理的生成函数形式@ @0 - 参考资料@ 博客1 @1 - 问题引 ...

  7. Burnside 引理与 Pólya 定理

    群 群的定义 在数学中,群是由一种集合以及一个二元运算所组成的,符合"群公理"的代数结构. 一个群是一个集合 \(G\) 加上对 \(G\) 的二元运算.二元运算用 \(\cdot ...

  8. 等价类计数(Polya定理/Burnside引理)学习笔记

    参考:刘汝佳<算法竞赛入门经典训练指南> 感觉是非常远古的东西了,几乎从来没有看到过需要用这个的题,还是学一发以防翻车. 置换:排列的一一映射.置换乘法相当于函数复合.满足结合律,不满足交 ...

  9. 【loj6538】烷基计数 加强版 加强版 Burnside引理+多项式牛顿迭代

    别问我为啥突然刷了道OI题,也别问我为啥花括号不换行了... 题目描述 求含 $n$ 个碳原子的本质不同的烷基数目模 $998244353$ 的结果.$1\le n\le 10^5$ . 题解 Bur ...

随机推荐

  1. java基础之二维数组不定义列数

    有一种特殊的二维数组,它的行数确定,但是每行的列数不确定.这样的的数组实现方法:先创建制定行数,列数缺省的二维数组,然后对数组的每一行重新初始化.举例如下: package day5; //第二种定义 ...

  2. 前端之CSS初识

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  3. fstream文件打开模式

    fstream:对于文件的操作很久两年前就开始使用了,但是仅仅为了达到满足自己需求的目的,就是要么是写,要么是读.从来没有对其进行详细的了解.自己也曾经想过花一点时间去总结一下,这个东西到底应该怎么用 ...

  4. SpringData _day01_jpa的入门

    1.orm思想和以及jpa的概述和jpa的基本操作 简单的说:ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的. orm思想    主要目的:操作实体类就相当于操 ...

  5. JS--封装JS跳转页面函数

    //JS跳转页面 function gourl($iAlert,$iPage,$history='',$target="window") { if ($iAlert != &quo ...

  6. webpack4.0打包的时候一些技巧

    4.0的webpack要比之前的版本强大的不是一点点 打包的时候也做了很多优化 然后说一些这段时间发现的有趣的技巧 1. 打包出来的文件很大,不知道是什么原因可以用 webpack-bundle-an ...

  7. (转)AngularJS判断checkbox/复选框是否选中并实时显示

    最近做了一个选择标签的功能,把一些标签展示给用户,用户选择自己喜欢的标签,就类似我们在购物网站看到的那种过滤标签似的: 简单的效果如图所示: 首先看一下html代码: <!DOCTYPE htm ...

  8. 60行JavaScript代码俄罗斯方块

    教你看懂网上流传的60行JavaScript代码俄罗斯方块游戏   早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下( ...

  9. MySQL 报错:Translating SQLException with SQL state '42000', error code '1064', message

    MySQL报错详细日志 2019-09-12 16:42:29 [http-nio-80-exec-25] DEBUG [org.springframework.jdbc.support.SQLErr ...

  10. python在WIN下CMD运行中文乱码及python 2.x python 3.x编码问题

    在CMD中运行python代码时,我们会发现,即使在代码中加入# -*- coding:utf-8 -*- 这段代码,中文仍然会乱码.如下: # -*- coding:utf-8 -*- conten ...