引言: 这几天遇到了几个有关群论的题
1.牛客第二场多校训练里的J.Just Shuffle
2.ICPC NEAU Programming Contest 2020里的E.随便置换
3. 以及以前遇到的Permutations POJ - 2369
考虑到相同类型的题出现频率比较多,于是花了两天时间才摸索出点眉目。
定义:
群:设G为一个元素的集合,称G内的元素为元,*为针对G这个集合的元素的运算,当<G,∗>满足封闭性、结合律、有单位元、有逆元要求的时候,我们称<G,∗>为群。
在此提一下群的乘积。
假如:
a=(1a12a23a3⋯⋯nan)
b=(a1b1a2b2a3b3⋯⋯anbn)
a∗b=(1b12b23b3⋯⋯nbn)
在此易知:c = a * b表示
ci=bai
封闭性:G内的任何两个元的*运算的结果仍在G内
交换律:a∗(b∗c) = (a∗b)∗c
单位元:任何a∗e=a
逆元:
a∗a−1=e,a−1称为a的逆元
置换:有限集合到自身的一一映射称为一个置换。
置换群是由置换组成的群。即n元集合Ω到它自身的一个一一映射,称为Ω上的一个n元置换或n阶置换。Ω上的置换 可表为
σ=(a1ai1a2ai2a3ai3⋯⋯anain)
简记为
σ=(akaik)
其中
i1,i2,i3⋯in 是
1,2,3⋯n 的一个排列,
aik 是
ak 在置换
σ 下的像。由全排列知识可知,这样的置换共有 n! 个。
置换群的一些结论
首先摘录出置换群快速幂学习公认的鼻祖——置换群快速幂运算—潘震皓
05年一个高中生写的,总结到位,逻辑清晰,让我自愧不如。保送清华无可厚非。
这篇论文里有许多证明,在此我不赘述,我只总结一下里面部分重要结论。
1.设
Tk=e,(T为一置换,e为单位置换),那么k的最小正整数解是T的拆分的所有循环长度的最小公倍数。
2.一个长度为L的循环T,
Tk是gcd(k,L)个循环的乘积,每个循环分别是循环T中下标 i % gcd(l,k)=0,1,2…的元素连接。
3. 循环长度与指数互质时的整幂运算:设a = T,a’=
Tk,且gcd(L,k)=1
则 a’[ i ]=a[(k+1)*i%L] (下标范围0≤i≤l-1)
对于第三个结论特别提一下推理过程:
以 L=10,k=3 为例子
由上图可知如果已知T,那么
Tk就是先在T中确定一点,然后不断前进k格得出答案。