我正在阅读CLRS(CORMEN)(page 834)的上述主题,此时我陷入困境。
任何人都可以解释下面的表达式,
A(x)=A^{[0]}(x^2) +xA^{[1]}(x^2)
来自,
n-1 `
Σ a_j x^j
j=0
其中,
A^{[0]} = a_0 + a_2x + a_4a^x ... a_{n-2}x^{\frac{n}{2-1}}
A^{[1]} = a_1 + a_3x + a_5a^x ... a_{n-1}x^{\frac{n}{2-1}}
答案 0 :(得分:4)
多项式A(x)
定义为
A(x) = a_0 + a_1 x + a_2 x^2 + a_3 x^3 + ...
为了通过FFT开始多项式乘法的分而治之策略,CLRS引入了两个新的多项式:x
的偶数幂系数之一A[0]
和其中一个被称为x
A[1]
奇数幂的系数
A[0](x) = a_0 + a_2 x + a_4 x^2 + ...
A[1](x) = a_1 + a_3 x + a_5 x^2 + ...
现在,如果我们将x^2
替换为A[0]
和A[1]
,我们就会
A[0](x^2) = a_0 + a_2 x^2 + a_4 x^4 + ...
A[1](x^2) = a_1 + a_3 x^2 + a_5 x^4 + ...
如果我们将A[1](x^2)
乘以x
,我们就
x A[1](x^2) = a_1 x + a_3 x^3 + a_5 x^5 + ...
现在,如果我们添加A[0](x^2)
和x A[1](x^2)
,我们就有
A[0](x^2) + x A[1](x^2) = (a_0 + a_2 x^2 + a_4 x^4 + ...) + (a_1 x + a_3 x^3 + a_5 x^5 + ...)
= a_0 + a_1 x + a_2 x^2 + a_3 x^3 + ...
= A(x)
Q.E.D。
答案 1 :(得分:3)
如果将多项式分解为“奇数指数”和“偶数指数”,你会发现A [1]多项式(具有奇数指数的多项式)具有奇怪的指数的烦人事实!对于FFT,即使指数也更容易使用。因此,可以简单地从A [1]中的所有值中分解出单个“x”,并将其移出表达式之外。
FFT喜欢仅使用偶数指数多项式。因此,当你进行分裂和征服时,你想要将你的A [1]表达式转换为“偶数指数”多项式,然后递归,然后然后乘以回来那个x。您将看到在实际算法的内部循环中发生。
编辑:我意识到你的困惑可能源于他们在多项式中“传入”(x ^ 2)作为值这一事实。 A [1]和A [0]中的“x”与(x ^ 2)表达式中的x不同。你会看到它必须如何,因为当原始多项式A上升到指数N时,A [1]和A [0]都只能达到指数(N / 2)。
答案 2 :(得分:1)
我不会回答你的问题,因为我觉得以前的人已经回答了。我要做的是尝试解释FFT的目的。
首先,FFT是计算两个向量之间的卷积的一种方法。也就是说,假设x =和y =是1xn向量,则x和y的卷积是
\ sum_ {i = 0} ^ n {xi y {n-i}}。
您必须接受这样一个事实,即计算该值对于广泛的应用程序非常有用。
现在考虑以下事项。
假设我们构造了两个多项式
A(z)= x0 + x1 * z + x2 * z ^ 2 + .. + xn ^ z ^ n B(z)= y0 + y1 * z + y2 * z ^ 2 + .. + yn ^ z ^ n
然后乘法是
AB(z)= A(z)B(z)= \ sum_ {i = 0} ^ n(\ sum_ {k = 0} ^ i xk * y {i-k})z ^ i
其中内部和显然是针对不同k值的不同大小的卷积。
现在我们可以通过强力方法清楚地计算出n ^ 2时间内AB的系数(卷积)。
但是,我们也可以更加聪明。考虑这样的事实:任何n次多项式都可以由n + 1个点唯一地描述。给定n + 1个点,我们可以构造经过所有n + 1个点的n次唯一多项式。进一步考虑n + 1个点形式的2个多项式。您可以通过简单地将n + 1个y值相乘并保持x值以点形式生成其产品来计算其产品。现在给出一个n + 1点形式的多项式,你可以找到在O(n)时间内描述它的唯一多项式(实际上我不确定这个,它可能是O(nlogn)时间,但肯定不会更多。)
这正是FFT的作用。然而,非常仔细地选择它来获得n + 1个点以描述多项式A和B的点。有些要点确实很复杂,因为它恰好可以通过考虑这些点来节省评估多项式的时间。也就是说,如果您只选择实际点而不是精心选择的FFT,则需要O(n ^ 2)时间来评估n + 1个点。如果选择FFT,则只需要O(nlogn)时间。这就是FFT的全部内容。哦,FFT选择点的方式有一个独特的副作用。给定n次多项式,您必须选择2 ^ m个点,其中m被选择,使得2 ^ m是2的最小幂,大于或等于n。
答案 3 :(得分:0)
A(x) is broken in to even x^2, and odd x parts, for example if A(x) = 21 x^5 + 17 x^4 + 33 x^3 + 4 x^2 + 8 x + 7 then A0 = 17 y^2 + 4 y + 7 so that A0(x^2) = 17 x^4 + 4 x^2 + 7 and A1 = 21 y^2 + 33 y + 8 so that A1(x^2) = 21 x^4 + 33 x^2 + 8 or x * A1(x^2) = 21 x^5 + 33 x^3 + 8 x clearly, in this case, A(x) = A0(x^2) + x A1(x^2) = even + odd parts