polya计数 (转)
转自:http://blog.csdn.net/xiaohuan1991/article/details/6820742
Burnside定理:
首先介绍一下有关置换群的一些知识。
置换:
设X是一个有限集。取X为包含前n个整数的集合{1,2,3...,n},X的每一个置换a1,a2,a3,..,an可视为X到其自身定义的一个一对一的函数。如{1,2.3}
的一个置换可为{2,1,3}。
置换群:
如果Sn中的置换的非空子集G满足如下三条性质,则定义它为X的一个置换的群,简称置换群:
1.(合成元素的封闭性)对G中所有置换f与g,f与g的合成f·g也属于G。
2.(结合律)对G中的置换f,g,k,有(f * g) * k == f * (g * k);
3.(单位元)Sn中的恒等置换E属于G。
4.(逆元的封闭性)对G中的每一个置换f它的逆f'也属于G。
铺垫工作做完,下面正式介绍Burnside定理。
考虑用红蓝两色将一个正方形的4个顶点进行着色正方形可旋转翻转,置换群为G,C是着色集合,问不等价着色数。
由于适当选取f和c,可使得f*c = c,所以定义G(c)为使着色c保持不变的G中的所有置换的集合,定义C(f)为在f作用下使色c保持不变的所有置换的集
合。称G(c)为稳定核。
定理1:
对于每一种着色c,c的稳定核G(c)是一个是置换群,且对G中的任意置换f与g,g*c = f*c当仅当f'·g属于G(c).
证明:
G(c)是置换群证明略。
对X中的第i个元素,f*c(i) = c(k),g*c(k) = c(h)且(f·g) * c(i) = c(h),所以关系g * (f*c) = (g·f) * c ,又
f' * g * c = f' * (g*c) = f'* (f*c) = (f'·f) * c = c;
所以f'·g属于G(c),假设f'·g属于G(c)
f'·g * c = c;
f' * f * c = c;
所以g*c == f*c;
定理1得证。
推论1:
设c为C的一种着色,那么与c等价的着色数等于 |G|/|G(c)|;
证明:
设f是G中的一个置换,根据定理1,满足f*c = g*c的置换g实际就是|f·h,h(-G(c)|中的置换。g的个数就等于h的个数|G(c)|。对于每一个f存在
|G(c)|个置换,其作用在c上跟f有同样效果。总共|G|个置换,所以与c等价的着色数等于|G|/|G(c)|。
推论得证。
Burnside定理:
N(G,C) = SUM(C(f))/|G|.C中不等价的着色数等于使着色通过G中的置换保持不变的着色的平均数。
证明:
思路采取两种不同方法进行计数,然后计数结果相同。所计的数是f*c = c的对偶(f,c)的个数。
计数法一,累加每一个f保持着色不变的着色数即 SUM(C(f))。
计数法二,由推论1|G(c)| = |G|/(与c等价的着色数),所以结果为SUN(|G|/(与c等价的着色数)),又因为
在同一等价类中,两种着色对求和贡献了同样的量,每个等价类总贡献是|G|。即结果可简化为N(G,C)×|G|。
定理得证!
由于在实际应用中,SUM(C(f))的计算经常会比较困难,为解决这一问题著名的polya计数出现了。
Polya计数公式:
Burnside定理之所以能够计数不等价着色数,与它能够计算C(f)有关,而C中的原色不变是f保持的,通过考虑置换的循环结构计算可变得容易简便。
例:
f = (1 2 3 4 5 6 7 8)
6 8 5 4 1 3 2 7
对于{1,2,..8}上的置换,1-6-3-5-1(4-循环),余下整数保持不变,我们记为[1 6 3 5],即f = (1 2 3 4 5 6 7 8)
6 2 5 4 1 3 7 8
据此根据合成运算可将f因子分解成f = [1,6,3,5]·[2,8,7]·[4].推广之对于X上任一置换f都有
f = [i1,i2...ip]·[j1,j2..jp]·[l1,l2...lp]
将此定义为f的循环因子分解。
定理2:
设f为X上的一个置换,假如用k种颜色对X的元素进行着色,令C是X的所有着色集合,置换f的新循环因子分解中循环的个数是#(f),
则f保持c终于颜色不变的个数为|C(f)| = k^#(f).
证:
要满足f*c == c,则循环因子分解后每个循环中个元素的的颜色数必然相同,#(f)个循环,每个循环的颜色都有k中选择,所以总共着色数为k^#(f)。
证毕。
根据定理2,我们可以得到
polya公式(simple版)
N(G,C) = SUM(k^#(f)) / |G|
这样我们只要知道G中个置换的循环因子分解个数,即可求出C中不等价着色数。
为了对更一般的着色集C求出不等价的着色是数,我们对G中的置换引进一个生成函数。
假设f的循环因子分解成e1个1-循环,e2个2-循环,en个n-循环,满足1*e1 + 2*e2 + ... +n*en == n,我们称n元组(e1,e2,e3...en)是f的型
记为type(f) = (e1,e2,..,en),
同时设我们引入一个n个不定元,z1,z2,z3...zn,定义
mon(f) = (z1^w1)(z2^e2) ...(zn^en)
得到生成函数
SUN(mon(f)) = SUM((z1^w1)(z2^e2) ...(zn^en))
合并上是同类项,(z1^w1)(z2^e2) ...(zn^en)的系数等于型为(z1^w1)(z2^e2) ...(zn^en)的G中f的个数。G的循环指数定义
P(G)(z1,z2,...zn) = SUM((z1^w1)(z2^e2) ...(zn^en)) / |G|;
由上定理其实即可得到
定理3:
N(G,C) = P(G)(k,k,...,k)
利用定理3,要求C中不等价着色数,我们只要知道G中各类型的置换的个数即可。但这仍然可能很难应用。我们希望能有某种有效的方法计算更一般的
着色集C。下面我们将用G的循环指数求出当使用的各颜色次数为指定个数时不等价的着色数。
在f循环因子分解中有e1个一阶循环,e2个二阶循环。。。en个n阶循环。为简便起见,假设只有两种颜色,色r,色b,根据定理3可得
P(G)(r+b,r^2+b^2,...r^n+b^n)中(r^p)(b^q)的系数为p个元素着r色,q个元素着b色的不等价着色数。由此我们可推出:
Polya公式(final版!)
X是一个集合元素,G是X的一个置换群,{u1,u2,..,u3}是k种颜色的一个集合,C是X的任意着色集并且G是C上的一个置换群,那么根据各颜色的数目,
C的不等价着色数的生成函数石油循环指数P(G)(z1,z2,..,zn)通过做变量代换
zj = u1^j + u2^j + ... + uk^j (j = 1...n)
而得到的表达式是
P(G)(u1+...uk,u1^2+...+uk^2,...,u1^n+...+uk^n)
上式中(u1^p1)(u2^p2)...(uk^pk)的系数等于X中的p1个元素着颜色u1,.....,pk个元素着颜色uk的C中不等价着色数。

浙公网安备 33010602011771号