Burnside引理与Polya定理

1.置换。
大概学过抽象代数的同学都知道这个概念吧。
置换简单来说就是对元素进行重排列,如下图所示。置换是 [1,n] [1,n] 的一一映射。
置换
再比如,将正方形绕其中心逆时针旋转90度,可以看成是正方形四个顶点的一个置换。关于置换、置换群的具体理论,可以学一下抽象代数。
(1)置换可以分解成若干循环,方法为:连边 1>a1,2>a2,i>ai,n>an ,任取一个元素,顺着有向边走,直到回到出发点,即形成一个环,剩余元素也是这样。
(2)如果一个状态经过置换 f 后跟原来相同,即 S[1]=S[a1],S[2]=S[a2],,S[n]=S[an] 则称该状态为 f 的不动点。
(3)题目中常常出现“本质不同的方案数”,一般是指等价类的数目,题目定义一个等价关系,满足等价关系的元素属于同一等价类。等价关系通常是一个置换集合 F ,如果一个置换能把其中一个方案映射到另一个方案,则二者是等价的。
那么,置换构成的群就是置换群,就是交换排列顺序而已。

2. Burnside 引理:
对于一个置换 f ,若一个染色方案 s 经过置换后不变,称 s f 的不动点。将 f 的不动点数目记为 C(f) ,则可以证明等价类数目为所有 C(f) 的平均值。
百度百科的定义:
G=a1,a2,ag 是目标集 [1,n] 上的置换群。每个置换都写成不相交循环的乘积。 是在置换 ak 的作用下不动点的个数,也就是长度为 1 的循环的个数。通过上述置换的变换操作后可以相等的元素属于同一个等价类。若 G [1,n] 划分成 l 个等价类,则:
这里写图片描述

举个例子:
一正方形分成 4 格, 2 着色,有多少种方案?其中,经过转动相同的图象算同一方案。

对于每种格子我们都有两种选择,所以会有一下 16 种方案: (百度百科)
Burnside引理与Polya定理_第1张图片
但是对于这16种方案可以归一下类:
Θ不动:a1=(1)(2)…(16)
Θ逆时针转90度 :a2=(1)(2)(3 4 5 6)(7 8 9 10) (11 12)(13 14 15 16)
Θ顺时针转90度 :a3=(1)(2)(6 5 4 3)(10 9 8 7)(11 12)(16 15 14 13)
Θ转180度:a4=(1)(2)(3 5)(4 6)(7 9)(8 10)(11)(12) (13 15)(14 16)
(a,b,c) 表示 a,b,c 可以通过旋转得到。
Burnside 引理,共有 (16+2+2+4)4=6 (种方案).
burnside 是一种计数方法,用来计算含有不等价类的数量
burnside 算法的关键是找好“置换群”。
例题:
POJ 2154
PE 281

利用 Burnside 引理要首先列出所有 nm 种可能的染色方案,然后找出在每个置换下保持不变的方案数。显然当 m n 很大的时候,这个方法会非常繁琐。 这时就需要用到 polya 定理。

3. polya 定理
polya 定理实际上是 burnside 引理的具体化,提供了计算不动点的具体方法。
假设一个置换有 k 个循环,易知每个循环对应的所有位置颜色需一致,而任意两个循环之间选什么颜色互不影响。因此,如果有 m 种可选颜色,则该置换对应的不动点个数为 mk 。用其替换 burnside 理中的 C(f) ,即 C(f)=mk 。得到等价类数目为:

|F|i=0mki|F|

其中 |F| 表示置换的数目, ki 表示第 i 个置换包含的循环个数。

Burnside引理与Polya定理_第2张图片
还是这个例子吧。

Θ不动:a1=(1)(2)(3)(4)
Θ旋转90度 :a2=(1 2 3 4)
Θ旋转180度 :a3=(1 3)(2 4)
Θ旋转270度:a4=(1 4 3 2)
比如,“逆时针旋转180度”,这个置换写成循环的乘积就是(1,3)(2,4),即1和3互变,2和4互变,不难发现,1和3的颜色必须相同,2和4的颜色也必须相同,而1-3和2-4的颜色互不相干。
Polya 定理得,共有 (24+21+22+21)4=6 (种方案).
可以看 Burnside 引理和 Polya 定理是一样的, Polya 定理是 Burnside 引理的优化。

例题:
POJ 1286

除此之外还有很多例题的,不详细列出来了。

你可能感兴趣的:(Polya,&,Burnside)