组合数学及其应用——polya计数
在处理类似下面的问题中,一般的计数方法会出现问题:假如你要用红、蓝两种颜色给一个正四面体的四个顶点着色,试问存在多少种不同的着色方案?
在高中我们常用的方法是模拟涂色过程,分情况讨论,然后基于分步乘法原理。但是在那里没有考虑几何体通过旋转等操作带来的对称性,在本文中,我们就来介绍一种专门处理这类问题的工具——Polya计数。
首先我们要做的是引入一些基本的概念。
置换:

关于置换更多的细节我们在《抽象代数基础教程》中继续讨论,这里我们只需简单的了解其概念即可。
关于置换还需要了解的就是它的合乘运算。


置换这个工具可以方便我们符号化图形的对称分析过程,下面给出要给非常简单的例子,以帮助理解置换如何描述几何体的对称。
考察如下的正方形。
(一个正方形,四个顶点为1234)
我们需要去思考,如何利用置换来描述那些运动,使得正方形位置没变(但是对应标号的顶点可能发生了移动)。
容易看到符合要求的运动有两类。
1) 将正方形绕中心旋转(取顺时针即可)0°、90°、180°、270°.
2) 将正方形按照两条对角线和两条对边中点连线,立体得翻转180°。
那么我们可以发现运动前的正方形顶点序号和运动后的,其实就形成了一个置换。

此时我们开始给出染色方案的数学描述。






基于以上的铺垫,我们可以给出Burnside引理,用于给出一个计数非等价着色数的公式。


在给出Burnside定理之后,我们下面结合几个简单的题目,来加强对这个定理的理解。










问题到这里,就得到很大的改观,之前我们需要基于置换群和着色集合,进行遍历考察来计算Burnside定理和式的一般项,而现在我们只需要,分析置换群G中的每个置换,然后结合颜色数,就可以进行计算了。
我们还需要进一步努力,因为从定理4可以看到,我们用k种颜色形成着色集合,是没有显示颜色的出现次数的,而如果规定某种颜色的出现的次数,我们应该如何处理呢?



最后我们给出立方体的非等价的染色分析,在一般带的考察polya的题目中容易考察但是其对称群较为繁冗容易出错,因此最好一次分析之后记住结论。
例子(立方体的顶点与面的着色):
用制定数量的颜色对立方体的顶点和面进行着色,尝试求立方体的对称群和非等价的着色方案数目。
考察立方体的对称操作,它们一共可分为如下的四种类型共24种对称:
(1) 恒等对称1个。
(2) 固定一对对立面进行旋转:
(a)90°
(b)180°
(c)270°
由于共有三对对立面,所以上面各有3个共9个。
(3) 绕一对对边重点连线旋转180°,由于有6对,这里有6个对称。
(4) 绕对顶点进行旋转:
(a)120°
(b)240°
可以看到一个立方体的对称群友24个置换,下面我们只需要考察每个置换f的type(f),以期得到立方体的非等价染色的生成函数。


同理我们可以对面对称群进行完全一样的讨论,结果如下:

组合数学及其应用——polya计数的更多相关文章
- 《程序设计中的组合数学》——polya计数
		我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ... 
- hdu 5868:Different Circle Permutation 【Polya计数】
		似乎是比较基础的一道用到polya定理的题,为了这道题扣了半天组合数学和数论. 等价的题意:可以当成是给正n边形的顶点染色,旋转同构,两种颜色,假设是红蓝,相邻顶点不能同时为蓝. 大概思路:在不考虑旋 ... 
- hdu 5868 Polya计数
		Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K ... 
- hdu 2865 Polya计数+(矩阵 or 找规律 求C)
		Birthday Toy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ... 
- Polya计数
		Let it Bead Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5365 Accepted: 3585 Descr ... 
- HDU 4633 Who's Aunt Zhang (2013多校4  1002  polya计数)
		Who's Aunt Zhang Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ... 
- 群论&Polya计数
		群论&Polya计数 其实在我听课的过程中,我发现针对于学习OI中的群并没有什么过多必要向内学习... 群 以后会补的. 就是\(QQ\)群. 置换 置换就是一个... \[ \begin{m ... 
- 组合数学之Polya计数 TOJ1116 Let it Bead
		1116: Let it Bead Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 7 ... 
- [置换群&Polya计数]【学习笔记】
		昨天看了一下午<组合数学>最后一章然后晚上去看别人的blog发现怎么都不一样,我一定是学了假的polya 其实是一样的,只不过<组合数学>没有太多的牵扯群论.于是又从群论角度学 ... 
随机推荐
- BeanCreationException报错启动不起来(jar包冲突)
			一月 23, 2015 3:46:13 下午 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache T ... 
- Internet History, Technology and Security (Week⑨)
			Week ⑨ We are now on the second to last week of the class and finishing up our look at Internet Secu ... 
- 第二章 Socket用法详解
			构造Socket Socket构造方法如下: Socket() //Creates an unconnected socket, with the system-default type of Soc ... 
- 软工网络15团队作业8——Beta阶段冲刺合集
			博客链接集合 Beta阶段敏捷冲刺计划博客 Beta阶段冲刺第一天 Beta阶段冲刺第二天 Beta阶段冲刺第三天 Beta阶段冲刺第四天 Beta阶段冲刺第五天 
- 『编程题全队』Alpha 阶段冲刺博客集合
			『编程题全队』Alpha 阶段冲刺博客集合 »Day1 2018年4月19日 博客连接:『编程题全队』Alpha 阶段冲刺博客Day1 »Day2 2018年4月20日 博客连接:『编程题全队』Alp ... 
- Python高级特性:Python迭代、生成器、列表生成式
			迭代 给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历称为迭代(Iteration). 在java和C语言中,迭代是通过循环list的下标来完成的,Pyth ... 
- testdisk修复文件系统
			故障修复步骤: 1. 检查磁盘分区级文件系统确实不在: 2. 云主机内部下载testdisk工具修复 yum install testdisk -y 3. 执行命令testdisk /dev/vdc进 ... 
- 给表格控件DBGrid加上记录序号的列
			DBGrid使用起来还是很方便的,但就是没有显示记录序号的功能,必须自己加,参照老外给的解决方案如下: 方案1: 1- 在DBGrid建一个第一列 (列的名字起“NO”) 2- 在DBGrid事件 D ... 
- linux下tomcat、jenkins环境搭建
			1.安装JDK 我不列出来了,自行百度 java -version 2.安装tomcat (1)将下载的tomcat压缩包 tar -zxvf apache-tomcat-8.5.29.tar.gz ... 
- Spring、MyBatis和SpringMVC整合的jar包下载
			spring mvc的jar包下载:http://repo.springsource.org/libs-release-local/org/springframework/spring/我下载的5.0 ... 
