置换群的幂运算总结

最近看了潘振浩的《置换群幂运算的应用与研究》,在这里做一个简单总结,潘大神的世界还是太深了,我只能领悟一二

一般性结论

对于一个置换 T,Tk=e() ,的最小整数解为, T ,所分解的循环的长度的最小公倍数。
特别的,若 T 为一个循环, k T 的长度。

置换群的整数幂运算

结论一:一个长度为 l 的循环 T l k 的倍数,则是 k 个循环的乘积,每个循环分别是循环T中下标i mod k=0,1,2…的元素按顺序的连接。
结论二:一个长度为 l 的循环 T gcd(l,k)=1 ,则是一个循环,与循环T不一定相同。
结论三:一个长度为 l 的循环 T ,是gcd(l,k)个循环的乘积,每个循环分别是循环T中下标i mod gcd(l,k)=0,1,2…的元素的连接。

特别的我们有,
对于一个长度为 l 的循环如果, Tk=T gcd(l,k)=1 ,若用 a[],a[] ,分别表示置换 T,T 则有

a[i]=a[ik%l]

其中 a[],a[] 分别为最小元开始的循环既有 a[0]=min,a[0]=min .

置换群的分数幂运算(开方)

即给定一个置换 T ,求 T,s.t,Tk=T .

单循环的分数幂运算

T 为单循环,我们有如下结论, T 可以开方,当且仅当, gcd(l,k)=1 ,
因为我们由上面的结论,一个长度为 l 的循环 T ,是 gcd(l,k) 个循环的乘积,即若 gcd(l,k)1 ,则他不可能得到一个单循环
按照上面的结论,做变换 a[i]=a[ik%l] ,可以得到置换 T

多循环的分数幂运算

可以把多循环分成几个单循环,对于长度相同相同的循环来说,找一个单循环可以分成 gcd(l,k) 个单循环就行了。

练习题

以下练习题都是我自己做过的好题,对于理解置换群是相当不错的练习。他们的连接和解题报告在我的BLOG中均有给出。以下只给出在我博客中的网址。

poj 3270 Cow Sort(置换群的分解)
poj 1026 chiper(置换幂)
poj 1721 CARDS(置换群的幂运算)
poj 3128 Leonardo’s Notebook(置换群的分数幂运算)
poj 3590 The shuffle Problem(置换群的幂运算)

你可能感兴趣的:(算法理论)