多项式乘法|算法

时间:2012-03-15 19:45:58

标签: algorithm biginteger multiplication polynomial-math

我正在训练我的C ++并且我正在尝试编写一个能够使用XOR链表来表示以下数字的库:

999999999 *([i = 0]Σ[999999999] 1000000000 ^ i)

例如,如果我的号码是 711381450277869054011 ,它将表示如下:

711 * 1000000000 ^ 2 + 381450277 * 1000000000 ^ 1 + 869054011 * 1000000000 ^ 0

或者简单地说:

711 * X ^ 2 + 381450277 * X ^ 1 + 869054011 * X ^ 0

enter image description here

我为我的班级重载了*运算符,但我认为我使用的算法很笨拙。

我打算去Karatsuba algorithm,但由于它是递归的,它会导致堆栈溢出。

然后我检查了Toom-3 algorithm。我喜欢它,但我无法应用它,因为我还没有编写负数。

我的问题是:你建议使用什么算法,最适合多项式乘法?我需要看到哪些好的算法?

1 个答案:

答案 0 :(得分:3)

您可以使用Fast Fourier transform执行此操作。还存在非递归实现。