约定

现在要计算两个 二进制 的乘积,这是为了方便描述,一下算法可以直接应用到任意进制的情况。

我们的计算机每次仅可以对一位二进制位进行操作,我们的复杂度也是在这样的机器上进行计算的。

Karatsuba 型算法时期

Karatsuba 算法

前置知识

Karatsuba 提出了第一个能在低于 的时间内计算整数乘法的算法去,其复杂度为

不妨设 是偶数,把 表示为 b$ 为

而其中

于是我们只需要计算 三个乘法即可。

复杂度:

Toom-Cook 算法

前置知识

观察 Karatsuba 算法 的本质:计算二次多项式 处的点值,然后还原。

根据这个思路,我们可以把 写成 ,那么 就是一个 次多项式,我们需要求出 个点值。

其中 为拉格朗日插值时需要付出的代价。

,可以做到

快速傅里叶(Fourier)变换时期

Cooley-Tukey 算法

施工中。。。

参考

https://www.cnblogs.com/Elegia/p/18020040/integer-multiplication