шаг и время их выполнения не зависит от операндов, общее время,
необходимое для выполнения дискретного преобразования Фурье,
имеет порядок O(n
2
).
Однако, если n – натуральная степень числа 2, то известны ал-
горитмы, работающие с большей скоростью, так что время их вы-
полнения O(n lg n). Рассмотрим подобный алгоритм лишь для пря-
мого дискретного преобразования Фурье; алгоритм для обратно-
го ему преобразования аналогичен. Подобные алгоритмы вычисле-
ния дискретного преобразования Фурье носят названия алгоритмов
быстрого пребразования Фурье (БПФ). Основная идея БПФ состо-
ит в использовании подобия отдельных частичных сумм. Впервые
он предложен Рунге и Кенига в 1924 году. Подробное описание ал-
горитма дано в работе Кули и Тьюки в 1965 году.
В дальнейшем будем считать
n = 2
k
. (7.1)
Нам известно, что вычисление преобразования Фурье ba = A · a
эквивалентно вычислению многочлена
P (x) =
n−1
X
i=0
a
i
x
i
(7.2)
в точках ω
0
, ω
1
, . . . , ω
n−1
(см. п.4, формулы (4.4), (4.5), (4.7)). Но
вычисление многочлена в точке c согласно теореме Безу (см. п. 2)
эквивалентно вычислению остатка этого многочленм при делении
на x−c. Следовательно, вычисление преобразования Фурье ba = A·a
сводится к вычислению остатков от деления P (x) на биномы
x − ω
j
, j = 0, 1, . . . , n − 1. (7.3)
Последовательное деление (7.2) на биномы (7.3) согласно схеме
Хорнера (см. (2.5) и замечание 1 в п. 2) даст, очевидно, O(n
2
) ариф-
метических действий (или, как говорят, процесс сложности O(n
2
)).
Для построения более быстрого алгоритма биномы (7.3) пере-
множают попарно, затем перемножают попарно n/2 получившихся
многочленов и т.д., пока останутся два полинома q
1
(x) и q
2
(x) сте-
пеней n/2 каждый.
Теперь разделим P (x) на q
1
(x) и q
2
(x) по-очереди; получаемые
при этом остатки обозначим r
1
(x) и r
2
(x) соответственно (степени
остатков, очевидно, не более n/2 − 1).
16