- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法合集之被《置换群快速幂运算研究与探讨》
置换群快速幂运算研究与探讨;基础知识;基础知识;基础知识;基础知识;置换群基本操作
存储
映射
连接运算
分解循环
整幂运算
开方运算;例题;例题;一个引子;T=(1 3 5 2 4 6);T=(1 3 5 2 4 6)
T2=(1 5 4)(2 6 3)
T2是两个循环的乘积,这两个循环分别是循环T的奇数项和偶数项;T=(1 3 5 2 4 6)
T3=(1 2)(3 4)(5 6)
T3是三个循环的乘积,这三个循环分别是循环T中编号 mod 3=0, 1, 2的项
当k|n时,Tk分裂成了 k个循环的乘积,这k个循环分别是循环T中编号 mod k=0, 1…k-1的项,按顺序的连接;Ta*b=(Ta)b
a=gcd(n,k) b=k/a
Tk=(Ta)b;若 ,
假设
则: ,
显然,
所以,令 ,;;
置换群整幂运算可以在线性时间复杂度内解决
算法:
分解循环
从每个未扫描元素,按上述方法求得一个循环
将所有求得循环合并成置换;开方运算;;T=(1 6 4)(2 3 5)
T1=(1 4 6)(2 5 3)
T2=(1 2 6 3 4 5)
T3=(1 3 6 5 4 2)
T12=T22=T32=T;T=(1 3 4 2)
经过枚举,不存在一个T1满足T12=T
T=(1 3 4 2)(5 7 6 8)
T1=(1 5 3 7 4 6 2 8),满足T12=T
如果gcd(n,k)1,那么开方时就必须找k’个长度皆为n的循环合并 (k’是gcd(n,k)的倍数,同时是k的因数);否则,不能进行开方运算;可行解生成的算法:
将置换分解成循环
对于每个可以不合并的循环,进行整幂运算的逆运算
对于必须合并的循环,每次选择gcd(n,k)个合并
将所得到的循环化为置换
;
多解的产生
合并与不合并之间
选择几个循环合并
选择哪几个循环合并
合并时的“圆组合”;T=(1 6 4)(2 3 5)
T1=(1 4 6)(2 5 3)
T2=(1 2 6 3 4 5)
T3=(1 3 6 5 4 2)
T12=T22=T32=T;
多解的产生
合并与不合并之间
选择几个循环合并
选择哪几个循环合并
合并时的“圆组合”;例题;总结;谢谢大家;排列矩阵(Permutation Matrix)
每行每列有且仅有一个元素值非零
此值为1
稀疏矩阵可以被表示为少量排列矩阵的和
O(n3logk) = O(n+k)
O(nm+km)
文档评论(0)