组合数学之Pólya计数理论
1 群
群$(G, cdot)$: 闭合, 结合律, 幺元, 逆
1.1 置换群
置换为双射$pi:[n]to [n]$, 置换之间的操作符 $cdot$ 定义为函数的复合, 即$(pi cdot sigma)(i)=pi(sigma(i))$
对称群$S_n$
$S_n$表示$[n]$的所有置换的集合. 容易验证$S_n$和函数复合操作 $cdot$ 构成一个群, 称为$n$元对称群.
$S_n$的子群称为置换群.
循环群$C_n$
定义特殊的置换$sigma$满足$forall i, ~sigma(i)=(i+1)mod n$, $C_n={sigma^t|tge 0}$, $C_n$称为$n$阶循环群, 生成元为$sigma$, 是$n$边正多边形的旋转对称.
Dihedral群$D_n$
定义特殊置换$rho$满足$forall iin [n], ~rho(i)=n-i-1$. 把$rho$加入$C_n$则得到Dihedral群$D_n$. 为正$n$边形翻转和旋转操作的对称群
Cycle decomposition
将置换等价表示为cycle的复合
1.2 群操作
例子: 项链上色
问题: $n$个珠子的项链, 珠子每个是$m$种颜色之一. 形式化的为$x:[n]to[m]$, 即把$m$个颜色分配给$n$个位置. $X={x:[n]to[m]}$为这样的分配的集合.
考虑两种对称操作:
- 旋转: 循环群$C_n$
- 旋转和翻转: dihedral群$D_n$
项链的操作被描述为$X$上的群操作. 对于置换群$G$, 任意$pi in G$和$xin X$, 群操作$picirc x$定义为$(pi circ x)(i)=x(pi(i))$
2 Burnside’s Lemma
2.1 轨道(Orbits)
定义和性质如下:
可以把轨道理解为一个等价类, 同一等价类中的元素可以通过$G$中的操作相互转换.
2.2 invariant set and stabilizer
$G$: 作用于集合$X$上的置换群. $piin G$, $xin X$.
- $pi$的invariant set: $X_pi ={xin X|picirc x=x}$
- $x$的stabilizer: $G_x={piin G|pi circ x=x}$
引理:
证明:
$Gx={x_1,x_2,cdots, x_t}$, $P={pi_1,pi_2,cdots, pi_t}$, 其中$pi_icirc x=x_i, ~ i = 1,2,cdots, t$
构造一个$G$和$Ptimes G_x$的双射:
- 对于任意$piin G$, 对于某个$x_i$有$picirc x=x_i$
- 因为$pi_icirc x=x_i$, 所以$pi_icirc x=picirc x$, 故$(pi_i^{-1}cdot pi)circ x=x$
- 记$sigma=pi_i^{-1}pi$, 则$pi_icdot sigma =pi$, $sigma circ x=x$, 即$sigma in G_x$.
- 因此每个$piin 大专栏 组合数学之Pólya计数理论G$对应一个不同的pair$(pi_i, sigma)in Ptimes G_x$
- 对于每个$pi_iin P$和$sigmain G_x$, 有$pi=pi_icdot sigmain G$
对于$pi_isigma=pi_jtau$, 有$(pi_icdot sigma)circ x=x_i$, $(pi_jcdot tau)circ x=x_j$, 所以$x_i=x_j$, $pi_i=pi_j$, $tau =sigma$
因此是双射, 得证.
2.3 轨道计数
Burnside’s Lemma: 轨道的个数(记做$|X/G|$) 为
证明:
记$A(pi, x)=begin{cases}1 & picirc x=x,\0& ~ otherwise. end{cases}$
$sum_{piin G}|X_pi|=sum_{piin G}sum_{xin X}A(pi, x)=sum_{xin X}sum_{piin G}A(pi, x)=sum_{xin X}|G_x|$.
定义轨道为$X_1,cdots, X_{|X/G|}, 则$
使用上面的引理, 有
3 Pólya’s Theory of Counting
3.1 The cycle index
对于某种上色$x$, 如果$x$在$piin G$下是不变的, 那么在$pi$的每个circle中的所有位置必须有相同颜色. 即如果$pi$被分解为$k$个circle, 那么$|X_pi|=m^k$.
定义一个置换群$G$中的cycle index:
对任意$piin G$, 如果$pi$是$k$个cycle的乘积, 且第$i$个cycle的长度为$l_i$,令
$G$的cycle index为
3.2 Pólya’s enumeration formula
对于任意tuple $v=(n_1,n_2,cdots, n_m)$满足$n_1+n_2+cdots+n_m=n$和$n_ige 0, ~ 1le ile m$, 表示第$i$个颜色的珠子有$n_i$个.
pattern inventory:
$a_v$的多元生成函数
Pólya’s enumeration formula:
非等价的$n$个物体的$m$色上色的pattern inventory为
证明思路如下:
$X^v={x:[n]to[m]|forall iin [m], x^{-1}(i)=n_i}$表示第$i$个颜色出现$n_i$的着色方案集合(所有都算, 对称的也算)
$X_pi^v={xin X^v|picirc x=x}$
先(用Burnside’s lemma)证明
再证明
考虑中间值$(y_1^{l_1}+y_2^{l_1}+cdots,y_m^{l_1})y_1^{l_2}+y_2^{l_2}+cdots,y_m^{l_2})cdots (y_1^{l_m}+y_2^{l_m}+cdots,y_m^{l_m})$, 和等式左右都相等.
合起来即证毕.
组合数学之Pólya计数理论的更多相关文章
- 组合数学(Pólya计数原理):UvaOJ 10601 Cubes
Cubes You are given 12 rods of equal length. Each of them is colored in certain color. Your task is ...
- 【等价的穿越】Burnside引理&Pólya计数法
Problem 起源: SGU 294 He's Circle 遗憾的是,被吃了. Poj有道类似的: Mission 一个长度为n(1≤n≤24)的环由0,1,2组成,求有多少本质不同的环. 实际上 ...
- 《程序设计中的组合数学》——polya计数
我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...
- Pólya计数定理
我日啊..被cls的计数题虐得欲仙欲死...根本不会计数QAQ... 不懂数学啊... 前置技能 群 群是二元组\((G,*)\),满足 \(*:(G,G)\rightarrow G\) \(\exi ...
- 组合数学起步-排列计数[ZJOI2010][BZOJ2111]
<题面> 数据范围:$1 \leq N \leq 10^6, P \leq 10^9 $ 这个题…… 以为是排列,其实是组合 题目中说是从所有排列中找到Magic的,就是 $p_{i/2} ...
- UVa 10294 (Pólya计数) Arif in Dhaka (First Love Part 2)
Burnside定理:若一个着色方案s经过置换f后不变,称s为f的不动点,将置换f的不动点的数目记作C(f).等价类的数目等于所有C(f)的平均值. 一个项链,一个手镯,区别在于一个能翻转一个不能,用 ...
- 组合数学之Polya计数 TOJ1116 Let it Bead
1116: Let it Bead Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 7 ...
- 组合数学--Polya 原理及典型应用
Redfield-Polya (Pólya enumeration theorem,简称PET)定理是组合数学理论中最重要的定理之一.自从 1927 年 Redfield 首次运用 group red ...
- bzoj 1004 Cards 组合计数
这道题考察的是组合计数(用Burnside,当然也可以认为是Polya的变形,毕竟Polya是Burnside推导出来的). 这一类问题的本质是计算置换群(A,P)中不动点个数!(所谓不动点,是一个二 ...
随机推荐
- c++语法(2)
#include<iostream> #include<windows.h> using namespace std; class Parents { public: virt ...
- Python 学习笔记:Python 中单引号(')、双引号(")、三引号(''',""")的使用以及不转义字符串
一.单引号.双引号及三引号: 参考博客:https://www.cnblogs.com/chenhuan001/p/8006017.html 以上四种形式都是 Python 表示字符串的方式,具体的效 ...
- mongo客户端升级导致pymongo中使用聚合函数时出现异常
一.异常信息 The 'cursor' option is required, except for aggregate with the explain argument 二.解决办法 #部分源代码 ...
- winEdt 使用
晚上摘抄的方法: 1.点选Options -> Options Interface 2.右边会跳出一个介面,点选Advance Configuration... -> Event Hand ...
- 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第八天】(solr服务器搭建、搜索功能实现)
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...
- android searchview 简单使用
设置样式 drawable bg_search/xml android:background="@drawable/bg_search" <shape xmlns:andro ...
- myeclipse 编写java代码提示 dead code 原因
经常使用MyEclipse或Eclipse编辑器编写java代码的程序员,可能经常遇到一个黄线警告提示:dead code:一般程序员遇到这些问题都会置之不理,反正也不影响程序的编译执行.对,这不是b ...
- [WC2015]未来程序(提交答案)
sub1:ans=a*b%c,龟速乘即可. #include <stdio.h> #include <stdlib.h> unsigned long long a, b, c, ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换
Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...
- NOIP 2004 T3 合唱队形(DP、最长上升/下降子序列)
链接:https://ac.nowcoder.com/acm/contest/1082/C来源:牛客网 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队 ...