两个多项式相乘-不完全是FFT



我目前正在学习FFT,在解决以下问题时遇到困难:

编写一个"分而治之"算法,将两个复杂度多项式(最大N次)相乘:

n^log3(基2 log-ofc)的数据

该算法应将两个给定的多项式系数分为两组:

Group1)具有偶数索引的系数。Group2)具有奇数索引的系数。

嗯,我甚至不知道如何开始考虑解决方案。。指南似乎类似于FFT算法,但我仍然看不到解决方案。很乐意得到一些帮助!甚至只是一种思考的方式。

请注意,不应提供任何代码。。只有关于如何完成它的解释,也许还有伪代码。

谢谢!

以下是一些提示,然后是解决方案。

1-首先,你应该确保你可以在小于n^2的系数乘法中执行乘法,举个简单的例子:

(aX+b)*(cX+d)

你的一个乘法应该是(a+b)*(c+d)

2-还没找到怎么做?以下是每种电源的操作:

X^2:ac

X:(a+b)*(c+d)-ac-bd

1:bd

你只需要执行3次乘法运算,而不是4次。与乘法相比,加法的成本并没有那么高。

3-你被要求在Theta(n^lg(3))中找到一个解决方案。以下是"Théorème Général"的快速提醒:

设T(n)为次数为n的多项式的算法成本。

采用"分而治之的战略",导致:

T(n)=aT(n/b)+f(n)

如果f(n)~O(n^lg_b(a)),则T(n)=θ

您正在寻找T(n)=Theta(n^lg_2(3))。这可能意味着:

T(n)=3.T(n/2)+ε

如果你把你的多项式分成偶数和奇数多项式,它们有一半的初始系数:n/2。

这个公式告诉你,你将在奇数和偶数多项式之间进行三次乘法。。。

4-考虑以这种方式表示次数为n的多项式P(x):

p(X)=X.A(X)+B(X)

A(X)和B(X)包含n/2个系数。

5-解决方案

p(X)=X.A(X)+B(X)

p'(X)=X.A'(X

p*p'(X)的系数是的系数之和

X^2.A.A'

X。(A.B'+A'.B)=X.[(A+B)(A'+B')-A.A'-B.B']

B.B'

所以你必须调用你的乘法算法:

A和A’

A+B和A'+B'

B和B’

然后可以通过移位和加法重新组合系数。

干杯

最新更新