评估多项式?

时间:2012-05-13 22:34:52

标签: math computer-science

为什么使用快速傅立叶变换评估具有n个点的多项式需要O(n log n)时间?我特别谈到实现一种分而治之的算法,它将多项式A(x)分成偶数幂和奇数幂,然后使用递归。

1 个答案:

答案 0 :(得分:3)

让T(n)成为FFT算法用于评估n个点的n次多项式的时间。

算法拆分

A(X)= XB(X ^ 2)+ C(X ^ 2),

即。分为两个多项式:奇数和偶数系数。例如:3x ^ 3 + 2x ^ 2 + 9x + 7被分成x(3x ^ 2 + 9)+(2x ^ 2 + 7)。

最初你想在a,b,c,d点计算3x ^ 3 + 2x ^ 2 + 9x + 7。

现在你想在a 2 ,b 2 ,c 2 ,d 2 。稍后你将把它组合起来得到a,b,c,d的3x ^ 3 + 2x ^ 2 + 2x + 7的值。

关键思想:既然你使用了统一的根, 2 中的一半,b 2 ,c 2 ,d 2 是相同的。假设 2 = c 2 和b 2 = d 2

所以你需要在 2 ,b 2 点计算3x + 2和2x + 7。

这意味着您将大小为N的实例缩减为两个大小为N / 2且O(N)后处理的实例。

FFT以递归方式重复此过程。这与mergesort的递归方程相同,即O(N log N)复杂度。