前两天本来是开了单独的一个组合数学的博文,但是发现里面的知识点基本都会了,特地把这个定理拿出来讲解。
感觉最近一直在学习新的算法,过得很充实,但是总是隐隐感觉不太对劲,没有形成自己的思维。后两周的比赛加油啊。
一道题目
有一个2*2的方阵,用黑白两种颜色进行染色,通过旋转重合的方案算是同一种方案,问有多少种不同的方案。
这道题目的答案是6,怎么样解决这个问题呢?
Burnside引理
{g1, g2, g3, g4} = {旋转0°, 逆时针旋转90°,逆时针旋转180°, 逆时针旋转270° };
注释:集合中任意种变化的组合必须包含在集合中,即必须要具有封闭性。
Burnside引理具体要计算每一种变换的不动点的数目,时间复杂度是指数级别的。
因此,就引入了Polya定理(然而并不会证明)
Polya定理
- G是{1,2,…,n}的一个置换群
- 用m种颜色给1~n进行染色,不同染色方案数为
首先对每一个格子进行相应的编号,称之为标准态:
其中,c(g)表示在g这种姿态下的循环节的个数。
Qusetion:Polya能替代Burnside定理吗?
珠子的染色问题
题目
题意
- 给定一个珠子的颜色数目为c, 珠子的个数为s。其中翻转、旋转后与之前的情形有重复的情况的条件下,算一种染色方案。
- 问一共有多少种不同的染色方案
题解
Polya定理的应用:
分两种情况:
旋转:
一个有n种旋转方式:{转动0个珠子, 转动1个珠子, …, 转动i个珠子,…, 转动n-1个珠子}。
其中\(\frac{n}{gcd(n, i)}\)个珠子构成一个循环节,那么一共有gcd(n, i)个循环节。
翻转:
有两种情况:
当n为奇数的时候:
有n条翻转的对称轴,两个珠子为一组,构成\(\frac{n-1}{2}\)个循环节,剩下的一个珠子单独构成一个循环节。
当n为偶数的时候:
当一条对称轴穿过两个珠子的情况:
共有\(\frac{n}{2}\)条对称轴,两个珠子为一组,构成\(\frac{n-2}{2}\)个循环节,剩下在对称轴上面的两个珠子构成两个循环节。一共构成个循环节。
当对称轴不穿过任何的珠子的时候,以对称轴为中心,两个为一组,构成\(\frac{n}{2}\)个循环节。
变换的种类的个数
旋转有n种变换,翻转的时候,不论奇偶,都有n种变换。总共有2n种变换
总的式子
AC代码
|
|
因为这道题目规模比较的小,还可以直接写出这些置换,用Burnside.
未解决的问题
Polya能代替Burnside吗