您的位置:首页 > 其它

分治-大整数乘法

2016-10-16 02:37 288 查看
请设计一个有效的算法,可以进行两个n位大整数的乘法运算



小学的方法:O(n2)            效率太低
X=

Y=

X = a 2n/2+
b     Y =
c 2n/2+ d

XY = ac 2n+ (ad+bc)2n/2 +
bd

为了降低时间复杂度,必须减少乘法的次数。

1.XY= ac 2n + ((a-c)(b-d)+ac+bd)
2n/2 + bd
2.XY= ac 2n + ((a+c)(b+d)-ac-bd)
2n/2 + bd

如果将大整数分成更多段,用更复杂的方式把它们组合起来,将有可能得到更优的算法。

最终的,这个思想导致了快速傅利叶变换(Fast Fourier Transform)的产生。该方法也可以看作是一个复杂的分治算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: