我正在研究一种算法,该算法将2 n位数乘以n / 2位的3次乘法。该算法被认为是有效的。虽然我明白空间显然是守恒的,但如果我在n位机器上工作,n / 2位乘法如何更好。这些n / 2位乘法将被转换为n位乘法,因为CPU只能理解n位数。
提前谢谢。
答案 0 :(得分:1)
Karatsuba multiplication或Toom-Cook等算法通常用于“bignums”的实现 - 使用无限大小的数字进行计算。一般来说,算法越复杂,需要更大的数字才能使其值得做。
有各种各样的bignum套餐;其中一个比较常用的是Gnu Multiprecision库gmplib,它包含大量不同的乘法算法,根据被乘数的长度选择合适的算法。 (根据维基百科,基于快速傅立叶变换算法的Schönhage–Strassen algorithm直到被乘数达到33,000个十进制数字才被使用。这种计算相对较少,但是当你必须做这样的计算时,你可能关心它是否有效地完成了。)