博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[学习笔记]置换群
阅读量:6164 次
发布时间:2019-06-21

本文共 1185 字,大约阅读时间需要 3 分钟。

这是群论

置换群是群论的一种:

必须要知道的:

 

理解一下

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

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

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

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

burnside引理的思想就是这样。

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

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

所以,

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

 

polya定理相当于一个辅助。

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

=颜色^环个数

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

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

对于不能随便填的情况,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

 

 

灵活统计

 

hdu 5868 Different Circle Permutation

上一题的弱化版。

 

[HNOI2008]Cards

 

 

好题。比较灵活运用了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(约数个数×约数个数)

大概一个环长这样子:

 

转载于:https://www.cnblogs.com/Miracevin/p/10217849.html

你可能感兴趣的文章
linux下rsync+sersync实现自动备份数据
查看>>
LVS-模式
查看>>
Linux 密码复杂度
查看>>
ArchLinux安装简单安装教程
查看>>
#9 shell脚本的函数运用
查看>>
input文本框不可编辑的方法
查看>>
weblogic-修改控制台登录密码
查看>>
云无边界,阿里云混合云数据同步发布
查看>>
Codeigniter开发技巧:连接多个数据库(可实现DB读写分离)
查看>>
Nginx的rewrite模块疑问排查
查看>>
登录plsql 报错 the account is locked --用户被锁
查看>>
Hive中文件存储格式及大小比较测试
查看>>
读取excel
查看>>
转:mysql show processlist命令 详解
查看>>
如何解决Xshell使用时中文字体是躺倒显示的问题
查看>>
CPU 漏洞补丁对内核性能影响:4.15 比 4.11 快 7-9%
查看>>
学习Oracle分析函数(Analytic Functions)
查看>>
ldap 认证的错误码
查看>>
微信浏览器中页面刷新
查看>>
DNS
查看>>