Burnside引理和polay计数学习小记
在组合数学中有这样一类问题,比如用红蓝两种颜色对2*2的格子染色,旋转后相同的算作一种。有多少种不同的染色方案?我们列举出,那么一共有16种。但是我们发现,3,4,5,6是同一种,7,8,9,10是用一种,11,12是同一种,13,14,15,16是同一种,也就是只有6种本质上不同的染色。小规模我们可以列举所有方案然后再选择,大规模的时候是很难列举所有方案的。下面,我们说明用Burnside引理和polay计数来解决这类问题。
一、置换群G:即指所有的置换。上面的例子中置换只有4种,即旋转0、90、180和270度。其中G的大小记为|G|=4。
二、(1)对于每个元素K,这里的K满足1<=k<=16,G中使得K保持不变的置换组成的全体,称为。比如四种置换都可以使得1保持不变,而只有第一种和第三种置换使得11保持不变,所以我们有(G中的元素用g来表示):
(2)对于每个元素K,在四种置换的作用下依次得到的元素称作K在G下的轨迹,表示为,代表一个等价类。比如1在四种置换下都得到1,3在四种置换下依次得到3,4,5,6。所以我们有:
我们发现在同一个等价类中的元素的等价类都是一样的,比如3,4,5,6的等价类都是跟3一样的。在这里我们给出一个公式,自己计算下显然成立:
四、接下来我们计算每个元素在各个置换下不变的次数总和。如下图所示。
由上图可得到(注意上图是用a来表示置换的,我们都是用的g),比如1在第一种置换下没有变,那么,且在第一种置换下16种都没有变,第二种置换下只有1、2没有变,第三种置换下只有1,2,11,12没有变,第四种置换下只有1、2没有变,那么有:
其实我们有下面的式子成立:
下面,我们用n来表示总的元素个数,上面n=16,我们用|G|来表示置换个数,上面|G|=4。我们设有L个等价类(我们在上面说了,比如3,4,5,6的等价类都是一样的,上面其实只有5个等价类,{1},{2},{3,4,5,6},{11,12},{13,14,15,16}),我们有:
所以,
这个就是著名的Burnside引理。注意这里的L其实就是我们要求的不同的染色方案的数目。因为L代表的是不同的等价类,同一个等价类就好比是一种染色。我们得到L=(16+2+4+2)/4=6,跟一开始我们得到的答案是一样的。使用这个引理计算时,第一步求出所有的置换,第二步计算每种置换下的不变元素的个数。但是,我们发现,有时候第二步的这个计算是不那么容易的。下面我们说polay定理。
五、我们首先说明循环节是个啥。
比如对于一个n=5,在某一种置换下(1,2,3,4,5)变成了(3,5,1,4,2),我们将其记为(13)(25)(4),即该置换的循环节为3。也就是两个置换节之间是不相交的。对于上面的那个问题,我们对四个方格标号1,2,3,4。
构造置换:
我们发现,的同一个置换节中的元素用同一种颜色(我们现在假设用m种颜色,刚才m=2)染色得到的方案数
就是在上面在
置换下不变的元素数:
由此我们得到:
这就是举世闻名的polay定理。用这个定理计算,我们只需要找到每个置换的循环节即可。
BEB(E[@S%7D5W3DPU3S.jpg)
Burnside引理和polay计数学习小记的更多相关文章
- Burnside引理和polay计数 poj2409 Let it Bead
题目描述 "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you ...
- Burnside引理和Polya定理之间的联系
最近,研究了两天的Burnside引理和Polya定理之间的联系,百思不得其解,然后直到遇到下面的问题: 对颜色限制的染色 例:对正五边形的三个顶点着红色,对其余的两个顶点着蓝色,问有多少种非等价的着 ...
- Burnside引理和Polya定理
转载自:https://blog.csdn.net/whereisherofrom/article/details/79631703 Burnside引理 笔者第一次看到Burnside引理那个公式的 ...
- Burnside引理与polay定理
#Burnside引理与polay定理 引入概念 1.置换 简单来说就是最元素进行重排列 是所有元素的异议映射,即\([1,n]\)映射到\([1,n]\) \[ \begin{pmatrix} 1& ...
- mongodb入门学习小记
Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...
- javascript学习小记(一)
大四了,课少了许多,突然之间就不知道学什么啦.整天在宿舍混着日子,很想学习就是感觉没有一点头绪,昨天看了电影激战.这种纠结的情绪让我都有点喘不上气啦!一点要找点事情干了,所以决定找个东西开始学习.那就 ...
- js 正则学习小记之匹配字符串
原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...
- js 正则学习小记之左最长规则
原文:js 正则学习小记之左最长规则 昨天我在判断正则引擎用到的方法是用 /nfa|nfa not/ 去匹配 "nfa not",得到的结果是 'nfa'.其实我们的本意是想得到整 ...
- js 正则学习小记之NFA引擎
原文:js 正则学习小记之NFA引擎 之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee 等大神都把正则玩的出神入化后发现我只是个战五渣. 求抱大腿,求大神调教. 之前大致有个印象,正 ...
随机推荐
- linux 命令小结
chkconfig --list 查询所有服务运行情况 修改文件夹权限: 在Linux中,权限的所有者分为用户权限,组权限和其他权限,分别是用字母u, g, o 代表权限分为:读 r , 写 w , ...
- WebApi参数传递总结
在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明: 1. 请求地址:/?id=123&name=bob 服务端方法: void Ac ...
- C++实现简单的内存池
多进程编程多用在并发服务器的编写上,当收到一个请求时,服务器新建一个进程处理请求,同时继续监听.为了提高响应速度,服务器采用进程池的方法,在初始化阶段创建一个进程池,池中有许多预创建的进程,当请求到达 ...
- SQLServer调试
1.普通调试 直接点击SSMS客户端上的调试按钮即可 2.存储过程调试 2.1 定义存储过程(以Northwind数据库为例) USE [Northwind] GO /****** Object: S ...
- git撤销删除
问题描述: 使用git时本地文件删除了,提交至github,希望撤销修改,找回源文件 问题解决: (1)查看git log,查看日志信息 注: 使用 git log 可以查看提交的日志 ...
- C# mongodb [上]
概述 MongoDB是一个高性能,开源,无模式的文档型数据库,使用C++开发.是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是 ...
- 设计模式之原型模式(prototype)
原理:拷贝自身对象实际上就是调用的拷贝构造函数,注意事项是这里的拷贝是深拷贝,即需要拷贝指针所指的内容 #include <stdio.h> #include <memory> ...
- 不安装Oracle客户端远程连接Orcale数据库
本方法是通过使用ORACLE官方提供的精简版客户端,即绿色免安装的客户端. 下载地址(此处提供的是官方各版本下载地址): Windows 32位系统中使用的客户端下载地址其他系统环境中使用的客户端下载 ...
- 使用JAVA反射初始化数组(转)
在做JSON解析时,遇到了在不知道数组类型的前期下,需要转化为具体类型数组的问题.可以使用JAVA的反射来做. JSONArray jsonArray = (JSONArray) entry.getV ...
- MongoDB 性能优化五个简单步骤
MongoDB 一直是最流行的 NoSQL,而根据 DB-Engines Ranking 最新的排行,时下 MongoDB 已经击败 PostgreSQL 跃居数据库总排行的第四位,仅次于 Oracl ...