找回密码
 欢迎注册
楼主: 无心人

[讨论] NTT相关问题一则,有兴趣的参与

[复制链接]
发表于 2008-8-30 21:43:08 | 显示全部楼层
#39说得没错,只是做乘法的话,可以不倒位序
数论变换和傅立叶变换一样有基时分和基频分2种算法
基时分是先倒位序再用蝴蝶形算法
基频分是先用蝴蝶形算法再倒位序
所以只要先用基频分做正变换再用基时分做逆变换,就可以省略倒位序的过程
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-8-30 21:53:12 | 显示全部楼层
受教受教

呵呵
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-8-30 22:00:41 | 显示全部楼层
用CRT是怎么个情况呀
是不是中间计算的时候有a*b%c的时候,为了弥补这个乘法变量字长不够用的?
我不是很清楚CRT的作用
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-8-30 22:09:23 | 显示全部楼层
CRT乃中国剩余定理也
是用三个不同参数但变换长度相等的变换
最后以CRT得到最终结果
以达到减少字长,简化运算的目的啊
请看俺数论变换的那个帖子
应该有相关介绍吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-8-30 22:41:06 | 显示全部楼层

回复 44# 无心人 的帖子

有点了解是怎么回事了
我一直在用单个变量长度计算
诶...真狭隘...就因为这个我一直在考虑增加字长又要避免益出
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-8-31 21:14:44 | 显示全部楼层
你考虑在相同的变换长度上,最简单的变换是 FNT,速度也最快
但缺点是变换长度固定
在我那个帖子里有相应的FNT变换参数列表
FNT迭代意义下的大数字乘法是最优化的
但有点失之于复杂了
相对于CRT和FFT(整数意义下的模2^n + 1)
也存在不同程度的空间复杂度的增加
而CRT特点在于变换代码不涉及大数字运算
仅中间步骤乘法有部分小的大整数的运算
但需要进行至少三次的不同参数的变换
参数的选择面受限于变换长度的限制
可选择的参数有限,且alpha的值很可能不是2的幂
基于模2^n + 1的变换则可能处于CRT数论变换和FNT之间吧
====================================
是我粗略的理解
并没仔细的思考
如有错误请指正
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-9-6 14:45:22 | 显示全部楼层
学会了..
用了CRT以后就相当于同步进行3个变换了
我为了中间计算不超出32字节,特意挑选了特殊的素数
p=a*2^b+1=k^2+1,这样a必须是平方数,b必须是偶数...
但是最后用CRT的组装的中间计算挺麻烦的
我做1E8进制的变换,组装后的结果大约有15-16的十进制位,但是中间计算却有20+的十进制位
这个地方让我很不爽...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-6 15:26:48 | 显示全部楼层


那你就实现FNT吧
那个没乘法的
光加减和移位操作就能完成的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-9-6 17:35:20 | 显示全部楼层
FNT的参数不知道怎么选
费马数不是从第5个开始不是素数的么
原根,变换长度我就晕的...

还有我搞不清那个移位的确切价值
貌似就算可以移位还是要算 mod p 的
而且如果移位了我就不能用那个减小中间运算大小的方法了

最关键的问题:
目前最擅长的还是VB6,没有移位,所以白搭
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-6 18:02:05 | 显示全部楼层
不是素数的费马数
必须以2或者根号2为alpha
此时的幂乘就是移位
而且模费马数的运算实际上是个减法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-27 10:41 , Processed in 0.045186 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表