多项式乘法复杂度降低

时间:2011-02-16 06:24:31

标签: algorithm complexity-theory multiplication polynomial-math

我一直在努力想象你3天而且没有得到任何地方。我必须实现多项式乘法(乘以2个二次方程)。他们看起来像:

( a1 x^2 + b1 x + c1 ) * ( a2 x^2 + b2 x + c2 );

但更棘手的部分是在5个系数乘法中实现它。我已将其减少到6.例如,a1 * b1,(a1 + a2)*(b1 + b2)计为一次乘法。但是(a1 x + a2)*(b1 x + b2)计为4(a1 b1,a1 b2,a2 b1,a2 b2)。

3 个答案:

答案 0 :(得分:3)

嗯,我想我找到了答案。

将其替换为(x *(A1 * x + b1)+ c1)*(x *(a2 * x + b2)+ c2);

你有5次乘法。

对不起,这是编辑的,我的第一个答案是错的,确实有9次乘法。

答案 1 :(得分:3)

您可能需要查看多精度乘法中使用的Toom-3算法。参考:Toom-Cook multiplication

基本上,你只使用加法和移位来计算x = -2,-1,0,+ 1,无穷大的每个多项式,然后乘以这5个值得到x = -2,-1处的乘积值,0,+ 1,无穷大。最后一步是回到结果的系数。

对于P(X) = A*X^2 + B*X + C,x = -2,-1,0,+ 1,无穷大的值为:

P(-2) = 4*A - 2*B + C  (the products here are bit shifts)
P(-1) = A - B + C
P( 0) = C
P(+1) = A + B + C
P(oo) = A

产品R(X) = T*X^4 + U*X^3 + V*X^2 + W*X + K,值为:

R(-2) = 16*T - 8*U + 4*V - 2*W + K
R(-1) = T - U + V - W + K
R( 0) = K
R(+1) = T + U + V + W + K
R(oo) = T

你知道x = -2,-1,0,+ 1,无穷大的值R(x) = P(x)*Q(x),你必须求解这个线性系统才能得到系数T,U,V,W,K。 / p>

答案 2 :(得分:0)

我还找到了一个6乘法解决方案,可以帮助自己或其他人解决。

M1 := (a1 + b1)*(a2 + b2)  
M2 := (a1 + c1)*(a2 + c2)  
M3 := (b1 + c1)*(b2 + c2)  
M4 := a1 * a2  
M5 := b1 * b2  
M6 := c1 * c2

然后给出:

M4 * x^4 + 
(M1 - M4 - M5) * x^3 + 
(M2 - M4 - M6 + M5) * x^2 +
(M3 - M5 - M6) * x +
M6