Обновления
Хрущовки
Архитектура Румынии
Венецианское Биеннале
Столица Грац
Дом над водопадом
Защита зданий от атмосферных осадков
Краковские тенденции
Легендарный город Севастополь
Новый Париж Миттерана
Парадоксы Советской архитектуры
Реконструкция города Фрунзе
Реконструкция столицы Узбекистана
Софиевка - природа и искусство
Строительство по американски
Строительтво в Чикаго
Тектоника здания
Австрийская архитектура
Постмодернизм в Польше
Промышленное строительство
Строительство в Японии
Далее
|
Главная -> Вычислительные алгоритмы Глава 6 ВЫЧИСЛЕНИЯ В СУРРОГАТНЫХ ПОЛЯХ Часто задачу вычисления в заданном поле можно вложить в другое поле, произвести там необходимые вычисления, а затем ответ вернуть в заданное поле. Целесообразность такого перехода может мотивироваться различными причинами. Может оказаться, что в новом поле необходимые вычисления выполнить легче, и это уменьшает объем работ или упрощает реализацию вычислений. Иногда электронные компоненты для вычислений в некотором поле доступнее, чем для заданного поля, и тогда, если требуемые вычисления допускают подходящую переформулировку, резоннее перейти в эго поле. Возможны ситуации, когда желательно разработать стандартный вычислительный модуль обработки больших массивов данных и использовать его при решении разнообразных задач для обработки дискретных сигналов. Подгонка одного типа вычислений к другому может осуществляться тогда с целью стандартизации. Другой важной причиной использования суррогатных полей является улучшение точности вычислений. Вычисления в полях Галуа не содержат погрешностей округления и поэтому всегда г точны. Если задачу вычисления в поле вещественных или комп- , лексных чисел удастся погрузить в поле Галуа, то это может при- j вести к увеличению точности результата. В большинстве задач,] обработки дискретных сигналов можно ограничиться вычисле- ниями с фиксированной запятой; обычно оказывается достаточной! 16-битовая арифметика с фиксированной запятой. Если поле! Галуа достаточно велико, чтобы содержать 16-битовые целые! числа, то в его пределах можно правильно осуществлять многие! целочисленные операции, если только результаты не выходят! за пределы 16-битовых целых чисел. 6.1. Свертка в суррогатных полях Свертка в поле вещественных чисел часто может быть зам нена сверткой в подходящем поле Галуа. В реальных задача! вещественные числа записываются в виде конечного числа д& сятичных или двоичных знаков; в цифровой обработке сигнале обычно используется запись с фиксированной запятой. Двоичное представление с конечным числом знаков может ограничиваться 12 или 16 битами. При вычислениях можно предполагать, что двоичная точка находится справа - все числа являются целыми. Сдвиг двоичной точки во входных данных с целью включения остальных случаев является очень простым делом. Итак, линейную свертку S (X) = g (X) d (X) в поле вещественных чисел мы заменяем сверткой в кольце целых чисел. Для этого нужно только входные данные интерпретировать как целые числа. Внешний вид уравнения, описывающего свертку, не меняется, но операции приобретают смысл стандартной целочисленной арифметики. Затем уравнение в кольце целых чисел можно погрузить в подходящее поле Галуа, скажем, простое поле Галуа, GF (р), если простое число р достаточно велико. Если все входящие в свертку целые числа положительны, то задающее простое поле GF (р) простое число р должнЬ быть столь большим, чтобы выходные коэффициенты свертки не превосходили р - 1. Тогда выполняется сравнение S (хУ е (х) d (х) (modp), и условие вычислений по модулю р излишне. Если Sj могут принимать и отрицательные значения, то задающее простое поле GF (р) простое число р надо выбирать так, чтобы Si попадали в диапазон - (р - 1)/2 < Sj < (р - 1)/2. Тогда отрицательные целые числа могут быть представлены положительными целыми числами в интервале от (р + 1)/2 до р - 1. Свертка в поле Галуаможет быть вычислена любым из пригодных в данном поле методов. Некоторые прямые методы рассматриваются в следующем разделе. Можно также воспользоваться преобразованием Фурье в данном поле и теоремой о свертке. На рис. 6.1 приводится сравнение такого вычисления в поле Галуа и в поле комплексных чисел. Мы видим, что на обеих сторонах рисунка выписаны одинаковые уравнения, хотя, конечно, заложенные в них арифметики различны. Так как циклическая свертка в поле Галуа приводит к тому же самому ответу, что и циклическая свертка в кольце целых чисел, то использование преобразования Фурье данного поля Галуа также приводит к правильному ответу. Так как арифметикой поля GF (р) является арифметика по модулю р, то переполнения по модулю р в промежуточных вычислениях роли не играют, но могут оказаться существенными в выходных вычислениях; если р выбрано достаточно большим, то переполнения в выходных данных невозможны. 1У4 1л. ь. Вычисления в суррогатных поляя 6.1. Свертка в суррогатных полях Выиисление ивлоиислеиной сввргт Процедура i: Вложение целых иисел 6 С ; арифметика поляС Процедура 2: Вложение целых чисел в 6F(p), арифметика поля 6F\P). S. = 0,D, Рис. six) 6.i. Сравнение двух процедур свертки. six) В качестве примера рассмотрим вычисление 5-точечной циклической свертки, S W = g W d W (mod X - 1). Выберем простое р равным 31 и будем работать в поле GF (31). Это по.те подходит к рассматриваемой задаче посто.чьку, поскольку нам известно, что коэффициенты свертки s (х) не превосходят 30. Для реально возникающих задач поле GF (31) слишком мало и мы его выбрали только для примера. Так как 5 делит р - 1 = 30, то в данном поле существует преобразование Фурье длины 5. Ядром преобразования можно выбрать элемент 2, так как его порядок равен 5. Пусть d = 2, rfi = 6, dj = 4, d3 = 4, d, = 0, go = 3, gi = 0,igj = 2, g, - 1, g4 = 2. 5-точечное преобразование вектора d задается равенствами Оь= S2 (ii, А = 0, 4; для вектора g имеют место аналогичные соотношения. В матричной записи соответственно имеем D. О, Таким образом, компоненты векторов-преобразований даются равенствами Do = 16, Dj = 0, = 5, D, = 29, = 22, G = 8, Gi = 20, Gj = 22, G3 = 0, Gj = 27. Перемножая и Gj, для S, получаем; S, = 4, S, = 0, = 17, S3 = 0, Sj = 5. Так как 5-25 = 1 в поле GF (31), то = 25. Стедовательно, обратное преобразование Фурье задается равенством
определяющим окончательный результат. Непосредственное вычисление этой свертки в кольце целых чисел дает тот же результат. Если мы выберем большие входные компоненты, то некоторые компоненты свертки окажутся больше 30. В этом случае вычисление св.фтки в GF (31) приведет к переполнению выходных компонент и даст неправильный результат. Тогда нужно использовать большее поле; в практических приложениях полезны поля, содержащие по меньшей мере 2° элементов. Если длина слова слишком велика для поля желаемой мощности, то можно воспользоваться китайской теоремой об остатках и работать с вычетами целых чисел, разбивая таким образом длинные слова на короткие подслова. Это использование китайской тео- ремы об остатках отличается от ее предыдущего использования при построении переупорядочивания линейного потока данных в таблицу. Теперь она используется только для разбиения самих чисел, не затрагивая индексацию данных: данные следуют в своем естественном порядке. Новые свертки, конечно, можно вычислять, используя опять китайскую теорему об остатках, но на сей раз, в отличие от предыдущего, она будет использоваться для вновь сформированных многочленов и их индексов. Пусть si обозначает вычет s, (mod mi) для г взаимно простых целых чисел mi, mj..... m,. Тогда -1 i = О.....L + N - I, sl = (modm,). 1 = 0, ... , Г, где gY = gi (mod mi) и = di (mod mi). По китайской теореме об остатках величины Sj восстанавливаются по вычетам sl -Следовательно, вычисление свертки, содержащей большие целые числа, мы свели к вычислению г сверток, содержащих малые целые числа. Для вычисления этих составляющих сверток можно пользоваться уже описанными способами или быстрыми алгоритмами вычисления сверток в кольце целых чисел. 6.2. Числовые преобразования Ферма Простейший вид алгоритмы вычисления преобразования Фурье имеют в полях Галуа вида GF {2 + 1), которые действительно являются полями, если р = 2 -f 1 - простое число. Известно, что число 2 -Ь 1 не является простым, если т не равно степени двух. Однако обратное утверждение неверно, так как число 2 + 1 является составным. Но при m = 2, 4, 8 и 16 число 2 -f 1 является простым, равным соответственно 5, 17, 257 и 65 537. Это множество целых чисел известно под названием простых чисел Ферма. Если q - простое число Ферма, то в поле GF (q) число q - 1 и любой его делитель равны некоторой степени двойки. Преобразование Фурье Vft = Ё * = 0.....п-1, определено, если п делит 2 и существует элемент ш порядка п ). Таким образом, в поле GF (2 + 1) определены преобразования Фурье длин 2 , 2, 2 , 2 2. Используя алгоритм Кули- Тьюки, преобразование Фурье в поле GF (2 + 1) можно пред- ставить в виде последовательности преобразований по основанию два. для реализации которой требуется всего лишь примерно (л/2) logs, п умножений и (я,2) log. п сложений. Преобразования длины 32 и меньше в поле (2-f 1) делаются на самом деле намного проще. Это обусловлено тем, что порядок элемента 2 в этом поле равен 32. Чтобы увидеть это, достаточно заметить, что 2 -f 1 = О в поле GF {2 + 1). Следовательно, 2 = -1 и 2 = 1. Преобразование Фурье записывается в виде Vs = Е 2 oi, к = 0.....31, и умножение в данной арифметической системе сводится просто к циклическому сдвигу, так как представляет собой умножение на степени двойки. Такое преобразование вычисляется чрезвычайно просто, но длина 32 слишком мала для многих приложений. В общем случае простого числа Ферма 2 + 1 порядок элемента 2 в поле GF (2 + 1) равен 2т, так что 2 может быть использовано в качестве ядра преобразования длины 2т. Для построения j]peo6pa30BaHHH Фурье длины 4т можно воспользоваться ядром > 2. В этих полях, как легко проверить возведением в квадрат и использованием соотношения 2 = -1, выполняется равенство у 2 = 2 (2 * - 1). Поэтому каждая степень элемента > 2 имеет вид 2 ± 2. Например, преобразование Фурье длины 64 в поле GF (2 + 1) записывается в виде k = Q, 63. } Такое преобразование Фурье называют часто числовым преобразованием Ферма. - Прим. перев. Если для этого вычисления воспользоваться БПФ-алгоритмом Кулн-Тьюки по основанию два, то все умножения на константы будут умножениями на чнсла вида 2 i 2* и, следовательно, могут быть реализованы как пара циклических сдвигов и вычитание. В общем случае поля GF {2 + 1) преобразование Фурье длины большей чем 2 всегда содержит нетривиальные умножения. Число этих умножений можно уменьшить сведением БПФ-алгоритма Кули-Тьюки в форму многомерного преобразования, в каждом из измерений которого используется не более чем 2т-точечное преобразование. Например, рассмотрим !024-точечное преобразование в поле {2 + п. 1023 = £ к = 0..... 1023, где 0) - элемент порядка 1024, который можно полагать равным п , где л - примитивный элемент поля. Элемент 3 в поле
|