жения выполняются тремя вещественными умножениями и тремя веществен-
ными сложениями.
Сравнивая табл. 4.3 и 4.4, можно заметить, что гнездовой алгоритм лучше
алгоритма, основанного на БПФ, для коротких и средних сверток длиной,
меньшей 200-220. Преимущество гнездового алгоритма состоит в том, что он
не использует тригонометрических функций и вещественные свертки исполь-
зуют вещественную, а не комплексную арифметику. В то же время метод,
основанный на БПФ, проще в программировании и позволяет при помощи од-
ной стандартной программы вычислить свертку для различных значений N.
4Я, МУЛЬТИПЛИКАТИВНАЯ СЛОЖНОСТЬ
ВЫЧИСЛЕНИЯ СВЕРТКИ
При синтезе алгоритмов с малой вычислительной сложностью желательно
знать нижние предельные значения этой величины, что позволяет судить о каче-
стве алгоритма и возможностях его улучшения. Рассмотрим вопрос о нижних
границах применительно к операциям умножения.
Теорема 4.2. Линейная свертка двух последовательностей длины N
может быть вычислена за 2JV— 1 умножений.
Доказательство теоремы основано на алгоритме Тоома-Кука. Значения-
ми линейной свертки являются коэффициенты полинома
y(z) = s(z)h(z)
степени 2/V — 2. По алгоритму Тоома—Кука выбираются 2/V — 1 точек интер-
поляции z
{
и находятся 2N- 1 произведений:
у (z.) = s(
Zj
)h(z.) , i = 0,1, 2,..., 2N- 2 . (4.34)
Для построения полинома y(z) используются произведения (4.34) и ин-
терполяционная формула Лагранжа. Если вычисление s (z.), h {z.) и интерпо-
ляция не требуют умножений, то для вычисления свертки используются толь-
ко 2N — 1 умножений вида (4.34).
Рассмотрим теперь циклическую свертку.
Теорема 4.3. Минимальное число умножений, необходимое для вычис-
ления циклической свертки длины N , равно 27V ~ к , где к — число делите-
лей N, включая 1 и N.
В доказательстве теоремы используется алгоритм вычисления свертки по
китайской теореме, а именно: вычисляется полином
у (z) = s(z)h(z)mod(z
N
-1).
Для этого полином z —1 раскладывается в произведение круговых полино-
мов, число которых равно к . Если d. — делитель числа N, то соответствую-
щий этому делителю круговой полином C
d
имеет степень и. , а сумма степе-
ней всех круговых полиномов равна N. Ддя вычисления свертки по китай-
ской теореме необходимо вычислить
y
/
(z) = s
/
(z}h
/
(z)modC
d
(z) , /= 1,2, ...,*. (4.35)
94