
поскольку проводится лишь работа с коэффициентами многочле-
нов, то присутствие x не обязательно (представление с помощью
многочленов служит для наглядности).
9
Замечание 4. Из записи алгоритма видно, что можно “почти”
ограничиться памятью, необходимой для записи исходных данных
(вектора коэффициентов исходного многочлена).
10
Теорема 8. Алгоритм быстрого преобразования Фурье содер-
жит O(n log n) арифметических операций.
Д о к а з а т е л ь с т в о. Обратимся к алгоритму БПФ
Прежде всего заметим, что вычисление rev
k
(j) требует не бо-
лее k делений на 2. Если рассмотреть вычисление rev
k
(j) для всех
j, 0 ≤ j < n − 1, n = 2
k
, то число D делений оценивается вы-
ражением kn = n log
2
n, так что
D ≤ n log
2
n. (8.22)
Таблицу rev
k
(j) следует получить заранее. В этом случае можно
считать, что строки 5 и 8 алгоритма БПФ не содержат арифмети-
ческих операций.
Заранее получим также таблицу степеней
ω
0
, ω
1
, . . . , ω
n−1
;
при этом потребуется число умножений M
1
, которое очевидно оце-
нивается сверху числом n,
M
1
≤ n. (8.23)
Далее, среди остальных строк арифметические операции содер-
жат только строки 6 и 7. Подсчитаем лишь число умножений, ко-
торые порождаются в алгоритме этими строками (число сложений
подсчитывается аналогично). В строках 6 и 7 по 2
m
умножений в
каждой, так что общее их число 2
m+1
. Строки 6 и 7 во внутреннем
цикле повторяются n/2
m+1
раз, а внешний цикл повторяет внут-
ренний k раз. Таким образом, число M
2
умножений, порождаемых
этими строками, равно 2
m+1
kn/2
m+1
= n log
2
n, т.е.
M
2
= n log
2
n. (8.24)
9
Записать алгоритм в “упрощённой” форме, исключив из записи м ногоч лен ы
10
Записать алгоритм, стремясь сэкономить объём используемой памяти (минимизируя
число используе- мых массивов)
27