置换群快速幂运算+研究与探讨
置换群论文

摘要:置换群的性质分析与应用是近世代数这门课程里的很重要的一个知识点!利用置换群的相关性质可以使得一些繁琐复杂的问题变得简单容易,对解题有很大的帮助。
本文就其置换群的性质和应用进行一个描述!应用主要是谈论置换群在求解正多边形的对称变换群、正多面体的对称变换群,多项式的对称变换群中的应用!关键词:群; 置换; 置换群; 对称变换群Abstract:Permutation group is the nature of the analysis and application of modern algebra in this course is very important to a knowledge point! Use of the relevant permutation group can make the cumbersome nature of the complex problems become simple and easy, very helpful for problem-solving. This permutation group of its nature and application of a description! Application are mainly talking about regular polygon Permutation in solving the symmetry transformation group, regular polyhedron symmetry transformation group, the polynomial transformation group of symmetry!Key words:group; permutation; permutation group; symmetric transformation group目录1.前言 (1)2.主要内容 (1)2.1基本概念 (1)2.2置换群的性质 (2)2.2.1置换的性质 (2)2.2.2置换的分解 (2)2.2.3置换的奇偶性 (4)2.3置换在求解对称变换群中的应用 (5)2.3.1二维平面内求解正多边形的对称变换群 (6)2.3.2 在求解正多面体的对称变换群中的应用 (6)2.3.3 在求解多项式的对称变换群中的应用 (8)3. 结束语 (9)4. 参考文献 (9)5. 致谢 (9)置换群的性质分析及其应用1、前言置换群是群论中很重要的一类群,群论最早就是从研究置换群开始的,它还是一类重要的非交换群,每个有限的抽象群都与一个置换群同构,且现实生活中的许多对称现象总是以某种方式与置换及置换群有着密切的联系!所以研究置换群的性质及应用就显得格外的重要了!因此,我就置换群的一些性质进行了一个总结,并对置换群在对称变换群中的应用进行一个概括总结!2、主要内容2.1 基本概念:2.1.1 群:设G是一个非空集合,若在G上定义一个二元运算·满足S1:结合律:对任何cba,,∈G有()()cbacba⋅⋅=⋅⋅,则称G是一个半群,记作(G,·)。
《循环群与置换群》课件

在实际应用中,同态和同构的概念可 以用于比较不同置换群之间的相似性 和差异性,以及进行置换群的分类和 结构分析。此外,同态和同构也是研 究其他代数结构的重要工具和方法。
06
应用实例
在密码学中的应用
加密算法
置换群和循环群在加密算法中有着广泛的应用,如凯撒密码、栅栏密码等。这些 算法利用置换群中的置换操作对明文进行加密,保护信息的安全。
编码理论
置换群在编码理论中也有着广泛的应用,如线性码和循环码等。这些编码利用置换群的性质,能够设 计出高效可靠的编码方案。
在几何学中的应用
几何变换
置换群在几何变换中有着重要的应用 ,如矩阵表示和仿射变换等。通过利 用置换群的性质,可以研究几何图形 在不同变换下的性质和关系。
分形几何
循环群在分形几何中也有着一定的应 用,如Mandelbrot集和Julia集等。 这些分形结构通过循环群的迭代和递 归生成,展现出复杂而美丽的几何图 案。
《循环群与置换群》PPT课件
目录
• 群的基本概念 • 置换群 • 循环群与置换群的关系 • 循环群的性质 • 置换群的性质 • 应用实例
01
群的基本概念
群的定义
1
群是由一个集合以及定义在这个集合上的二元运 算所组成的一个代数结构。
2
群中的元素称为群元,通常用小写字母表示,如 $a, b, c, ldots$。
子群的构造
通过选择置换群中的若干个置换作为子群的元素,可以构造出置换群的子群。子群可以由单位元和若干个非单位元的 置换构成,其中非单位元的置换可以两两复合得到。
子群在置换群中的作用
子群在置换群的结构和性质研究中具有重要的作用。通过研究子群的性质和分类,可以进一步了解整个 置换群的性质和结构。
快速幂算法

快速幂取余
所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。
在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。
应用的公式:
d=a b mod n=(…((((a mod n)*a)mod n)*a)mod n…*a)mod n {共b个a}
(a × b) mod c=( (a mod c) × b) mod c.
1.有三根杆子A,B,C。
A杆上有3N个(N>1)穿孔圆盘,共有N个不同的大小,每个尺寸都有三个完全相同的圆盘,盘的尺寸由下到上依次变小。
要求按下列规则将所有圆盘移至C 杆:
1.每次只能移动一个圆盘;
2.大盘不能叠在小盘上面。
变换和置换群

令1=(i1 i2 … im),则 = 1', '与1不相交,'最多只改变余 下的k-m个元素,由归纳假设,' =23…l。
a
11
置换的轮换乘积形式的唯一性
如 果 置 换 可 以 表 示 为 12…t 和 12…l, 令 X={1, 2, …, t}, Y={1, 2, …, l , }, 则X=Y
a
14
对换乘积表示置换的例子
定义{1,2,3,4}上的函数 f 如下: f (1)=2, f (2)=3, f (3)=4, f (4)=1
函数 f 的轮换形式:(1 2 3 4)
函数 f 的对换乘积形式: (1 2) (1 3) (1 4)
a
令: 函数g: g(1)=2, g(2)=1, g(3)=3, g(4)=4 函数h: h(1)=3, h(2)=2, h(3)=1, h(4)=4 函数k: k(1)=4, k(2)=2, k(3)=3, k(4)=1
r =0,即是恒等置换。
若r =k>0, 取一在下改变的元素i1, 按照轮换的定义依次找 出i2, i3 …。
S是有限集,一定可以找到im, 使得i1, i2, …, im均不同,但 im+1{i1, i2, …, im}。
必有im+1=i1。(否则:若im+1=ij, j1, 则(ij-1)=(im)=ij, 与是 一对一的矛盾。)
记法:(i1 i2 … ik ) 例子:用轮换形式表示S3的6个元素: e=(1); =(1 2 3); =(1 3 2);
=(2 3); =(1 3); =(1 2)
a
9
不相交的轮换相乘可以交换
给定Sn中两个轮换: =(i1 i2 … ik ), =(j1 j2 … js ),
置换群2——精选推荐

置换群2接着上⼀节,为了研究置换群的结构,我们来考虑对称群S n和交错群A n的的⽣成元系.定理1 对称群S n可以由(12),(13),⋯,(1n)⽣成,即S n=<(12),(13),⋯,(1n)>.证明⾸先<(12),⋯,(1n)>⊂S n,同时注意到每个置换都可以分解成⼀些对换的乘积,⽽对换(i j),(i≠j)可以被表⽰成(i j)=(1 i)(1 j)(1 i)这说明S n⊂<(12),⋯,(1n)>,从⽽S n=<(12),⋯,(1n)>.定理2 交错群A n可以由全体3−轮换⽣成.证明注意到任意的3−轮换(i j k)=(1 k)(1 j)(1 i),这说明3−轮换必然是偶置换,从⽽乘积也是.另⼀⽅⾯两个对换的乘积σ=(ij)(st)可被⼀些3−轮换表⽰即可.1)若i=s,j=t,那么σ=(1)=(123)(123)(123),结论成⽴;2)若i=s,j≠t,则σ=(i t j),结论也成⽴;3)若i≠j,s≠t,那么σ=(i j)(s t)=(1 i s)(1 i j)(1 s t)注意此处默认i,i,s,t均不为1.这说明偶置换可被表⽰成3−轮换的乘积.所以定理成⽴.即A n可由全体3−轮换⽣成.要注意的是群的⽣成元并不唯⼀,例如我们还有S n=<(12),(23),⋯,(n−1,n)>=<(12),(12⋯n)>以及A n=<(123),(124),⋯,(12n)>,n≥3另⼀个问题,S n中任意的置换σ=(a b⋯c)⋯(αβ⋯γ),我们考虑与之共轭的置换δ=τστ−1,注意到δ(τ(a))=τσ(a)=τ(b)同理δ(τ(b))=τ(c),不难看出δ=τστ−1=(τ(a) τ(b) ⋯τ(c))⋯(τ(α) τ(β) ⋯τ(γ))可以看出σ与δ具有相同的形式,这⾥的形式指的是分解成不相交的轮换的结果中,轮换的长度以及轮换的个数对应相等,某些书中也将这个称为置换的型:例如在S13中的置换(1234)(567)(89)(10,11),那么称他的型为1222314150⋯130,其原理就是置换分解成不相交轮换在不考虑次序情况下是唯⼀的.⼀般的在S n中如果某个置换的型为1r12r2⋯n r n,那么必然有n∑i=1ir i=n借助于型的概念,我们可以说S n中置换σ的共轭置换⼀定与之具有相同的型,那么反之是否成⽴呢?答案是肯定的,我们有定理S n中两个置换σ,δ共轭的充要条件是他们的型相同.证明必要性已然说明,再证充分性,设σ=(a b⋯c)⋯(αβ⋯γ),δ=(a′b′⋯c′)⋯(α′β′⋯γ′),那么取置换τ=a b⋯γa′b′⋯γ′可以验证δ=τστ−1,说明σ,δ是共轭的.按照置换的型可以很容易写出对称群S n中的全部共轭类,以S5为例,我们知道|S5|=5!=120,其全部的共轭类如下: 15型:仅有⼀个,即为(1);1321型:共\binom{5}{2}=10个;1^23^1型:共A_{5}^{3}/3=20个,即在5个元素中选取3个元素的圆排列(轮换对称性);1^14^1型:共A_{5}^{4}/4=30个;1^12^2型:共\binom{5}{1}\binom{4}{2}/2=15个;()2^13^1型:共\binom{5}{2}A_{3}^{3}/3=20个;5^1型:共A_{5}^{5}/5=24个.⼀般的我们有,在对称群S_n中,型为1^{r_1}2^{r_2}\cdots n^{r_n}的置换的个数为\frac{n!}{\prod\limits_{i=1}^{n}r_i!i^{r_i}}(在数字较⼤时⽤词结论计算是⽅便的,但是在数字较⼩时⽤前⾯排列组合的思路更快捷)⽤数学归纳法来证明是可⾏的,我们更希望给出如下的直接求法.记集合A:=表⽰n个元素1,2,\cdots,n的所有重排的集合,⽽集合B:=表⽰型为1^{r_1}2^{r_2}\cdots n^{r_n}的置换的全体.作映射\pi:A\to B,具体⽅式如下:对于重排a_1,a_2,\cdots,a_n,将前r_1个当做r_1个1-轮换,接下来的2r_2个每2个⼀组作为r_2个2-轮换,接下来的3r_3个每3个⼀组作为r_3个3-轮换……这样就构造出了型为1^{r_1}2^{r_2}\cdots n^{r_n}的置换,显然\pi是个满射但是并⾮单射.对于任意的\sigma\in B,那么\pi^{-1}(\sigma)便是n个元素的⼀个重排.我们把\sigma写成按照轮换长度递增的顺序的形式,显然这种表⽰并不唯⼀,因为每个r-轮换(a_1~a_2~\cdots~a_r)有r种不同的表⽰,并且每⼀种表⽰对应的在\pi下的原象均不同.另⼀⽅⾯不相交轮换是可换的,因此在保持长度递增情况下,r_i个i-轮换可以有r_{i}!种表⽰,结合起来可以看出\pi^{-1}(\sigma)共有\prod_{i=1}^{n}r_{i}!i^{r_i}种不同情况.⽽|A|=n!,因此|B|=\frac{n!} {\prod\limits_{i=1}^{n}r_i!i^{r_i}}利⽤置换的型,我们可以确定对称群的正规⼦群,例如我们考虑S_4的共轭类:1^5型:仅1个,即为(1);1^22^1型:\binom{4}{2}=6个,分别是(12),(13),(14),(23),(24),(34);1^13^1型:A_{4}^{3}/3=8个,分别是(123),(124),(132),(134),(142),(143),(213),(234);2^2型:\binom{4}{2}/2=3个,分别是(12)(34),(13)(24),(14)(23);4^1型:仅⼀个,即为(1234).设H是S_4的正规⼦群,根据Lagrange定理|H|只能是1,2,3,4,6,8,12,24,如果H是⾮平凡的,那么|H|只能是2,3,4,6,8,12,注意正规⼦群是⼀些共轭类组成的⼦群:1)显然|H|\neq 2,3,6,8,因为这些元素不可能是完整的若⼲共轭类;2)⽽|H|=4是可能的,此时H中的元素为:(1),(12)(34),(13)(24),显然此时H同构于Kelin四元群\mathbb K_4=\{1,a,b,ab\},其中a^2=b^2=(ab)^2=1;3)同样的|H|=12也是可以的,此时H由⼳元,8个1^13^1型置换以及3个2^2型置换构成,即为全体偶置换,此时H同构于A_4.以上分析说明S_4只有4个正规⼦群\{1\},K_4,A_4,S_4.类似的分析可以得到A_4的正规⼦群只有\{1\},K_4,A_4.更进⼀步的我们还有S_4/K_4\simeq S_3证明我们可以将S_3视作S_4的⼦群,将\sigma\in S_3看成\sigma(4)=4即可.由前⾯的结论K_4\triangleleft S_4,从⽽K_4S_3\leq S_4,注意到K_4\cap S_3=\{1\},那么|K_4S_3|=\frac{|S_3|\cdot|k_4|}{|K_4\cap S_3|}=24=|S_4|这说明S_4=K_4S_3,根据第⼀同构定理S_3/K_4\cap S_3\simeq S_4/K_4,即S_4/K_4\simeq S_3另⼀种证法是直接分析6阶群S_4/K_4的结构,事实上6阶群仅有2个,他们是\mathbb Z_6和S_3\simeq D_3.Loading [MathJax]/extensions/TeX/mathchoice.js。
置换群

d ) (ik a d ) (ik a
binc b)(inc
d) d)
20
前页
前页 后页
前页 目录
前页 返回
1 2 3 4 5 6 例3 将 表为不相交轮 4 3 6 1 5 2
换的乘积.
解 容易看出,以下列的顺序作用与 X 的元素上:
1 4 1, 2 3 6 2, 5 5.
证 首先, 由于置换是一一对应, 所以
(1), (2), , (n)恰好包含了集合X 1,2,
中的 n 个数.又对任意的 (i ) X
n
( (i)) (i) (ki )
1
10
前页
前页 后页
前页 目录
前页 返回
所以 1将 (i )映到 ( ki ), i 1,2,
有 n!个 n 阶置换.
6
前页 前页 后页 前页 目录 前页 返回
例1 写出 S 3的全部元素. 解 按(1.6.1)式, 我们只要在每个置换的第一行 按顺序写上1,2,3, 再在第二行分别写上,1,2,3的全部6 个排列即可. 据此, 我们得到 S 3 的六个元素为
1 2 3 1 2 3 1 2 3 1 2 3 , 1 3 2 , 3 2 1 ,
n, 即
1
(1) (2) (k1 ) (k2 )
( n) ( kn )
11
前页
前页 后页
前页 目录
前页 返回
二、置换群的结构
定义1.6.1 设是一个n 阶置换 .如果存在1到 n 中 r 的个不同的数i1 , i2 ,
ir ,使
(i1 ) i2 , (i2 ) i3 , , (ir 1 ) ir , (ir ) i1
算法合集之《置换群快速幂运算研究与探讨》

THANKS
[ 感谢观看 ]
有广泛的应用,是解决一些复杂问题的关键技术。
理论价值
03
置换群快速幂运算作为数学和计算机科学交叉领域的研究成果,
具有重要的理论价值和实践意义。
置换群快速幂运算的实现方法
数学基础
置换群快速幂运算基于置换群理 论和快速幂算法,需要掌握相关 的数学基础知识。
算法设计
通过合理设计算法,将置换群理 论与快速幂算法相结合,实现高 效的置换群快速幂运算。
编程实现
利用编程语言实现算法,并进行 优化和调试,确保算法的正确性 和高效性。
置换群快速幂运算的应用场景
01
密码学
在公钥密码体制中,置换群快速 幂运算可用于实现高效的加密和 解密操作。
02
03
计算机图形学
量子计算
在几何变换和图像处理中,置换 群快速幂运算可用于实现高效的 矩阵运算和空间变换。
在量子计算中,置换群快速幂运 算可用于实现高效的量子逻辑门 操作和量子算法设计。
算法优缺点分析
优点
快速幂算法具有较高的运算速度,尤其 在处理大数幂运算时表现优异。同时, 该算法实现简单,易于理解和实现。
VS
缺点
快速幂算法需要使用额外的存储空间来存 储中间计算结果,对于空间资源有限的环 境可能不太适用。此外,该算法对于小数 值的运算效率较低,因为其时间复杂度是 指数级别的。
CHAPTER 05
实例演示
实例一:置换群快速幂运算在密码学中的应用
总结词
高效加密算法
详细描述
置换群快速幂运算在密码学中有着广泛的应 用,它能够快速地生成大质数,从而用于构 建高效的加密算法,如RSA算法。通过置换 群快速幂运算,可以大大提高加密和解密的 效率,保障信息安全。
国家集训队论文分类

2007 - 胡伯涛:《最小割模型在信息学竞赛中的应用》
2007 - 王欣上:《浅谈基于分层思想的网络流算法》
2008 - 周冬《两极相通——浅析最大—最小定理在信息学竞赛中的应用》
最短路
2006 - 余远铭:《最短路算法及其应用》
2008 - 吕子鉷《浅谈最短径路问题中的分层思想》
2009 - 刘聪《浅谈数位类统计问题》
动态统计
2004 - 薛矛:《解决动态统计问题的两把利刃》
2007 - 余江伟:《如何解决动态统计问题》
博弈
2002 - 张一飞:《由感性认识到理性认识——透析一类搏弈游戏的解答过程》
2007 - 王晓珂:《解析一类组合游戏》
2009 - 曹钦翔《从“k倍动态减法游戏”出发探究一类组合游戏问题》
国家集训队论文分类
组合数学
计数与统计
2001 - 符文杰:《Pólya原理及其应用》
2003 - 许智磊:《浅谈补集转化思想在统计问题中的应用》
2007 - 周冬:《生成树的计数及其应用》
2008 - 陈瑜希《Pólya计数法的应用》
数位问题
2009 - 高逸涵《数位计数问题解法研究》
置换群
2005 - 潘震皓: - 高正宇:《答案只有一个——浅谈问答式交互问题》
猜数问题
2003 - 张宁:《猜数问题的研究:<聪明的学生>一题的推广》
2006 - 龙凡:《一类猜数问题的研究》
数据结构
数据结构
2005 - 何林:《数据关系的简化》
最小生成树
2004 - 吴景岳:《最小生成树算法及其应用》
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不知大家有没有注意到,如果把循环T的奇数项和偶数项取出来,就是 1 5 4 和 2 3,如果 2 两者并在一起,就是刚才求出的T 了。再试一个:
T 3 = T 2T ⎛1 =⎜ ⎜5 ⎝ ⎛1 =⎜ ⎜5 ⎝ 2 3 4 5 ⎞⎛ 1 ⎟⎜ ⎜ 3 1 2 4⎟ ⎠⎝ 2 2 3 4 5 ⎞⎛ 5 ⎟⎜ ⎜ 3 1 2 4⎟ ⎠⎝ 3 2 3 4 5⎞ ⎟ 5 4 1 3⎟ ⎠ 3 1 2 4⎞ ⎟ 4 2 5 1⎟ ⎠
= (1 5 4 )(2 6 3)
分裂成了 2 份!而且这 2 份恰好是 T 的奇数项和偶数项! (注意可以写成(1 5 4)(3 2 6))
第 1 页 共 11 页
江苏省苏州中学 潘震皓
再来看看 T :
3
T 3 = T 2T ⎛1 =⎜ ⎜5 ⎝ ⎛1 =⎜ ⎜5 ⎝ 2 3 4 5 6 ⎞⎛ 1 ⎟⎜ ⎜ 6 2 1 4 3⎟ ⎠⎝ 3 2 3 4 5 6 ⎞⎛ 5 ⎟⎜ ⎜ 6 2 1 4 3⎟ ⎠⎝ 2 2 3 4 5 6⎞ ⎟ 4 5 6 2 1⎟ ⎠ 6 2 1 4 3⎞ ⎟ 1 4 3 6 5⎟ ⎠
江苏省苏州中学 潘震皓
置换群快速幂运算 研究与探讨
江苏省苏州中学 潘震皓 [关键词] 置换 循环 分裂 合并 [摘要] 群是一个古老的数学分支,近几年来在程序设计中置换群得到了一定的应 用。本文针对置换群的特点提出了线性时间的幂运算算法,并举例说明了优化 后算法的效果。 [正文]
一、引言 置换群是一种优秀的结构,在程序设计中,它的大部分基本操作,时间和空间复杂度都 是线性的,甚至有的还是常数的。所以一个问题如果能够抽象归结为一个置换群模型的话, 往往能够在程序设计中轻松地解决。 但是对于整幂运算来说, 似乎只能通过反复做乘法来获 得 O(k*乘法)或是 O(logk*乘法)的算法;而对于分数幂运算,则找不到较好的方法实现。 二、置换群的整幂运算 2.1 整幂运算的一个转化 在置换群中有一个定理:设 T k = e , (T 为一置换,e 为单位置换(映射函数为 f ( x ) = x 的 置换) ) ,那么 k 的最小正整数解是 T 的拆分的所有循环长度的最小公倍数。 或者有个更一般的结论:设 T k = e , (T 为一循环,e 为单位置换) ,那么 k 的最小正整数解 为 T 的长度。 我们知道,单位置换就是若干个只含单个元素的循环 的并。也就是说,长度为l的循环,l ......... 次的幂,把所有元素都完全分裂了。这是为什么呢? 我们来做一个试验:(下面的置换均以循环的连接表示) 设 n=6,那么 T
k k k
k
⎛1 T2 =⎜ ⎜2 ⎝ ⎛1 =⎜ ⎜2 ⎝ ⎛1 =⎜ ⎜5 ⎝ = (1
5 4 2 3)
2 3 4 5 ⎞⎛ 1 ⎟⎜ ⎜ 5 4 1 3⎟ ⎠⎝ 2 2 3 4 5 ⎞⎛ 2 ⎟⎜ ⎜ 5 4 1 3⎟ ⎠⎝ 5 2 3 4 5⎞ ⎟ 3 1 2 4⎟ ⎠
2 3 4 5⎞ ⎟ 5 4 1 3⎟ ⎠ 5 4 1 3⎞ ⎟ 3 1 2 4⎟ ⎠
第 6 页 共 11 页
江苏省苏州中学 潘震皓
以组成一个长度 n 的置换。 显然,第 i 年祭司的位置,就是第 i-1 年祭司的位置,与第 i 年转盘上数字代表的置换 的连接。现在的问题是求一个最早的年份 y,使得那一年祭司的位置是单位置换。 由于转盘上的置换是以 p 为周期的,所以我们枚举 y mod p=k。那么也就是说:
⎛ 1 2 3 4 5⎞ =⎜ ⎜ 3 4 2 5 1⎟ ⎟ ⎝ ⎠ ( ) = 1 3 2 4 5
同样地,把 mod 3=1, 2, 0 的项取出来:1 3、2 4、5,连接在一起,就是所求得的新循环 了。 把这一试验结果写成一个定理,就是:
第 3 页 共 11 页
江苏省苏州中学 潘震皓 批注: 我们预先定义, 若数组
6
批注: 在这里, 第一次出现了 “分裂” 。在后面的叙述中, 将会多次出现。它的意思, 通常是指 将一个循环按照 .. mod k 的值平均 地 分成 k 个 . . . . .... . 循环。
= (T 2 ) 3 。任取一 T=(1 3 5 2 4 6),来做一遍乘法:
⎛1 T =⎜ ⎜3 ⎝ ⎛1 =⎜ ⎜3 ⎝ ⎛1 =⎜ ⎜5 ⎝
p p
k
p 次→T) 由置换的连接的运算法则可知, j (→) T = j → T 。所以 a ' [ s + 1] = a[(t + k ) mo= a ' [0] = 1 ,就得到了上面的公式。
2.3 算法的实现 根据上一节的定理和再上一节的 3 个结论, 我们可以很方便地得到求整幂运算的 O(n)算法, 但是如果单纯地照着做,常数项是非常大的,有时甚至还不如 O(nlogk)的算法快。针对这 一问题,可以使用一个简化的算法: z For 源置换中每一个循环 For 环中每一个未标记元素 Do z 做上标记 z 放入结果数组 z 前进 k 格
第 5 页 共 11 页
江苏省苏州中学 潘震皓
Until 回到这个元素 将结果数组中的元素取出,得到的环,便是目标置换包含的一个循环
可以分析出, 这个算法是符合上一节的定理和再上一节的 3 个结论的, 在这里就不再说明了。 循环的储存我们可以单纯地用 2 个数组来实现:一个是 data,把每一个循环按顺序放在里 面;一个是 point,保存每个循环在 data 中的起始位置和长度。 显然,2 个数组都是 O(n)阶的。 所以,置换群的整幂运算可以用时空复杂度均为 O(n)的算法来实现。 2.4 优化的例子 庆典的日期 (国家集训队原创试题) [问题描述] 古斯迪尔文明曾在约 10 亿年前在地球上辉煌一时,尤其在历法、数学、天文等方面的 发展水平已经超过现代。在古城的众多庙宇中,考古人员都发现了一种奇特的建筑,该建筑 包含一排独立的房间。 在每个房间的中央,挂有一个转盘,每个转盘分为p个格子,每个格子写着一个 1 到n 的数字。转盘可以逆时针转动。转盘的红色标记始终指向上方的格子。每个房间的转盘都不 相同。 CC 考古工作室近日成功地破译了当时的文字,对进一步研究古斯迪尔文明作出了重要 贡献。首先,研究人员翻译了当时的宗教书籍,得知了建筑的用途。原来每个寺院都要在建 成以后每隔若干年举行一次大型的庆典。由于“天机不可泄漏” ,寺院方面并不直接说明庆 典的日期,而是采用“暗示”的方法。奇特的建筑就是为了确定庆典的日期而专门建造的。 房间从左到右编号为 1,2,3,…n,同时寺院有n个祭司也从 1 到n编号,这些祭司每 年到房间中祈祷一次。建寺那年祭司和自己编号相同的房间祈祷。同时,转盘上红色标记指 示的格子的数字就是该祭司第二年祈祷的房间编号。 在祭司祈祷完毕以后, 将转盘逆时针旋 转一格。转盘的设计使得在每年祈祷时,每个房间只有一个祭司。 从建寺以后,当某一年祈祷时,每个祭司的编号都和祈祷房间的编号相同时,就是举行 庆典的日期。实际上,每隔若干年,就会有一次庆典。 作为 CC 考古工作室的首席软件顾问,你负责编程求出第一次举行庆典的确切日期。 [输入] 文件第一行是两个整数 n,p,n 表示房间的数目(也就是祭司的数目) ,p 表示转盘包 含的格子的数目。(0 < n, p <= 200) 以下有n行,每行p个整数,表示每个房间转盘的格子上的数字。每行第一个数表示寺院 建立时红色标记指向的数字,以下的数字按照顺时针方向给出。 [输出] 仅一行, 表示第一次举行庆典是在建寺以后多少年。 如果永远不会出现符合条件的情况 9 或者第一次符合条件的年份超过 10 (那时古斯迪尔文明已经衰落了) ,则输出’No one knows.’ [算法分析] 由于每个房间的转盘上的数字都是 p 个, 而且每年每个祭司都在不同房间, 所以我们可 以把这些房间中安置的转盘,转化成 p 个长度为 n 的置换。而每一年祭司本身的位置,也可
第 2 页 共 11 页
江苏省苏州中学 潘震皓
经过多次试验以后,我们得到三个结论: 结论一:一个长度为 l 的循环 T,l 是 k 的倍数,则 T 是 k 个循环的乘积,每个循环分别是 循环 T 中下标 i mod k=0,1,2…的元素按顺序的连接。 结论二:一个长度为 l 的循环 T,gcd(l,k)=1,则 T 是一个循环,与循环 T 不一定相同。 结论三:一个长度为 l 的循环 T, T 是 gcd(l,k)个循环的乘积,每个循环分别是循环 T 中 下标 i mod gcd(l,k)=0,1,2…的元素的连接。 可以看出,结论三只不过是把 k 分成 gcd(l,k)*(l/gcd(l,k)),再运用结论一和结论二所得 到的。如果这几个结论是正确的话,那显然只需要确定结论二中叙述的 T ,就能够在 O(n) 内解决任意循环的任意整幂运算了。 2.2 循环长度与指数互质时的整幂运算 和上面一样,我们来做几个试验。 设 T=(1 2 5 3 4),则:
⎛1 2 3 4 5 6⎞ =⎜ ⎜ 4 3 6 5 1 2⎟ ⎟ ⎝ ⎠ = (1 4 5)(2 3 6 )
与前面不同的是,循环只分裂成了 2 份。并且每一份的循环看起来都是杂乱无章的,只知道 是在循环中的奇数项和偶数项。 再来拿 T 做个试验:
5
T 5 = T 2T 3 ⎛1 =⎜ ⎜5 ⎝ ⎛1 =⎜ ⎜5 ⎝ 2 3 4 5 6 ⎞⎛ 1 2 3 4 5 6 ⎞ ⎟⎜ ⎟ ⎜ ⎟ 6 2 1 4 3⎟ ⎠⎝ 2 1 4 3 6 5 ⎠ 2 3 4 5 6 ⎞⎛ 5 6 2 1 4 3 ⎞ ⎟⎜ ⎟ ⎜ ⎟ 6 2 1 4 3⎟ ⎠⎝ 6 5 1 2 3 4 ⎠
2
2 3 4 5 6 ⎞⎛ 1 2 3 4 5 6 ⎞ ⎟⎜ ⎟ ⎜ ⎟ 4 5 6 2 1⎟ ⎠⎝ 3 4 5 6 2 1 ⎠ 2 3 4 5 6 ⎞⎛ 3 4 5 6 2 1 ⎞ ⎟ ⎟ ⎟⎜ ⎜ ⎟ 4 5 6 2 1⎠ ⎝ 5 6 2 1 4 3⎠ 2 3 4 5 6⎞ ⎟ 6 2 1 4 3⎟ ⎠
设 a = T , a ' = T k ,且gcd(l,k)=1,则 a ' [i ] = a[( k + 1)i mod l ] 。