组合数学及其应用——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 其实是一样的,只不过<组合数学>没有太多的牵扯群论.于是又从群论角度学 ...
随机推荐
- OSG学习:裁剪变换(2)
接着上一篇博客说. 还有一种裁剪的方法:osg::Scissor类. 这个类封装了OpenGL中的glScissor()函数. 该类主要用于设置一个视口裁剪平面举行.设置裁剪平面举行的函数如下: vo ...
- teamcity和jmeter结合进行接口自动化测试
(1)从teamcity官网下载jmeter插件:https://teamcity.jetbrains.com/repository/download/TeamCityPluginsByJetBrai ...
- 一次DHCP故障排错
关于DHCP授权,我一直遇到这样一个问题:服务器明明已经在授权列表中了,但是服务就是起不来,看日志会告诉你服务器未授权或者局域网内已有DHCP服务器,但是实际上却并不是这样.现在终于知道原因了,老旧D ...
- QtCreator源码分析—2.启动主程序(4篇)
QtCreator采用插件体系结构.主程序启动插件管理器(PluginManager),再通过插件管理器加载其插件,QtCreator的所有功能均使用插件实现. 我们先来分析主程序对插件管理器的主要操 ...
- 小程序 openid 的原始请求和网络请求
// 登录 wx.login({ success: res => { var code = res.code; //返回code // console.log(code) // 小程序appid ...
- APP 测试 与 WEB 测试的本质区别
单纯从功能测试的层面上来讲的话,APP 测试.web 测试 在流程和功能测试上是没有区别的 根据两者载体不一样,则区别如下: 1.系统结构方面 web项目,b/s架构,基于浏览器的:web测试只要更新 ...
- python3 执行AES加密方法
cmd执行命令:pip install pycryptodome # -*- coding: utf-8 -*- # __author__ = 'Carry' import base64 from C ...
- YARN结构分析与工作流程
YARN Architecture Link: http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/YARN.html ...
- 最小费用流spfa算法模板(pascal)
以前写过,现在的码风与以前有些变化,主要是用数组模拟邻接表存图,以前是用指针存图. 以前的博文:http://www.cnblogs.com/Currier/p/6387732.html 洛谷可评测. ...
- 【uoj#311】[UNR #2]积劳成疾 dp
题目描述 一个长度为 $n$ 的序列,每个数在 $[1,n]$ 之间.给出 $m$ ,求所有序列的 $\prod_{i=1}^{n-m+1}(\text{Max}_{j=i}^{j+m-1}a[j]) ...