[群论] 置换群快速整数幂

引言: 这几天遇到了几个有关群论的题

1.牛客第二场多校训练里的J.Just Shuffle
2.ICPC NEAU Programming Contest 2020里的E.随便置换
3. 以及以前遇到的Permutations POJ - 2369
考虑到相同类型的题出现频率比较多,于是花了两天时间才摸索出点眉目。

定义:

群:设G为一个元素的集合,称G内的元素为元,*为针对G这个集合的元素的运算,当满足封闭性、结合律、有单位元、有逆元要求的时候,我们称为群。
在此提一下群的乘积。
假如: a = ( 1 2 3 ⋯ n a 1 a 2 a 3 ⋯ a n ) { a=\begin{pmatrix} 1 & 2 & 3 & \cdots & n \\ a_{1} & a_{2} & a_{3} & \cdots & a_{n} \\ \end{pmatrix} } a=(1a12a23a3nan) b = ( a 1 a 2 a 3 ⋯ a n b 1 b 2 b 3 ⋯ b n ) { b=\begin{pmatrix} a_{1} & a_{2} & a_{3} & \cdots & a_{n} \\ b_{1} & b_{2} & b_{3} & \cdots & b_{n} \\ \end{pmatrix}} b=(a1b1a2b2a3b3anbn)

a ∗ b = ( 1 2 3 ⋯ n b 1 b 2 b 3 ⋯ b n ) {a*b=\begin{pmatrix} 1 & 2 & 3 & \cdots & n \\ b_{1} & b_{2} & b_{3} & \cdots & b_{n} \\ \end{pmatrix}} ab=(1b12b23b3nbn)

在此易知:c = a * b表示 c i = b a i {c_i=b_{a_i}} ci=bai

封闭性:G内的任何两个元的*运算的结果仍在G内
交换律:a∗(b∗c) = (a∗b)∗c
单位元:任何a∗e=a
逆元: a ∗ a − 1 = e , a − 1 称 为 a 的 逆 元 {a∗a^{-1}=e},a^{-1}称为a的逆元 aa1=ea1a

置换:有限集合到自身的一一映射称为一个置换。
置换群是由置换组成的群。即n元集合Ω到它自身的一个一一映射,称为Ω上的一个n元置换或n阶置换。Ω上的置换 可表为

σ = ( a 1 a 2 a 3 ⋯ a n a i 1 a i 2 a i 3 ⋯ a i n ) { {\sigma}=\begin{pmatrix} a_1 & a_2 & a_3 & \cdots & a_n \\ a_{i_1} & a_{i_2} & a_{i_3} & \cdots & a_{i_n} \\ \end{pmatrix} } σ=(a1ai1a2ai2a3ai3anain)

简记为

σ = ( a k a i k ) { {\sigma}=\begin{pmatrix} a_k \\ a_{i_k}\\ \end{pmatrix} } σ=(akaik)
其中 i 1 , i 2 , i 3 ⋯ i n {i_1,i_2,i_3\cdots i_n} i1,i2,i3in 1 , 2 , 3 ⋯ n {1,2,3\cdots n} 1,2,3n 的一个排列, a i k {a_{i_k}} aik a k {a_k} ak 在置换 σ {\sigma} σ 下的像。由全排列知识可知,这样的置换共有 n! 个。

置换群的一些结论

首先摘录出置换群快速幂学习公认的鼻祖——置换群快速幂运算—潘震皓

05年一个高中生写的,总结到位,逻辑清晰,让我自愧不如。保送清华无可厚非。

这篇论文里有许多证明,在此我不赘述,我只总结一下里面部分重要结论。

1.设 T k = e {T^k = e} Tk=e,(T为一置换,e为单位置换),那么k的最小正整数解是T的拆分的所有循环长度的最小公倍数。
2.一个长度为L的循环T, T k {T^k} Tk是gcd(k,L)个循环的乘积,每个循环分别是循环T中下标 i % gcd(l,k)=0,1,2…的元素连接。
3. 循环长度与指数互质时的整幂运算:设a = T,a’= T k {T^k} Tk,且gcd(L,k)=1
则 a’[ i ]=a[(k+1)*i%L] (下标范围0≤i≤l-1)

对于第三个结论特别提一下推理过程:

以 L=10,k=3 为例子
[群论] 置换群快速整数幂_第1张图片
[群论] 置换群快速整数幂_第2张图片 [群论] 置换群快速整数幂_第3张图片
由上图可知如果已知T,那么 T k {T^k} Tk就是先在T中确定一点,然后不断前进k格得出答案。

你可能感兴趣的:(群论)