多项式乘法复杂度降低

Bra*_*esh 5 algorithm complexity-theory multiplication polynomial-math

我一直在努力想你3天,但没有到任何地方.我必须实现多项式乘法(乘以2个二次方程).他们看着像是:

( a1 x^2 + b1 x + c1 ) * ( a2 x^2 + b2 x + c2 );
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*lle 3

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

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

对于P(X) = A*X^2 + B*X + Cx=-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
Run Code Online (Sandbox Code Playgroud)

产品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
Run Code Online (Sandbox Code Playgroud)

您知道 x=-2,-1,0,+1,无​​穷大的值R(x) = P(x)*Q(x),并且必须求解该线性系统以获得系数 T,U,V,W,K。