Я не собираюсь отвечать на ваш вопрос, потому что я чувствую, что предыдущие люди ответили на него. Что я сделаю, так это попытаюсь объяснить цель БПФ.
Во-первых, БПФ — это способ вычисления свертки между двумя векторами. То есть предположим, что 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{ik}) z^i
где внутренняя сумма явно является сверткой разного размера для разных значений k.
Теперь мы можем явно вычислить коэффициенты (свертки) AB за время n^2 методом грубой силы.
Однако мы также можем быть намного умнее. Учтите, что любой многочлен степени n можно однозначно описать n+1 точками. То есть по n+1 точкам мы можем построить единственный многочлен степени n, который проходит через все n+1 точек. Далее рассмотрим 2 многочлена в виде n+1 точек. Вы можете вычислить их произведение, просто умножив n+1 значений y и сохранив значения x, чтобы получить их произведение в точечной форме. Теперь, имея полином в n+1 точечной форме, вы можете найти уникальный полином, который описывает его за время O(n) (на самом деле я не уверен в этом, это может быть время O(nlogn), но точно не больше.)
Это именно то, что делает БПФ. Однако точки, которые он выбирает, чтобы получить n+1 точек для описания многочленов A и B, выбираются ОЧЕНЬ тщательно. Некоторые точки действительно сложны, потому что так получилось, что вы можете сэкономить время при оценке многочлена, рассматривая такие точки. То есть, если бы вы выбрали только реальные точки вместо тщательно выбранных точек, которые использует БПФ, вам потребовалось бы время O (n ^ 2) для оценки n + 1 точки. Если вы выберете БПФ, вам потребуется только O (nlogn) времени. И это все, что нужно для БПФ. О, и есть уникальный побочный эффект в том, как БПФ выбирает точки. Учитывая полином n-й степени, вы должны выбрать 2 ^ m точек, где m выбрано так, чтобы 2 ^ m было наименьшей степенью числа 2, большей или равной n.
person
ldog
schedule
15.08.2009