3.2.5. Гнездовые алгоритмы
 
Систематическое применение методов, рассмотренных в предыдущем разделе, позволяет построить большое число алгоритмов полиномиального произведения, требующих относительно малого числа сложении и умножений, и, следовательно, вычислять большие двумерные свертки с помощью составных полиномиальных преобразований. В качестве альтернативного подхода может служить конструирование больших двумерных сверток из ограниченного ряда коротких двумерных сверток методами, подобными тому, который использовался для одномерных сверток [3.2]. В этом методе двумерная (ЛАХЛЛ-точечная свертка  — взаимно-простые, превращается в четырехмерную
 — взаимно-простые, превращается в четырехмерную  -точечную свертку путем простого изменения индексации. Пусть задано
-точечную свертку путем простого изменения индексации. Пусть задано 
 
Поскольку  и
 и  — взаимно-простые числа и индексы
 — взаимно-простые числа и индексы  и
 и  определены по модулю
 определены по модулю  прямым следствием китайской теоремы об остатках [3.7] является то, что
 прямым следствием китайской теоремы об остатках [3.7] является то, что  можно отобразить на два ряда индексов
 можно отобразить на два ряда индексов  где
 где 
 
Следовательно,  преобразуется в четырехмерную
 преобразуется в четырехмерную  -точечную свертку
-точечную свертку 
 
Эту четырехмерную свертку можно рассматривать как двумерную  -точечную свертку, в которой все скаляры заменены двумерными
-точечную свертку, в которой все скаляры заменены двумерными  -точечными полиномами. Точнее, представляя входные и выходные последовательности в виде двумерных полиномов, получим
-точечными полиномами. Точнее, представляя входные и выходные последовательности в виде двумерных полиномов, получим 
 
 
 
Каждое полиномиальное умножение  модулю
 модулю  соответствует
 соответствует  -точечной свертке, которая вычисляется с
-точечной свертке, которая вычисляется с  скалярными умножениями и
 скалярными умножениями и  скалярными сложениями.
 скалярными сложениями.  -точечной свертке все скаляры заменяются полиномами
-точечной свертке все скаляры заменяются полиномами  Таким образом, если
 Таким образом, если  число умножений и число сложений, требуемых
 число умножений и число сложений, требуемых  вычисления скалярной
 вычисления скалярной  -точечной свертки, то число умножений М в число сложений А, требуемых для вычисления двумерной
-точечной свертки, то число умножений М в число сложений А, требуемых для вычисления двумерной  -точечной свертки, сводится к
-точечной свертки, сводится к 
 
Если  поменять местами, число умножений останется таким же. число сложений станет равным
 поменять местами, число умножений останется таким же. число сложений станет равным  , В случае более двух множителей этот способ вычисления можно использовать рекурсивно, при условии, что нее множители взаимно-простые. На практике
, В случае более двух множителей этот способ вычисления можно использовать рекурсивно, при условии, что нее множители взаимно-простые. На практике  и
 и  -точечные свертки вычисляются с помощью полиномиальных преобразований, а большие двумерные свертки — посредством небольшого набора алгоритмов полиномиальных преобразований. Например,
-точечные свертки вычисляются с помощью полиномиальных преобразований, а большие двумерные свертки — посредством небольшого набора алгоритмов полиномиальных преобразований. Например,  -точечную свертку можно было бы вычислить с помощью
-точечную свертку можно было бы вычислить с помощью  и
 и  -точечных сверток. Поскольку эти свертки вычисляются соответственно за 13 умножений, 70 сложений и 55 умножений, 369 сложений (см. табл. 3.4), вложение двух алгоритмов позволяет вычислить
-точечных сверток. Поскольку эти свертки вычисляются соответственно за 13 умножений, 70 сложений и 55 умножений, 369 сложений (см. табл. 3.4), вложение двух алгоритмов позволяет вычислить  -точечную свертку за 715 умножений и 6547 сложений. В табл. 3.5 приведено число арифметических операций для различных двумерных сверток, вычисленных с помощью полиномиальных преобразований и вложения. Можно видеть, что этот метод дает очень малое число умножений на отсчет, но число
-точечную свертку за 715 умножений и 6547 сложений. В табл. 3.5 приведено число арифметических операций для различных двумерных сверток, вычисленных с помощью полиномиальных преобразований и вложения. Можно видеть, что этот метод дает очень малое число умножений на отсчет, но число 
Таблица 3.5. Число операций для двумерных сверток, вычисляемых с помощью полиномиальных преобразований и вложения 
 
 
Таблица 3.6. Число операций для двумерных сверток, вычисляемых с помощью полиномиальных преобразований и послойного вложения
 
сложений на отсчет, в общем, выше, чем при использовании составных полиномиальных преобразований. Число сложений можно уменьшить посредством небольшого усовершенствования метода вложения Агарвала-Кули. Это осуществляется с помощью метода послойного вложения  в котором первый шаг вычислений такой же, как в методе Агарвала — Кулп, причем
 в котором первый шаг вычислений такой же, как в методе Агарвала — Кулп, причем  -точечная свертка вычисляется как
-точечная свертка вычисляется как  -точечная,
-точечная,  которой скаляры заменяются полиномами
 которой скаляры заменяются полиномами  Таким образом, А, сложении, соответствующих алгоритму
 Таким образом, А, сложении, соответствующих алгоритму  дают согласно
 дают согласно  сложений. В методе Агарвала — Кули
 сложений. В методе Агарвала — Кули  умножений, соответствующих алгоритму затем заменяют на
 умножений, соответствующих алгоритму затем заменяют на  -точечных сверток, что дает, таким образом.
-точечных сверток, что дает, таким образом.  сложений. В послойно-гнездовом алгоритме, однако, роль
 сложений. В послойно-гнездовом алгоритме, однако, роль  и
 и  на этом шаге меняется. Если предположить, что
 на этом шаге меняется. Если предположить, что  простые, то
 простые, то  умножении, связанных с алгоритмом
 умножении, связанных с алгоритмом  соответствуют
 соответствуют  произведениям полиномов из
 произведениям полиномов из  членов плюс одно умножение. Поэтому
 членов плюс одно умножение. Поэтому  
  -точечных сверток можно рассматривать как
-точечных сверток можно рассматривать как  -точечную свертку, в которой скаляры заменены на
-точечную свертку, в которой скаляры заменены на  полиномов из
 полиномов из  элементов плюс один скаляр. Таким образом, каждое сложение в алгоритме
 элементов плюс один скаляр. Таким образом, каждое сложение в алгоритме  повторяется
 повторяется  раз вместо
 раз вместо  , поскольку
, поскольку  число сложений уменьшается, в то время как число умножений остается неизменным.
 число сложений уменьшается, в то время как число умножений остается неизменным. 
В табл. 3.6 приведено число арифметических операций для различных двумерных сверток, вычисляемых с помощью полиномиальных преобразований и метода послойного вложения. Можно видеть, что число сложений значительно меньше, чем при обычном вложении, и сравнимо с числом сложений для метода, использующего большие составные полиномиальные преобразования.