置换群

参考的资源:
oiwiki-置换群
置换群快速幂运算+研究与探讨-潘振浩
建议至少先把OIWIKI的基础内容看了

置换的概念

按照oiwiki的说法,置换是一种有限集合到自身的双射。如果不懂,可以粗略的理解为以是一种数组下标到下标的映射。

置换的表示
  1. p 1 , p 2 , p 3 . . . p n p_1,p_2,p_3...p_n p1,p2,p3...pn其中 p i p_i pi为下标,这种表示的意思是把原本第 i i i个位置的数换成原本的第 p i p_i pi位置的数
  2. f = ( a 1 , a 2 , . . . a n a p 1 , a p 2 . . . a p n ) f=\left( \begin{array}{c} {a_1,a_2,...a_n}\\ {a_{p_1},a_{p_2}...a_{p_n}} \end{array} \right) f=(a1,a2,...anap1,ap2...apn)这种表示更为直观,即把上面的集合映射成下面的集合
  3. ( k 1 , k 2 , k 3 . . . k n ) (k_1,k_2,k_3...k_n) (k1,k2,k3...kn)这种表示意味着左边元素所在的位置会被右边所替代,即构成了一个轮换,而一个置换可以由若干个轮换组成(下面解释轮换)。
轮换

举个例子:
置换群_第1张图片
这是一个第二个形式表示出的置换,现在需要找出他的轮换。

先从上方第一个元素,每次上方的元素把箭头指向下,然后下方的元素把箭头指向和自己相同的数字的上方的元素,一直到指回出发点,一个轮换就被找出来了,按照指的顺序依次写出不重复的数字: (1,3,2)那么第一个轮换就被找出来了。

置换群_第2张图片
右边的轮换也同样如此可以找出:(4,7,6,5)
那么这一个置换就被分解完了,由两个轮换 (1,3,2)和(4,7,6,5)组成,而每个轮换的元素数目可以叫做轮换的长度

整数幂运算

对于一个置换 T T T T 2 T^2 T2 T T T对自身置换一次,即 T ∗ T T*T TT,那么 T k T^k Tk也同理(如果不懂就可以去看OIWIKI的置换乘法)
如果一个置换 T T T仅有单个长度为 L L L轮换构成,那么 T L = e T^L = e TL=e(e是一种特殊的置换,即自身到自身的映射(也就是啥也不变))

整数幂运算的结论
  1. 设一个只有一个长度为 L L L轮换构成的置换 T T T,那么 T k T^k Tk一定会分裂成由 g c d ( k , L ) gcd(k,L) gcd(k,L)个轮换构成的置换,且每个轮换长度为 L / g c d ( k , L ) L / gcd(k,L) L/gcd(k,L),每个轮换分别由原本数组的下标模 g c d ( k , L ) gcd(k,L) gcd(k,L)的相同值元素构成。
  2. 特别的当 g c d ( K , L ) = 1 gcd(K,L) = 1 gcd(K,L)=1时,置换不会分裂
    (具体的过程可以看潘振浩的论文)
幂和轮换长度互质时的结论

由于轮换长度并不会变即仍为L,所以 T k T^k Tk仍然在轮换的长度上等于之前的长度。设 T = a , T k = b T = a,T^k = b T=a,Tk=b 则有 b [ i ] = a [ i ∗ k % L ] ( 其 中 i 为 a 中 元 素 的 下 标 ) b[i] = a[i * k \% L](其中i为a中元素的下标) b[i]=a[ik%L](ia)

你可能感兴趣的:(置换群)