涉及的概念有群,置换,置换群,循环,循环节数。
首先可以把群理解为可以满足一定条件和运算的集合。
置换:[1,n]到自身的1-1变换:[1,n]—>[1,n],p: i —> ai , (ai != aj, i != j),即a1...an是[1,n]的一个全排列。可以表示为:
循环:循环是用来表示置换的,一个循环(a1a2...am)表示固定的置换形式:
而且有定理:任一置换可表成若干不相交循环的乘积。比如:
一个循环中元素个数为循环的阶,循环节数即一个置换表示为循环后含有循环的个数,即C(Pi) 表示 置换Pi的循环的个数。
比如有2*2的方阵:
2 | 1 |
3 | 4 |
(1234->2341)等于循环(1234)它的循环节数为1
顺时针旋转180度得如下置换:
(1234->3412)等于循环(13)(24)它的循环节数为2
顺时针旋转360度得如下置换:
(1234->1234)等于循环(1)(2)(3)(4)它的循环节数为4
对于具体题目应该有具体求循环节数公式,否则一个置换一个置换的求不现实
比如如下题目: POJ - 2409 - Let it Bead - (Polya定理)
题目让求长为s的项链用c种颜色染色共有多少种方案,通过旋转和翻转后相同的方案视为一种
这里每种旋转和翻转都是一种方案,
1.旋转置换.
我们假设依次顺时针旋转1~n个,每种旋转为一种置换,则旋转i个的置换循环节数=gcd(i,n);
2.翻转置换
当n为偶数时,分两种情况,每种情况有n/2种置换,一种是中心轴在两个对称对象上,则每种置换的循环节数为n/2+1,另一种是对称轴两边分别有n/2个对象,则每种置换的循环节数为n/2;
当n为奇数时,有n个置换对称轴就只能在一个对象上,则循环个数为n/2+1;
最后所有循环节数之和/(2*n)就是答案
这里就是用公式来求,具体求循环节有怎么样的公式等多做些题在来更新。