在处理类似下面的问题中,一般的计数方法会出现问题:假如你要用红、蓝两种颜色给一个正四面体的四个顶点着色,试问存在多少种不同的着色方案?

在高中我们常用的方法是模拟涂色过程,分情况讨论,然后基于分步乘法原理。但是在那里没有考虑几何体通过旋转等操作带来的对称性,在本文中,我们就来介绍一种专门处理这类问题的工具——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计数的更多相关文章

  1. 《程序设计中的组合数学》——polya计数

    我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...

  2. hdu 5868:Different Circle Permutation 【Polya计数】

    似乎是比较基础的一道用到polya定理的题,为了这道题扣了半天组合数学和数论. 等价的题意:可以当成是给正n边形的顶点染色,旋转同构,两种颜色,假设是红蓝,相邻顶点不能同时为蓝. 大概思路:在不考虑旋 ...

  3. hdu 5868 Polya计数

    Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 262144/262144 K ...

  4. hdu 2865 Polya计数+(矩阵 or 找规律 求C)

    Birthday Toy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  5. Polya计数

    Let it Bead Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5365   Accepted: 3585 Descr ...

  6. 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) ...

  7. 群论&Polya计数

    群论&Polya计数 其实在我听课的过程中,我发现针对于学习OI中的群并没有什么过多必要向内学习... 群 以后会补的. 就是\(QQ\)群. 置换 置换就是一个... \[ \begin{m ...

  8. 组合数学之Polya计数 TOJ1116 Let it Bead

    1116: Let it Bead  Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Submit: 7 ...

  9. [置换群&Polya计数]【学习笔记】

    昨天看了一下午<组合数学>最后一章然后晚上去看别人的blog发现怎么都不一样,我一定是学了假的polya 其实是一样的,只不过<组合数学>没有太多的牵扯群论.于是又从群论角度学 ...

随机推荐

  1. mvc的过滤器学习-资料查询

    标题:Filtering in ASP.NET MVC 地址:https://docs.microsoft.com/en-us/previous-versions/aspnet/gg416513(v= ...

  2. [51单片机] Keil C51中变量的使用方法详解

    引言    8051内核单片机是一种通用单片机,在国内占有较大的市场份额.在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功.由于51内核单片机的存储结构的特殊性,Keil C51中变量 ...

  3. UTC时间与北京时间

    经常混淆于此,特地研究了一下,记录在此以备忘. 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal ...

  4. TCP系列52—拥塞控制—15、前向重传与RACK重传拥塞控制处理对比

    一.概述 这里主要简单分析一个丢包重传并恢复的场景,通过不同的设置让这个相同的场景分别触发RACK重传和前向重传,通过对比说明以下问题: Forward Retransmit可以产生只有重传标记的数据 ...

  5. 未能加载文件或程序集“Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件

    发布的打包项目在本机测试好使,部署到客户服务器上报错 分析器错误消息: 未能加载文件或程序集“Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Cu ...

  6. 个人作业-week3案例分析

    第一部分 软件调研测评(必应词典移动端) 找到的bug: 在词汇量测试中每个单词给用户思考的时间太短,只有五秒钟.导致很多似曾相识的单词还没来得及想起就已经过了.如果说测的是用户记忆深刻的单词,那些记 ...

  7. 'java' 不是内部或外部命令,也不是可运行的程序的两个解决办法

    第一个原因: 是环境变量path没有配置好,做如下图配置     第二个原因:   如果java环境有一段时间没有启动,再启动的时候提示这个,解决办法是进入path环境配置,如上图中界面,将JAVA_ ...

  8. soap 简单的例子

    首先确保你的soap模块开启 客户端代码 <?php try { $client = new SoapClient(null, array('location' =>"http: ...

  9. vue 笔记1

    created 钩子可以用来在一个实例被创建之后执行代码: new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 co ...

  10. Print Nodes in Top View of Binary Tree

    Top view of a binary tree is the set of nodes visible when the tree is viewed from the top. Given a ...