Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
11.4. АЛГОРИТМЫ АГАРВАЛА—КУЛИ ВЫЧИСЛЕНИЯ СВЕРТОКТу же схему индексации, которая была использована в алгоритме Гуда-Томаса для превращения одномерного преобразования Фурье в многомерное преобразование Фурье, можно использовать для превращения одномерной свертки в многомерную. Этот метод разбиения свертки известен под названием алгоритма Агарвала-Кули вычисления свертки. Он не дает такого же уменьшения числа умножений, как алгоритм Винограда вычисления свертки, но зато и не имеет такой, как у алгоритма Винограда, тенденции роста числа сложений для больших В отличие от алгоритма Винограда для свертки, использующего китайскую теорему об остатках для многочленов, алгоритм Агарвала-Кули основан на китайской теореме об остатках для целых чисел и может быть использован только в тех случаях, когда длина
где двойные скобки у индексов обозначают вычисления по модулю Превратим эту одномерную свертку
При рассмотрении алгоритма Гуда-Томаса мы уже сипели, как определить новые индексы, чтобы они выполняли свое предназначение:
где
Тогда свертка записывается равенством
Двойное суммирование по паре
так что свертка задается выражением
где первые и вторые индексы берутся соответственно по модулю Для того чтобы описанный алгоритм был полезен, надо располагать эффективным способом вычисления двумерной циклической свертки. Применим вдоль каждого из двух измерений алгоритм Винограда вычисления свертки. Этот метод легче проследить, представив двумерную таблицу в виде одномерной таблицы многочленов. Определим множество
Аналогично определим
и
При этом двумерная свертка превращается в одномерную свертку многочленов:
Для каждого Для полного вычисления свертки алгоритмом Агарвала-Кули надо применить также алгоритм Винограда вычисления свертки по второму измерению. Но сначала остановимся и оценим сложность этих промежуточных вычислений. Пусть Так как алгоритм Винограда вычисления свертки представляет собой тождество, содержащее сложения и умножения, то можно заменить в нем арифметические элементы многочленами. Следовательно, Аналогично если длнна
Рис. 11.5. Характеристики некоторых алгоритмов Агарвала-Кули вычисления циклических сверток. (Используются алгоритмы коротких сверток, приведенные на рис. 11.1.) то алгоритм Агарвала-Кули позволяет преобразовать эту свертку в трехмерную или многомерную циклическую свертку и вычислять по каждому отдельному измерению циклическую свертку с помощью алгоритма Винограда. Структуру многомерной циклической свертки можно описать через одномерные циклические свертки также с помощью кронекеровского произведения (кронекеровское произведение будет описано в § 11.5). На рис. 11.5 приведена таблица мультипликативной сложности некоторых алгоритмов Агарвала-Кули вычисления циклической свертки в полях характеристики 2.
|
1 |
Оглавление
|