分治-大整数乘法
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)的产生。该方法也可以看作是一个复杂的分治算法。
小学的方法: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)的产生。该方法也可以看作是一个复杂的分治算法。
相关文章推荐
- 算法设计与分析:第三章 分治 3.3二进制大整数的乘法
- 递归分治-大整数乘法
- 分治法大整数乘法和普通大整数乘法
- 大整数的乘法-分治法
- 算法06:大整数乘法分治算法——分治法Part2
- 大整数乘法-分治
- 分治——大整数乘法
- 大整数乘法---分治
- 大整数分治乘法
- 大整数乘法算法简单实现 java
- 整数快速乘法/快速幂+矩阵快速幂
- 有符号整数判断溢出的乘法
- 第四章 4.2矩阵乘法的Strassen算法(分治)
- 整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java
- 编程算法 - 大整数乘法
- 大整数乘法,遇到的问题和解决方法
- POJ2980大整数乘法
- 分治法解决大整数乘法问题
- 分治法 --- 大整数的乘法
- 大整数乘法。。。。。