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