Аннотация
Предисловие к русскому изданию
От автора
Предисловие
Глава 1. Введение
1.2. Использование быстрых алгоритмов
1.3. Системы счисления для проведения вычислений
1 4. Цифровая обработка сигналов
1.5. История быстрых алгоритмов обработки сигналов
3адачи
3амечания
Глава 2. Введеиие в абстрактную алгебру
2.2. Кольца
2.3. Поля
2.4. Векторные пространства
2.5. Матричная алгебра
2.6. Кольцо целых чисел
2.7. Кольца многочленов
2.8. Китайские теоремы об остатках
3адачи
3амечания
Глава 3. Быстрые алгоритмы коротких сверток
3.2. Алгоритм Кука‒Тоома
3.3. Алгоритмы Винограда вычисления коротких сверток
3.4. Построение алгоритмов коротких линейных сверток
3.5. Вычисление произведения многочленов по модулю некоторого многочлена
3.6. Построение алгоритмов коротких циклических сверток
3.7. Свертки в общих полях и кольцах
3.8. Сложность алгоритмов свертки
3адачи
Замечания
Глава 4. Быстрые алгоритмы дискретного преобразования Фурье
4.2. Алгоритм Кули‒Тьюки по основанию два
4.3. Алгоритм Гуда‒Томаса быстрого преобразования Фурье
4.4. Алгоритм Герцеля
4.5. Вычисление преобразования Фурье с помощью свертки
4.6. Алгоритм Винограда для быстрого преобразования Фурье малой длины
3адачи
3амечания
Глава 5. Теория чисел и алгебраическая теория полей
5.2. Конечные поля, основанные на кольце целых чисел
5.3. Поля, основанные на кольцах многочленов
5.4. Минимальные многочлены и сопряжения
5.5. Круговые многочлены
5.6. Примитивные элементы
3адачи
Замечания
Глава 6. Вычисления в суррогатных полях
6.2. Числовые преобразования Ферма
6.3. Числовые преобразования Мерсенна
6.4. Алгоритмы свертки в конечных полях
6.5. Комплексная свертка в суррогатных полях
6.6. Преобразования в числовом кольце
6.7. Числовые преобразования Шевилла
6.8. Алгоритм Препараты‒Сервейта
3адачи
Замечания
Глава 7. Быстрые алгоритмы и многомериые свертки
7.2. Алгоритм Агарвала‒Кули вычисления свертки
7.3. Алгоритмы разложения
7.4. Итеративные алгоритмы
7.5. Полиномиальное представление расширений полей
7.6. Свертка в полиномиальных расширениях полей
7.7. Полиномиальиое преобразование Нуссбаумера
7.8. Быстрая свертка многочлеиов
3адачи
3амечания
Глава 8. Быстрые алгоритмы многомерных преобразований
8.2. Гнездовые алгоритмы преобразования
8.3. Алгоритм Винограда быстрого вычисления преобразования Фурье большой длины
8.4. Алгоритм Джонсона‒Барраса быстрого преобразования Фурье
8.5. Алгоритмы разложения
8.6. Улучшенный алгоритм Винограда быстрого преобразования Фурье
8.7. Перестановочный алгоритм Нуссбаумера‒Квенделла
3адачи
Замечания
Глава 9. Архитектура фильтров и преобразований
9.2. Алгоритмы для коротких секций фильтра
9.3. Итерирование секций фильтра
9.4. Симметрические и кососимметрические фильтры
9.5. Фильтры прореживания и интерполяции
9.6. Автокорреляция и взаимная корреляция
9.7. Устройства для вычисления БПФ
9.8. Преобразование Фурье ограниченного диапазона
3адачи
3амечания
Глава 10. Быстрые алгоритмы, основанные на стратегии дублирования
10.2. Структуры данных
10.3. Быстрые алгоритмы сортировки
10.4. Рекурсивное быстрое преобразование Фурье по основанию два
10.5. Быстрая транспозиция
10.6. Умножение матриц
10.7. Рекурсивный алгоритм Евклида
10.8. Вычисление тригонометрических функций
Задачи
Замечания
Глава 11. Быстрые методы решения теплицевых систем
11.2. Алгоритм Тренча
11.3. Алгоритм Берлекэмпа‒Месси
11.4. Рекурсивный алгоритм Берлекэмпа‒Месси
11.5. Методы, основанные на алгоритме Евклида
3адачи
3амечания
Глава 12. Быстрые алгоритмы поиска по решетке и по дереву
12.2. Алгоритм Витерби
12.3. Стек-алгоритм
12.4. Алгоритм Фано
3адачи
Замечания
Приложение А. Набор алгоритмов циклических сверток
Приложение Б. Набор малых БПФ-алгоритмов Винограда
Литература
Оглавление
Выходные данные
Text
                    БЫСТРЫ Е АЛГОРИТМБ1
ЦИФРОВОИ ОБРАБОТКИ СИГНАЛОВ


Fast Algorithms for Digital Signal Processing Richard Е. Blahut Addison-Wesley Publishing Company Reading, Nassachussetts Nen1o Park, СаИопца Wokingham, Berkshire Amsterdam Don Mills, Ontario Sydney 
Р Блейхут БЫСТРЫЕ АЛГОРИТМЫ ЦИФРОВОЙ ОБРАБОТКИ СИГНАЛОВ Перевод с английского К. И. Грушко Москва «Мир» 1989 
ББК 32.811 Б68 УДК 519.725 Блейхут P. Быстрые алгоритмы цифровой обработки сигналов: Пер. с англ. М.: Мир, 1989. 448 с., ил. ISBN 5-09-001009-2 Б68 1402030000 †1 041 (01)-89 ББК 32.811 Редсищия литературы ло математическим наукам 1$ВК 5-09-001009-2 (русск,) ISBbi 0-201-10155-6 (англ.) Copyright © 1985 by АсЫ1зоп-Rеs1ey Pub- lishing Сопiрапу, Inc. © перевод иа русский язык, «Мир», 1989 Книга американского специалиста, посвя щенная актуальным при- кладным задачам построения быстрых алгоритмов цифровой обработки сигналов (автор известен по его «Теории и практике кодов, контролирую- щих ошибки» (М.: Мир, 1986)). Для ускорения типичных для таких задач вычислений используется организация даниых в виде коиечиых алгебраи- ческих структур (групп, колец, полей), что позволяет применить структур- ные теоремы алгебры и теории чисел. В двух из двенадцати глав книги содержится краткое, ио строгое и систематическое изложеиие соответ- ствующих разделов математики, как правило, недостаточно известных инженерам-прикладникам. Для математиков-прикладииков, программистов, инженеров ‒ раз- работчиков систем обработки дискретных сигналов, студентов и аспиран- тов университетов. 
ПРЕДИСЛОВИЕ K РУССКОМУ ИЗДАНИЮ Предлагаемая читателю книга известного американского спе- циалиста в области теории информации и ее приложений P. Блей- хута посвящена построению быстрых алгоритмов цифровой об- работки сигналов вычислительных алгоритмов, повсеместно возникающих в таких приложениях, как все виды связи, радио- локация, радиоастрономия, цифровая голография, медицинская электроника и т. п. Отсутствие подобной книги остро ощущалось многими специалистами в перечисленных областях конструк- торами информационных систем различного назначения. В част- ности, P. Блейхут указывает, что он почувствовал ее необходимость во время работы над своей предыдущей книгой «Теория и практика кодов, контролирующих ошибки», в которую ему пришлось вклю- чить несколько специальных глав с описанием алгоритмов бы- строго вычисления преобразования Фурье, которые, конечно, никак не зависят от данного конкретного приложения. (Книга была переведена в !985 г. на русский язык и быстро разошлась.} Хотя в настоящую книгу вошли и алгоритмы решения тепли- цевых систем уравнений (возникающих в таких приложениях, как линейное предсказание, построение авторегрессионных фильт- ров, теория кодирования и др.), и алгоритмы быстрого поиска по древовидному графу (возникающие, например, при декодировании сверточных кодов), сердцевиной книги являются быстрые ал- горитмы преобразования Фурье и вычисления цифровой свертки (линейной и циклической). В основе таких быстрых алгоритмов лежит специальная орга- низация массивов данных в виде конечных алгебраических струк- тур (групп, колец, полей), что создает предпосылки для приме- нения структурных теорем алгебры и теории чисел. Это позволяет строить практически приемлемые алгоритмы, обеспечивающие работу цифровых процессоров в реальном масштабе времени. К настоящему времени накопился широкий ассортимент различ- ных по своей архитектуре и теоретическим предпосылкам алго- рйтмов, но пока инженеры-разработчики и программисты не зна- комы с их теоретическим обоснованием, вопрос о широком ис- пользовании этих алгоритмов остается открытым. Я,анная книга весьма удачно ликвидирует образовавшийся разрыв. С одной стороны, в ней в двух из 12 глав дается краткое, но строгое и систематическое изложение необходимых разделов алгебры и элементарной теории чисел, как правило, недостаточно известных инженерам-прикладникам. С другой стороны, в ос- Тальных 10 главах дается систематическое и исчерпывающее опи- сание накопленных к настоящему времени быстрых алгоритмов преобразования Фурье, вычисления цифровых сверток и решения 
6 Предисловие к русскому изданию систем теплицевых уравнений не только для привычных в ин- женерной практике полей комплексных и вещественных чисел, но и для гюлей Галуа. Енига несомненно будет полезна широкому кругу читателей математикам-прикладникам, программистам, инженерам-раз- работчикам систем обработки данных, а также может быть ре- комендована для включения в программу преподавания матема- тики будущим инженерам-конструкторам систем обработки ди- скретной информации. В. Н. Сифоров 
ОТ АВТОРА Подобно тому как дети перерастают своих родителей, книги могут выйти за рамки возможностей их авторов. Предлагаемый церевод книги «Быстрые алгоритмы цифровой обработки сигна- лов» является второй моей книгой, вышедшей из умелых рук HHHbI Грушко, которой я очень благодарен, как и за перевод первой моей книги «Теория и практика кодов, контролирующих ошибки». Мне известно, что не существует «быстрых алгоритмов» переводов, и поэтому я очень ценю тщательную работу над пере- водом и исправление опечаток, допущенных в английском из- дании. Я полагаю, что русские читатели найдут здесь много интерес- ного. Предмет книги, алгебраический по существу, тем не менее ближе к цифровой обработке сигналов, чем к математике. Я на- деюсь, что меня простят за почти полное незнание работ совет- ских авторов в данной области. Р. Э. Блейхут 
ПРЕДИСЛОВИЕ В настоящее время цифровая обработка сигналов переживает взрыв. Ее используют повсюду, включая радиолокацию, сейсмо- графию, связь, радиоастрономию н медицинскую электронику. Активно разрабатываются и находят рыночный спрос цифровые процессоры специализированные цифровые компьютеры для обработки сигналов. Такое широкое использование порождает еще более широкий спрос на цифровые процессоры, применяемые в некоторых случаях в массовых масштабах. Одним из путей удовлетворения этих потребностей является выбор разумно построенных алгоритмов. Вместо того чтобы повы- шать быстродействие процессора от одного миллиона умножений в секунду до пяти миллионов умножений в секунду, можно для некоторых задач попытаться так организовать вычисления, чтобы быстродействия в один миллион умножений в секунду оказалось достаточно. К настоящему моменту имеется хорошо разработанная теория, позволяющая подойти к решению задач с этих позиций. Она хорошо известна теоретикам, специалистам в данной области, но на практике инженеры-конструкторы часто пренебрегают ей, поскольку она пока недоступна в виде цельного учебного курса. Инженер-конструктор должен хорошо знать предмет, чтобы выб- рать алгоритм, нужный в данном конкретном приложении, среди смущающего разнообразия известных быстрых алгоритмов свертки или быстрого преобразования Фурье. Данная книга является результатом курса, прочитанного автором в Корнеллском университете и корпорации ИБМ под названием «Быстрые алгоритмы цифровой обработки сигналовв. Курс был построен с расчетом на стажирующихся инженеров- электриков и аспирантов первого года обучения; его целью было воспитание инженеров, которые свободно владеют предметом. Эта же цель является первой в данной книге. Второй целью является формирование широкого взгляда на состояние работ в области быстрых алгоритмов цифровой обра- ботки сигналов, который сможет стимулировать новые работы в будущем. Если собрать воедино все нити, то многое становится более очевидным. Например, перенесение БПФ-алгоритмов Кули Тычки, Гуда Томаса и Винограда в произвольное поле облегчило понимание взаимосвязи между многими последующими идеями. Я думаю, что важно различать быстрый алгоритм, функцию, которую он вычисляет, и приложение, в котором он используется. Это разные элементы, и, когда их смешивают, они могут терять свою ясность. Таким образом, я настаиваю на том, чтобы отли- чать дискретное преобразование Фурье от быстрого преобразования 
Яредисловив Фурье. Первое из них является преобразованием, а второе алгоритмом для вычисления первого. Подобно этому, алгоритм, Витерби не является методом вычисления последовательности максимального правдоподобия; он представляет собой алгоритм вычисления кратчайшего пути на решетке пути, который в не- которых приложениях будет путем максимального правдоподо- бия, но не обязан быть им. Но и тогда, когда кратчайший путь действительно является путем максимального правдоподобия, не следует смешивать определение максимального правдоподобия с алгоритмом вычисления его пути. В соответствии с этим подхо- дом в данной книге мало обсуждаются возможные приложения; после постановки задачи все внимание уделяется построению хорошего алгоритма ее решения. Обсуждение возможных при- ложений цифровой обработки сигналов следует искать в других источниках. Идея написания этой книги возникла во время работы над более ранней книгой «Теория и практика кодов, контролирующих ошибки». Во многих главах этой книги приходилось рассматри- вать быстрые алгоритмы вычислений в конечных полях, хотя по существу алгоритмы не зависели от выбранного поля. Я почувст- вовал, что стоило бы поместить эти алгоритмы в отдельную книгу, описать их независимо от использования и дополнить многими другими важными в цифровой обработке сигналов алгоритмами. Изложение затрагивает многие области теории вычислений и тео- рии алгоритмов. Однако в первую очередь нас интересуют инже- нерные задачи нахождения лучших алгоритмов цифровой обра- ботки сигналов; асимптотический анализ играет второстепенную роль. В настоящей книге используются разделы математики, которые могут быть незнакомы типичному читателю с инженерным обра- зованием. Поэтому в книгу включен весь необходимый математи- ческий аппарат и строго доказываются все теоремы. Мне представ- ляется, что если этому предмету предстоит стать самостоятельной и зрелой дисциплиной, то вся необходимая математика должна быть частью этой книги; ссылки на другие источники не могут быть адекватной заменой. Инженер не может уверенно овладеть предметом, если ему часто предлагается принять утверждение на веру или обратиться к своей математической библиотеке. Необходимая для построения быстрых алгоритмов математика содержится в гл. 2 и 5. Эти главы можно сначала прочитать бегло, но к ним следует возвращаться по мере необходимости. Одним из недостатков, которые некоторые читатели заметят в книге, является недостаточность рекомендаций по практиче- скому использованию алгоритмов. Такие темы, как длина машин- ного слова, погрешность округления и время работы алгоритма А на компьютере В, вообще не рассматриваются. Это сознательное 
10 Предисловив решение вызвано тем, что я не столь мудр, чтобы делать широкие обобщения по этим вопросам. В немногих встречавшихся мне исследованиях на эти темы всегда рассматривались узко сформу- лированные задачи, и я не доверяю любому общему выводу, сде- ланному на основе имеющихся данных. Мне кажется, что конструк- тору следует решать эти вопросы в контексте конкретной задачи и непосредственно изучать литературу, чтобы узнать, как посту- пают в аналогичных случаях другие конструкторы. Среди рассматриваемых в настоящей книге алгоритмов многие уже широко используются в практической деятельности. Другие станут важны в будущих приложениях, когда цифровая обработка сигналов будет более разнообразной и широко применяемой. Некоторая часть, возможно, никогда не станет полезной. Я стре- мился дать широкий обзор; какие из методов окажутся практи- чески важными, предстоит решить инженер ам-конструкторам в следующие несколько десятилетий. Сердцевиной книги являются описываемые в гл. 3 и 7 алго- ритмы циклической свертки и описываемые в гл. 4 и 8 алгоритмы быстрого преобразования Фурье. В гл. 7 и 8 описываются много- мерные аналоги алгоритмов гл. 3 и 4 соответственно, и при же- лании их можно читать сразу после этих глав. Изучение одномер- ных алгоритмов свертки и преобразования Фурье завершается лишь в контексте многомерных задач. Главы 2 и 5 представляют собой математические введения; некоторые читатели, возможно, предпочтут пользоваться ими как приложением, обращаясь к ним лишь по мере надобности. Главы б и 9 следует читать отдельно, следом за гл. 3 и 4. Главы 10, 11 и 12 в основном независимы; каждую из них вполне можно читать независимо от остального материала книги. 
БЛАГОДАРНОСТИ Тем, что я написал данную книгу, я больше всего обязан Шмуэлю Винограду. Без его существенного вклада в рассматривае- мую область она была бы бесформенной и намного более короткой. 9н щедро уделял мне время, проясняя многие моменты и просмат- ривая первоначальные наброски. Статьи Винограда, а также книга Нуссбаумера являются источниками большей части материала, обсуждаемого в этой книге. Книга не достигла бы своего нынешнего уровня без неодно- кратных рецензирований и критики. Я особенно признателен профессору Б. В. Диксону за несколько чрезвычайно подробных рецензий, которые сильно улучшили ее качество. Я также при- знателен профессору Тоби Бергеру, профессору К. С. Баррасу, профессору Дж. Гибсону, профессору Дж. Г. Проакису, про- фессору Т. Б. Парксу, доктору Б. Райсу, профессору И. Суги- яме, доктору В. Вандеркулку и профессору Дж. Вергезе за по- лезную критику. Книга не была бы написана без поддержки ком- пании «Интернейшнал Бизнес Машинз». Я глубоко благодарен ИБМ за эту поддержку, а также Корнеллскому университету за предоставленную возможность апробации первого варианта рукописи с помощью курса лекций. Самую важную поддержку мне оказала моя жена Барбара, без помощи которой эта книга никогда не была бы написана. 
Глава 1 ВВЕДЕНИЕ Вычислительные алгоритмы встречаются повсеместно, и эф- фективные варианты таких алгоритмов весьма высоко ценятся теми, кто ими пользуется. Мы рассматриваем в основном только некоторые типы вычислений, а именно те, которые связаны с циф- ровой обработкой сигналов и включают такие задачи, как цифро- вая фильтрация, дискретное преобразование фурье, корреляция и спектральный анализ. Наша основная цель состоит в описании современных методов цифровой реализации этих вычислений, причем нас интересует не построение весовых множителей в от- водах цифрового фильтра, а организация способа их вычисления при реализации фильтра. Нас также не интересует, зачем кому-то нужно, скажем, дискретное преобразование фурье; нас заботит только то, как можно вычислить это преобразование эффективно. Удивительно, что для решения столь узко специального вопроса разработана столь глубоко развитая теория. 1.1. Введение а быстрые алгоритмы Любой алгоритм, подобно большинству инженерных устройств, можно описывать либо через соотношение между входом и вы- ходом, либо детально объясняя его внутреннюю структуру. При- меняя к некоторой новой задаче методы цифровой обработки сигна- лов, мы сталкиваемся с заданием алгоритмов через соотношение вход-выход. При заданном сигнале или записанных некоторым образом данных основное внимание сосредоточивается на том, что надо с этими данными сделать, т. е. каков должен быть выход алгоритма, если на его вход подаются те или иные данные. При- мерами такого выхода служат профильтрованная версия входа или его преобразование фурье. Такая связь входа с выходом в ал- горитме математически может быть записана без детального вы- писывания всех шагов, необходимых для выполнения вычислений. С этой, опирающейся на вход-выход точки зрения, сама задача построения хороших алгоритмов обработки информации может быть трудной и тонкой, но в данной книге она не рассматрива- ется. Мы предполагаем что уже задан алгоритм типа вход-выход, 
1.1. Введение в быстрые алгоритмы описанный в терминах фильтров, преобразований фурье, интер- поляций, прореживаний, корреляций, модуляций, гистограмм, матричных операций и им подобных. Все такие алгоритмы могут бьггь записаны 'математической формулой, и, следовательно, вы- числены в прямом соответствии с этой записью. Такую реализа- цию алгоритма вычислений будем называть прямой. Кто-то может быть вполне удовлетворен прямой реализацией алгоритма; в течение многих лет большинство пользователей счи- тали такие реализации удовлетворительными, и даже сейчас некотороые из них так считают. Но с тех пор, как люди начали решать подобные задачи, другие люди начали искать более эф- фективные. пути их решения. Именно эту историю мы хотим рас- сказать историю быстрых алгоритмов. Под быстрыми алгорит- мами мы понимаем детальное описание вычислительной процедуры, которая не является очевидным способом вычисления выхода по данному входу. Как правило, быстрый алгоритм жертвует кон- цептуальной ясностью вычислений в пользу их эффективности. Допустим, что требуется вычислить число А, равное А = ас+ad+Ьс+bd. В том виде, как оно записано, это вычисление содержит четыре умножения и три сложения. Если число А надо вычислять много раз для различных множеств данных, то мы быстро заметим, что А = (а + ь) (с + и) представляет собой эквивалентную форму, требующую лишь одного умножения и двух сложений, так что она предпочтительнее исходной. Этот простенький пример весьма тривиален, но он на самом деле иллюстрирует большинство тем, о которых нам пред- стоит рассуждать. Все, что мы делаем, можно представлять себе как хитроумную расстановку скобок в вычислениях. Но для боль- ших задач быстрые алгоритмы не удается найти простым про- смотром вычислений; их построение потребует весьма развитой теории. Нетривиальным, хотя все еще простым примером служит бы- стрый алгоритм вычисления произведения комплексных чисел. Произведение комплексных чисел (e +- if) = (а + ib) ° (с ~- id) можно записать через умножения и сложения вещественных чисел: e = ac bd, f = ad + bc. Эти формулы содержат четыре вещественных умножения и два вещественных сложения. Если умножение более трудоемкая опе- 
14 Гл. l. Введение рация, чем сложение, to более «эффективный» алгоритм дается равенствами е= (а b)d +а(с d), f = (а Ь) d + Ь (с + d). В такой форме алгоритм содержит три вещественных умножения и пять вещественных сложений. Если в серии умножений комп- лексных чисел величины с и d суть константы, то члены с + d и с dтакже являются константами, ,и их можно вычислить заранее, независимо от процесса умножения. Тогда для вычисле- ния одного произведения комплексных чисел нам понадобится три вещественных умножения и три вещественных сложения. Мы обменяли одно умножение на одно сложение. Это может быть целесообразно, только если в конструкции процессора уда- стся воспользоваться этим преимуществом. Некоторые процес- соры сконструированы в расчете на использование четырех ве- щественных умножений для вычисления произведения комплекс- ных чисел; в этом случае преимущества улучшенного алгоритма теряются. Предваряя дальнейшие рассмотрения, задержимся на этом при- мере подольше. Рассмотренное выше умножение комплексных чисел можно представить в виде е с d а d c Ь где вектор [a, b ]~ представляет комплексное число а + jb, с d матрица представляет комплексное число с + jd и век- с тор (е, f1~ представляет комплексное число е + f. Такое матрич- но-векторное произведение является одной из форм записи про- изведения комплексных чисел. Другой алгорим дается матричным равенством с ‒ d 0 0 0 c+d 0 0 0 d е 1 0 1 Ь которое можно рассматривать как необычную форму разложения матрицы. (с d) 0 О 0 (c+d) 0 0 0 d 1 0 1 с ‒ d В сокращенной записи алгоритм дается равенством е а =BDA ь 
l.!. Введение в быстрые алгоригмы 15 где А матрица размера Зх2, которую мы назовем матрицей предсложений; D диагональная матрица размера 3 х 3, которая включает в себя все общие умножения алгоритма, и В матрица размера 2 х 3, которую мы назовем матрицей постсложений. Мы увидим, что многие из лучших процедур вычисления сверт- ки и дискретного преобразования Фурье могут быть приведены к такому же матричному виду, в котором центральная матрица является диагональной, а стоящие по ее бокам матрицы. содержат в качестве своих элементов только 0 и ~1. Структура таких бы- стрых алгоритмов сводится к серии сложений, за которой следует серия умножений, за которой следует другая серия сложений. В качестве последнего примера этого вводного раздела рас- смотрим быстрый алгоритм умножения матрицы. Пусть С = АВ, где А и В матрицы размеров (lxn) и (nxm) соответственно. Стандартное правило вычисления матрицы С дается правилами П с» ‒‒ ~, а,~Ь„~, 1 = 1,...,1, j = 1,..., т, k=1 и содержит в соответствии с этой записью nlm умноженчй и (и 1) lm сложений. Мы построим алгоритм, который почти в два раза уменьшает число умножений, но увеличивает число сложений, так что общее число операций слегка возрастет. Воспользуемся применительно к элементам матриц А и В тождеством а,b, +~b, = (а1+b,)(а, +b,) а,а, Ь,b,. Предположим, что п четно (в противном случае можно, не меняя произведения С, дополнить матрицу А нулевыми строками, а матрицу В нулевыми столбцами). Применяя выписанное тож- дество к парам строк матрицы А и к парам столбцов матрицы В, запишем n/2 с» = ~, '(а~, э 1+ b,~. ~) (а~,,ц + Ьм, 1 ~) 1=1 n/2 и/2 Е Qt 2Й 103, Ж Е Ь2Й-1, Ф2Й, J~г k=1 ' ' k=l J= l, т. Такая форма вычислений экономит умножения, поскольку второй член зависит только от ~ и его не надо перевычислять для каждого j, а третий член зависит только от j и его не надо пере- вычислять для каждого ~. Полное число умножений, необходи- мых для такого вычисления матрицы С, равно (1/2) nlm +-- + (1/2) п (l +- т), а полное число сложений равно (3/2) nlm + ~-1т +-- (n/2 1) (l + т). Яля матриц большого размера это 
16 Гл. 1. Введение Сложений иа точку Умножений на точку Алгоритм Прямое вычисление дискретного преобразования 1000х !000 БПФ-алгоритм Кули ‒ Тычки 1024х 1024 Гибридный БПФ-алгоритм Кули ‒ Т.ыоки/Винограда !000х 1000 БПФ-алгоритм Винограда 1008х 1008 БПФ-алгоритм Нуссбаумера ‒ Квендалла !008х 1008 8000 4000 Фурье 40 72.8 40 91.6 6.2 4Л 79 Рис. 1.1. Сравнение характеристик некоторых двумерных алгоритмов преобра- зования Фурье. составляет примерно половину числа умножений, необходимых в прямом алгоритме. Последний пример является хорошим поводом для предосте- режения относительно точности вычислений. Несмотря на то что число умножений уменьшается, описанный алгоритм более чувствителен к погрешностям округления, если не позаботиться об этом специально. Однако можно получить почти такую же точ- ность, как и в прямом алгоритме, если на промежуточных шагах вычислений ввести соответствующие масштабные множители. Вопрос о точности вычислений практически всегда в~ает при оцен- ке быстрого алгоритма, хотя мы обычно будем им пренебрегать. Иногда при уменьшении числа операций уменьшается и погреш- ность вычислений, поскольку уменьшается число источников этих помех. В других алгоритмах, хотя число источников помех вычисления уменьшается, ответ может быть столь чувствительным к одному или нескольким из них, что общая погрешность вычисле- ний увеличивается. Большая часть книги посвящена рассмотрению всего несколь- ких задач: задачам вычисления линейной свертки, циклической свертки, многомерных линейной и циклической сверток, дискрет- ного преобразования Фурье, многомерного дискретного преобра- зования Фурье, решению теплицевых систем уравнений и нахожде- нию пути на решетке. Некоторые из рассматриваемых методов заслуживают более широкого применения; особенно хороши алго- ритмы многомерного преобразования Фурье, если взять на себя труд разобраться в наиболее эффективных из них. Яля примера на рис. 1.1 приведено сравнение некоторых алгоритмов вычисле- ния двумерного преобразования Фурье. При приближении к концу списка повышение эффективности алгоритмов замедляется. Умень- шение числа умножений на одну точку вычислительной сетки на 
~.2. Использование быстрых алгоритмов 17 выходе от шести до четырех может показаться не очень сущест- венным после того, как уже получено уменьшение оТ сорока до шести. Но это недальновидная точка зрения. Это дальнейшее улу- чшение может вполне окупить затраты времени на разработку алгоритма при построении больших систем. Рис. 1.1 содержит другой важный урок. Вход таблицы, обозна- ченный как гибридный БПФ-алгоритм Кули Тычки/Винограда, соответствует алгоритму вычисления двумерного (1000 X 1000)- точечного преобразования Фурье, в котором на каждую точку сетки на выходе требуется 40 вещественных умножений. Этот пример может помочь развеять злополучный миф о том, что дис- кретное преобразование Фурье применимо только тогда, когда длина блока равна степени двух. На самом деле возможность циф- ровой обработки сигналов не ограничивается только такими дли- нами блоков; для многих значений длин блоков имеются хорошие алгоритмы. 1.2. Использование быстрых алгоритмов Сверхбольшие интегральные схемы, называемые чипами, те- перь стали доступными Чип может содержать порядка 100 000 логических элементов, и поэтому неудивительно, что теорию алгоритмов часто рассматривают как способ эффективной органи- зации этих элементов. Иногда выбор алгоритма позволяет су- щественно улучшить характеристики чипа. Конечно, их можно также улучшить, увеличив размер чипа или повысив его быстро- действие; эти возможности более широко известны. Предположим, что некто придумал алгоритм вычисления пре- образования Фурье, содержащий только пятую часть от числа опе- раций, входящих в другой алгоритм вычисления преобразования Фурье. Тогда, используя этот алгоритм, можно реализовать та- кое же улучшение характеристик чипа, которое получается при увеличении в пять раз его размера или его быстродействия. Яля реализации улучшения конструктор чипа должен, однако, перенести архитектуру алгоритма в архитектуру чипа. Непроду- манная конструкция может свести на нет это преимущество, уве- личивая, например, сложность индексации или поток вход-вы- ход. Разработка оптимальных конструкций в эпоху больших интегральных схем невозможна без понимания быстрых алгорит- мов, описываемых в данной книге. С первого взгляда может показаться, что эти два направления быстродействующие интегральные схемы и быстрые алгоритмы конкурируют между собой. Если можно построить достаточно большие и достаточно быстродействующие чипы, то вроде бы нет ничего страшного в том, что используются неэффективные алго- ритмы. В некоторых случаях такая точка зрения не вызывает сом- 
18 Гл. 1. Введение нений, но заведомо имеются случаи, в которых можно высказать диаметрально противоположную точку зрения. Большие цифровые процессоры часто сами создают потребность в разработке быстрых алгоритмов, так как размерность решаемых на них задач растет. Будет ли процессорное время алгоритма, предназначенного для решения некоторой задачи, пропорционально n' или и', несущест- венно при и, равном 3 или 4, но при и, равном OOOO, это стано- вится критичным. Рассматриваемые нами быстрые алгоритмы связаны с циф- ровой обработкой сигналов, и их приложения столь же широки, сколь и приложения самой цифровой обработки сигналов. Теперь, когда стало практичным разрабатывать изощренный алгоритм цифровой обработки сигналов, который может быть реализован конструктивно посредством одного чипа, хотелось бы иметь воз- можность выбрать такой алгоритм, который оптимизирует ха- рактеристики этого чипа. Но для больших чипов это невозможно сделать без достаточно развитой теории. В своем полном объеме такая теория существенно выходит за рамки включенного в дан- ную книгу материала. Чтобы учесть все аспекты сложности, надо рассматривать и такие продвинутые разделы теории логических схем и архитектуры компьютеров, как параллельное или конвей- ерное исполнение. Для оценки алгоритма обычно используют число необходимых умножений и сложений. Эти вычислительные характеристики почти исчерпывают сложность устройства на уровне алгоритма. На более низком уровне оно оценивается площадью чипа или числом логических элементов на нем и временем, необходимым для про- ведения вычислений. Часто в качестве критерия качества схемы используется произведение времени на площадь. Яы не будем пытаться оценивать характеристики на этом уровне, так как это выходит за рамки задач конструктора алгоритмов. Актуальность рассматриваемых в данной книге вопросов нельзя оценить без понимания масштабов будущих приложений цифровой обработки сигналов. В настоящее время мы не можем угадать даже размеры таких систем, но достаточно просто можно предви- деть приложения, в которых объем необходимых вычислений будет на несколько порядков больше, чем тот объем, обработку которого может обеспечить современная технология. Системы звуковой локации в последнее десятилетие стали почти полностью цифровыми. Хотя полоса частот, в которой они работают, равна всего нескольким килогерцам, эти системы вы- полняют десятки миллионов или сотни миллионов умножений в секунду и еще больше сложений. Такие системы уже сейчас нуждаются в мощном цифровом оборудовании, и стали обыч- ными проекты, требующие еще более мощной цифровой тех- ники. 
! .2 Исгользование быстрых алгоритмов Радиолокационные системы тоже становятся цифровыми, нс многие важные функции по-прежнему реализуются традиционной микроволновой или аналоговой схемотехникой. Для того чтобь~ увидеть колоссальные потенциальные возможности использования цифровой обработки сигналов в радиолокации, достаточно п-.ìå тить, что радиолокационные системы в принципе очень гк:.' жи на системы звуковой локации, отличаясь от них тем, что испо.и.зу емая полоса частот в IOOO или более раз больше. Цифровая обработка сейсмической информации является глав ным методом разведки земных недр, в частности одним из важней- ших методов поиска залежей нефти. Обработкой больших пакетов лент данных занято все процессорное время многих компьютеров, но многие вычисления остаются невыполненными. Компьютерная томография представляет собой широко исполь- зуемый ныне способ объемного синтеза изображений внутренних органов человека с помощью множественных проекций, получае мых при просвечивании рентгеновскими лучами. Разрабатыва- ются алгоритмы, позволяющие существенно снизить дозы облу- чения, но требования к цифровой обработке намного превосходят все практически приемлемые в настоящее время. Изучаются и другне способы получения изображений для медицинской диаг- ностики, в том числе с помощью ультразвука, ядерного магнит- ного резонанса или радиоактивных изотопов. Неразрушающий контроль качества подукции, например от- ливок, возможен с помощью воссоздаваемых на компьютере изоб- ражений внутренних областей изделия по результатам эхолока- ЦИИ. В принципе обработка сигналов может быть использована для улучшения качества плохих фотографий, смазанных движением камеры или расфокусировкой. Однако такая цифровая обработка требует большого объема вычислений. Обработка на цифровом процессоре спутниковых фотографий позволяет совместить несколько изобр ажений или выделить осо- бенности, или скомбинировать полученную.на различных длинах волн информацию, или создать синтетический стереоскопический образ. Например, в метеорологических исследованиях можно соз- дать подвижное трехмерное изображение облачного покрова, движущегося над поверхностью земли, используя для этого после- довательность спутниковых фотографий. снятых с нескольких то- чек. Можно указать и другие приложения быстрых алгоритмов для цифровой обработки сигналов, но уже приведенных достаточно для того, чтобы доказать, что потребность в них существует и продолжает расти. Каждое из описанных приложений связано с большим коли- чеством вычислений, структура которых, однако. чрезвычай но 
20 Гл. 1. Введение прозрачна и сильно упорядочена. Кроме того, если цля решения некоторой задачи уже создан жесткий модуль или подпрограмма, то они и будут постоянно использоваться для этой задачи. Имеет смысл затратить усилия на разработку добротной схемы, так как хорошие операционные характеристики намного важнее стои- мости разработки. 1.3. Системы счисления для проведения вычислений Во всей книге, говоря о сложности алгоритма, мы имеем в виду число умножений и сложений, поскольку эти операции выбраны в качестве единиц измерения сложности. Кто-то может захотеть пойти дальше и, чтобы подсчитать число необходимых битовых операций, поинтересоваться тем, как построено устрой- ство умножения. Структура умножителя и сумматора суще- ственно зависит от вида представления данных. Хотя вопро- сы, связанные с системами счисления, выходят за рамки данного курса, несколько слов во введении об этом сказать сле- дует. Возьмем крайний случай, полагая, что основная часть вы- числений состоит из умножений. Тогда сложность можно понизить, записывая данные в логарифмическом виде. Сложение при этом станет более трудоемким, но если сложений не слишком много, то общий результат улучшится. Тем не менее, как правило, мы будем полагать, что входные данные записываются в одном gз естественных видов как вещественные, как комплексные или как целые числа. В практической реализации процессоров для цифровой обра- ботки сигналов имеются еще более тонкие вопросы; используются формы записи числа как с плавающей, так и с фиксированной точ- кой. Для большинства задач цифровой обработки вполне доста- точной оказывается арифметика с фиксированной точкой и в этих случаях ее и надо выбрать из соображений экономичности. Этого положения не следует придерживаться слишком строго. Всегда есть соблазн избавиться от многих трудностей проектирования, перейдя к арифметике с плавающей точкой. Однако если чип или алгоритм предназначены для одного-единственного применения например цифровой фильтр для цифровой радиосхемы массового выпуска, то не стоимость разработки этого чипа играет основ- ную роль; решающую роль играют эксплуатационные характери- стики изделия и стоимость его тиражирования. Деньги, затрачен- ные на облегчение работы конструктора, нельзя потратить на улучшение характер истик. 
1.3. Системы счисления для проведения вычислений 21 Неотрицательное целое число J, меньшее, чем д, в т-сим- вольной позиционной арифметике с фиксированной точкой по основанию д записывается в виде i =1О+11Ч+1аЧ'+ -+1 -И ' o <1и <Я. Число 1 представляется т-последовательностью коэффициентов (lo jx " ' 11) '). 1'lмеется несколько способов учета знака числа с фиксированной точкой; эти способы записи отрицательных чисел называются соответственно прямым кодом, дополнительным кодом и обратным кодом. При любом основании q правила такого представления одни и те же. В двоичном случае, д = 2, дополни- тельный и обратный коды иногда называются соответственно 2-дополнительным и 1-дополнительным. Наиболее прост для понимания прямой код. Для записи знака числа в нем выделяется специальная позиция, которая называется знаковой и в которую записывается О, если число положительно, и 1, если число отрицательно. В процессе выполнения операций сложения и умножения знаковая позиция обрабатывается от- дельно от значимых позиций. Часто предпочтение отдается допол- нительному или обратному кодам, поскольку они проще реали- зуются в жестком исполнении; сумматор просто складывает два числа, не делая различия между знаковой и значащими позициями. Как прямой, так и обратный коды приводят к двум разным запи- сям нуля положительной и отрицательной, которые следует полагать равными. В дополнительном коде нуль записывается однозначно. В обратном коде изменение знака числа получается заменой каждой цифры 1, включая и знаковую цифру, на q 1 j. Например, взятое с обратным знаком десятичное число +62 (ко- торое записывается как 062) равно в обратном коде 937, а взятое с обратным знаком двоичное число +011 (которое записывается как 0011) равно в обратном коде 1100. Обратный код обладает тем свойством, что для умножения любого числа на минус один достаточно каждую цифру заменить ее дополнением до q l. В дополнительном коде изменение знака каждого числа полу- чается прибавлением единицы к записи этого числа в обратном коде. По определению минус нуль равен нулю. При таком согла- шении взятое с обратным знаком десятичное число +62, которое записывалось как 062, равно в дополнительном коде 938, а взятое с обратным знаком двоичное число -+011, которое записывалось как 0011, равно в дополнительном коде 1101. 1) 5 стандартной позиционной записи наиболее значимая цифра распола- гается не справа а слева, так что число записывается в внде Ц„, » )~», у» 1,). ‒ cpu~. Р . 
22 Гл. 1. Введение 1.4. Цифровая обработка сигналов Наиболее важной задачей цифровой обработки сигналов явля- ется задача фильтрации длинной последовательности чисел, а наи- более важным устройством цифровой фильтр. Как правило, длина последовательности данных заранее неизвестна и является столь большой, что ее можно полагать при обработке бесконечной. Числа, составляющие последовательность, являются обычно либо вещественными, либо комплексными, но нам предстоит работать и с другими видами чисел. Цифровой фильтр представляет собой устройство, формирующее новую числовую последовательность, называемую выходной последовательностью, по заданной после- довательности, которая теперь называется входной последователь- ностью. Широко используемые фильтры можно строить из эле- метов, схемы которых приведены на рис. 1.2 и которые называются разрядами регистра сдвига, сумматорами, умножителями на скаляр и умножителями. Разряд регистра сдвига содержит одно число, которое поступает на его выход. В дискретные моменты времени, именуемые тактами, разряд регистра сдвига замещает содержащееся в нем число числом, поступающим на его вход, отбрасывая предыдущее содержимое. Как показано на рис. 1.3, регистр сдвига представляет собой несколько соединенных в цепь разрядов регистра сдвига. Регистр сдвига называется также линией задержки. Мы будем рассматривать два наиболее важных типа регистров сдвига, известных под названием фильтра с конечным импульс- ным откликом (КИО-фильтр) и авторегрессионного фильтра. КИО-фильтр, как показано на рис. 1.4, представляет собой просто линию задержки с отводами, в которых выход каждого разряда умножается на фиксированную константу, а результаты склады- ваются вместе. Как показано на рис. 1.5, авторегрессионный фильтр также является линией задержки с отводами, но с обрат- ной связью, соединяющей выход со входом. Выходная последо- вательность КИО-фильтра равна линейной свертке входной пс следовательности и последовательности, описываемой весовыми множителями в отводах фильтра. Линейная свертка является едва ли не самой общей вычисли- тельной задачей цифровой обработки сигналов, и большую долю времени мы потратим на исследование вопроса ее эффективной реализации. Еще больше времени мы уделим методам эффектив- ного вычисления циклической свертки. Это может показаться странным, так как в приложениях циклическая свертка возникает естественным образом не столь уж часто. Наше внимание к цикли- ческой свертке обусловлено тем, что для ее вычисления имеется много хороших алгоритмов. Это позволяет разработать быстрые методы вычисления очень длинных линейных сверток, связывая вместе много циклических сверток. 
f.4. Цифровая обработка сигналов 23 Paapad регистра сдВига а+ Р Умиритель на eoecrnaemg Сумматор Умном инва Рис. 1.2., Элементы схем. Рис. 1.3. Регистр сдвига. ° .- ° ~Z À.~О ° ° е +2 ° +I ° ~0 Рис. 1.4. КИО-фильтр. L р;= ‒ Qh,ó.;+ а Рис. 1.5. Авторегрессивный фильтр. Для заданных двух последовательностей последователь- ности данных d= fd;, i=0, ..., N ‒ 1} и последовательности фильтра g = {g;, i = 0, ..., ~. ‒ 1}, s= (s;, i=0,..., L+N 2}, элементы которой определяются р авенствами N ‒ 1 s;= g g<„d„, i=O,..., L+N, 2, @=О где N длина блока данных и L длина фильтра, линейной сверткой называется новая последовательность 
24 Гл. 1. Введение а длина выходного блока равна L -+- N 1; последовательность s называется выходной или сигнальной. В записи свертки подразу- мевается, что g;- > ‒‒ 0 при 1 ‒ k < О. Так как все компоненты последовательности g умножаются на все компоненты последова- тельности d, то прямой метод вычисления свертки содержит И' умножений. Имеется очень разработанная теория построения КИОфильт- ров, связанная с выбором длины Ь и весовых множителей {g;». Эгот аспект теории конструкций фильтров мы не рассматриваем; предметом наших исследований являются быстрые алгор итмы вычисления выходной последовательности s по заданным после- довательностям фильтра g и входа d. Со сверткой тесно связана еще одна величина, которая назы- вается корреляцией и определяется равенствами N ‒ 1 ~i = Z gi+hdhe !=о i=0, ..., L+N 2, где g;-,> ‒ ‒ 0 при i + k )~ ~'. Корреляцию можно вычислять как свертку, если просто прочитать одну из определяющих ее последо- вательностей в обратном порядке. Все способы вычисления ли- нейной свертки легко преобразуются в способы вычисления корреляции. Свертку можно записать также через многочлены. Пусть N ‒ 1 L ‒ 1 d (х) = g d;x' и g (х) = f g;xi. к=о к=о Другой формой свертки, тесно связанной с линейной сверткой, является циклическая свертка. Для заданных двух последова- тельностей {d;, ~ = О, ..., п 1} и {g;, i = О, ..., п ‒ 1» с одной и той же длиной блока п циклическая свертка {з~, 1 = О, ..., п 1» с длиной блока п определяется равенствами ЕiИ-1 Тогда з(х) = g(x) d(x), где s(x) = g s;x'. Эти равенства легко к=о проверяются простым вычислением коэффициентов произведения g(x) d (х). Можно, конечно, записать также равенство s (х) = =d(x)g(x), из которого становится очевидной симметричная роль последовательностей g u d в определении свертки. Таким образом, линейная свертка может быть записана в эквивалентном виде как L ‒ 1 si = Z gkdt-й. @=о 
25 1.4. Цифровая обработка сигналов где двойные скобки означают, что вычисления над индексами про- изводятся в арифметике по модулю п (см. равд. 2.6). Иными сло- вами, ((п Й)) = п Й (mod п) и 0 < ((п Й)) ( п. Заметим, что в циклической свертке при каждом ~ каждое d> умножается на значимую величину g((z >)). Это существенное отличие от линейной свертки, в которой d> часто умножается на член д, >, индекс которого выходит за диапазон определения последова- тельности g, так что соответствующая компонента g > равна нулю. Циклическую свертку можно связать с линейной следующим образом. По определению циклической свертки Разделим эту сумму на две, выделяя в первую сумму члены, ин- дексы которых удовлетворяют условию i Й >~ 0 (или Й.( i), а во вторую члены, индексы которых удовлетворяют условию Й(0 (или k)i): 2 n ‒ 1 sr = g gr rrdrr+ g gn+r~dü ~=О Ь=g~1 Полагая теперь в первой сумме g;> ‒ ‒ О при k > 1, а во второй g„+, > ‒ ‒ О при k < t, можно изменить границы суммирования и получить связь циклической и линейной сверток в виде n ‒ 1 n ‒ f si = Е яг ‒ мЦ+ Z gn+r adrr з~+ sll+r ~ =О,..., п k~ @=О n ‒ 1 n ‒ 1 d (x) = g с~,х', g (x) = g д;х' к=о к=о Скажем, что члены последовательности s, индексы которых больше и 1, «вкладываются» обратно в члены, индексы которых мень- ше и. Если второй член выписанной выше суммы равен нулю, то линейную свертку можно вычислять как циклическую. Это воз- можно, если произведения д'„; >d> равны нулю для всех t u k. Чтобы обеспечить эти условия, можно так выбрать длину и цик- лической свертки, чтобы она была больше, чем N + L 1 (по- полняя нулями g u d до длины блока и). Тогда для вычисления линейной свертки можно пользоваться алгоритмом вычисления циклической свертки и получать при этом правильный ответ. Циклическую свертку можно также выразить в виде произве- дения многочленов. Пусть 
26 Гл. 1 Введение då- Iâ ° 1 ~ь ~ю-1е - ° э daå da ххк с„' c~ ° c0 хх% t Выбрать среднце г то ~ек д wovecmde компонент циклической с8ертки Рис. 1.6. Использование КИО-фильтра для формнрования циклической свертки. и s (х) = g (х) d (х). Циклическая свертка вычисляется по много- члену s (х) «обратным вложением» членов высшего порядка. Это можно представить в виде записи s'(х) = s (х) (mod х" 1), где равенство по модулю х" ‒ 1 означает, что s' (х) равен остатку от деления многочлена s (х) на многочлен х" 1. Таким образом, s'(õ) = g (х) d (х) (mod х" 1) Для приведения многочлена g (x) d (х) по модулю х" 1 доста- точно заменить х" на 1, или, что эквивалентно, член х"+~ с поло- жительным» на член х'. Это соответствует формированию величин я~ =я~+я„+~, i =0, °, п 1, и, следовательно, позволяет вычислить коэффициенты цикличе- ской свертки. Так как s' (х) = d (х) g (х) = g (х) d (х) (mod х" ‒ 1), то ясно, что векторы d u g играют в определении свертки сим- метричную роль, так что циклическая свертка задается двумя эквивалентными равенствами л3 si = Е gags ‒ »y>d» = П ‒ g = g d<<g»>>g», 1=0,.', п 1. 1=0 На рис. 1.6 приведена схема КИО-фильтра, вычисляющего циклическую свертку, для чего последовательность d повторя-, ется дважды. На выходе КИО-фильтра формируется последова- тельность из Зп 1 компонент, среди которых содержатся и последовательных компонент, равных компонентам циклической свертки. 
1.4. Цифровая обработка сигналов 27 Более важным для приложений является использование цик- лической свертки для вычисления длинной линейной свертки. В быстрых алгоритмах вычисления длинной линейной свертки входная последовательность разбивается на короткие секции, со- держащие иногда несколько сотен отсчетов. Для формирования потока данных на выходе секции обрабатываются поочередно зачастую методом циклической свертки. Такие способы назы- ваются методами с перекрыпшем; в этом названии отражается тот факт, что неперекрывающиеся секции в потоке входных дан- ных приводят к перекрывающимся секциям в потоке выходных данных, а перекрывающиеся секции в потоке входных данных приводят к неперекрывающимся секциям в потоке выходных данных. Работа показанного на рис. 1.5 авторегрессионного фильтра также может быть описана в терминах полиномиальной арифме- тики. Но если КИО-фильтр вычисляет произведение многочленов, то авторегрессионный фильтр выполняет деление многочленов. А именно, при фильтрации конечной последовательности в авто- регрессионном фильтре (с нулевым начальным состоянием) на выходе фильтра формируется последовательность коэффициентов многочлена-частного, получаемого пр и делении многочлена, коэффициенты которого равны компонентам входной последо- вательности, на многочлен, коэффициенты которого задаются весовыми множителями в отводах фильтра; к моменту завершения ввода входной последовательности содержимое фильтра равно коэффициентам многочлена-остатка от такого деления. Напомним, что авторегрессионный фильтр описывается равенством L Ру = Е hipi-z + ~Ъ к=о где а; есть j-A символ на входе, à h; весовой множитель в 1-м отводе фильтра. Определим многочлены а (х) = ~, 'а,х' и и (х) = g й;х' 1=О и запишем равенство а (х) = Q (х) h (х) + г (х), где Q (х) н r (х) обозначают соответственно частное и остаток в алгоритме деления многочленов. Тогда отсчет р; на выходе фильтра равен в точности j-My коэффициенту многочлена-част- ного, а коэффициенты многочлена-остатка r (х) будут записаны в самых левых разрядах регистра сдвига авторегрессионного фильтра после того, как на его вход будут поданы все п коэффи- циентов а> делимого. 
28 Гл. 1. Введение Другим очень важным в цифровой обработке сигналов видом вычисления является дискретное преобразование Фурье (с этих пор называемое в дальнейшем просто преобразованием Фурье). Пусть ч = (о;, i = 0, ..., п 1} обозначает вектор с веществен- ными или комплексными компонентами. Преобразованием Фурье вектора v называется вектор V длины и с комплексными компо- нентами, задаваемыми, равенствами 1 Vz = g и'~v;, k =0,..., п 1, Е=0 где со ‒ g-/2ï/ë и / у~ 1 ) Иногда это определение записывается в матричном виде V =Ò÷. Если раскрыть эту запись, то она принимает вид 1 ... 1 00 ~0 V~ V2 1 1 02 ~1~Ю- 1 (1)4 (~2 (n ‒ g) 1 а 1 о)2 ~n ‒ 1 ~2 (n ‒ 1) ll-1 «V» Если вектор V равен преобразованию Фурье вектора ч, то вектор v можно вычислить по вектору V с помощью обратного преобразования Фурье, задаваемого равенством n ‒ 1 0 1 О~ ‒ Ей~ и Доказательство этого факта дается следующими выкладками. n ‒ g n ‒ 1 и ‒ Ь. ~|~~ со ‒ еа~/ g го ‒ жа g со!/гп Й-0 k~ 1=0 и†~ и†~ 4ã (l ‒ Е) Е=О ' .=0 Если l = 1, то сумма по Й, очевидно, равна и, а если l не равно ~, то сумма приводится к виду Пй (о> ‒ ( I ‒ к1)а ‒ (l ‒ Е) 1) Во всей книге буква j используется и для обозначения к' ‒ 1 и в каче- стве индекса. Это не прнводит, однако, ни к какой путанице. 
29 !.5. История быстрых алгоритмов обработки сигналов Так как ж-" = 1, то справа стоит нуль. Следовательно, n ‒ l n ‒ О Z и ‒ '~Vs = Z о~ (пбц) = пи,, A=O l=O тогда и только тогда, когда их преобразования Фурье удовлетво- ряют равенствам E> ‒ ‒ FqGq, k =0,..., и 1. Это утверждение вытекает из того, что n ‒ 1 n ‒ 1 1 е, =$ f(( ((» ‒ "(О„] = /=О А=О n ‒ 1 n ‒ 1 n ‒ 1 1 а) ‒ fkQ а)(к ‒ I) kf ! 8AG Р и и А=О l~ А=О Поскольку е есть обратное преобразование Фурье от Е, то Mbl заключаем, что Е~ = G>F~. Можно также определить двумерные преобразования Фурье, которые полезны при обработке двумерных таблиц данных, и многомерные преобразования Фурье, которые используются при обработке многомерных массивов данных. Двумерное пр еобразо- вание Фурье определяется равенствами в ‒ 1 n" ‒ 1 й' = О, ..., и' 1, k-= g g(0 P og g», Г=О Ю.=о ' ~ =~4- ° °, ~ где у ~/ 2Я/фф и р ~/2 Я/Я» 1.5. История быстрых алгоритмов обработки сигналов Историю быстрых алгоритмов обработки сигналов принято отсчитывать с момента, когда в 1965 г. Кули и Тычки опублико- вали свой быстрый алгоритм вычисления преобразования Фурье (БПФ-алгоритм}, хотя на самом деле эта история началась намного где 6;< ‒ ‒ 1 при 1 = 1 и о;< ‒‒ О в противном случае. Между циклической сверткой и преобразованием Фурье име- ется очень важная связь, которая известна как теорема о свертке и формулируется следующим образом. Вектор е равен цикличе- ской свертке векторов f и g, n ‒ 1 Z f((c — t))gt\ й О\ ( и ~( /=О 
.Ю Гл. 1, Введение раньше. Указанная публикация [51 появилась как раз в нужный момент и послужила катализатором применения метода цифровой обработки сигналов в новом контексте Вскоре после опублико- вания этой работы Стогхем [61 заметил, что БИФ-алгоритмы могут служить удобным способом вычисления сверток. Технология циф- ровой обработки может непосредственно использовать БИФ, так что имеется множество приложений, и поэтому работа Кули и Тычки стала ширко известной. Лишь несколько лет спустя было осознанно, что другой БИФ-алгоритм, сильно отличающийся оТ алгоритма Кули Тычки, был р азработан раньше Гудом 17 ] (1960) и Томасом [81 (1963). В свое время публикация БПФ-ал- горитма Гуда Томаса прошла почти незамеченной. Позже Ви- ноград [9, 101 (1976, 1978) опубликовал свой более эффективный, хотя и более сложный, БПФ-алгоритм, который к тому же позво- лил значительно глубже понять, что в действительности озна- чает процесс вычисления дискретного преобразования Фурье. Неблагоприятным следствием популярности БПФ-алгоритма Кули ‒ Тычки явилось широкое распространение мнения о том, что дискретное преобразование Фурье практично применять лишь при длине блока, равной степени двух. Это привело к тому, что БИФ-алготитмы стали диктовать парамегры применяемых устройств вместо того, чтобы приложения диктовали выбор под- ходящего алгоритма Б ПФ. На самом же деле хорошие Б ПФ- алгоритмы существуют практически для произвольной длины олока. Различные вариации БИФ-алгоритма Кули Тычки появи- лись во многих обличьях. По существу та же самая идея исполь- зуется для построения многолучевой плоско-фазированной радио- локационной антенны и известна под иазванием матрицы Батлера [11] (1961). Для малых длин блоков быстрые алгоритмы сверток были впервые построены Агарвалом и Кули [12] (1977) с использова- иием остроумных догадок, но не на основе общего метода. Общий метод построения быстрых алгоритмов свертки описал Виноград [101 (1978), доказав при этом важные теоремы несуществования лучших алгоритмов свертки для полей комплексных и веществен- ных чисел. Агарвал и Кули [12[ также указали основанный на китайской теореме об остатках метод разбиения задачи вычисле- ния длинных сверток на задачи вычисления коротких сверток Их метод в сочетании с методом Винограда, применяемый для вычисления коротких сверток, дает хорошие результаты. Самая ранняя идея того, что мы предпочитаем называть быст- рыми алгоритмами, появилась намного раньше, чем БПФ-алго- ритмы, Алгоритм Левинсона [131 был опубликован в 1947 г. как эффективный метод решения некоторых теплицевых систем ~равнений. Несмотря на чрезвычайную важность этого алгоритма 
Задачи s обработке сейсмических данных, литература, посвященная ал- горитму Левинсона, многие годы не пересекалась с литературой по БПФ-алгоритмам. Как правило, в этих ранних исследованиях не делалось попыток явно разграничить алгоритм Левинсона как вычислительную процедуру и задачи фильтрации, н решению которых алгоритм применялся. Подобно этому, не всегда прово- дилось различие между БПФ как вычислительным средством и дискретным преобразованием Фурье, для вычисления которог(о используются БПФ-алгоритмы; аналогично зачастую не разли- чались алгоритм Витерби как вычислительная процедура и задача поиска пути, к решению которой применяется алгоритм Витерби. Задачи 1.1. Построить алгоритм 2-точечной вещественной циклической свертки (з~х+ з()) = (g>x+ g()) (d~x+ Q) (mod х~ ‒ 1), содержащий два умножения и четыре сложения. Относящиеся к go и g1 вычисле- ния не учитывать, полагая их константами, для которых все вычисления выпол- няются заранее ра3 и навсегда. 1.2. Опираясь на задачу 1.1, построить алгоритм 2-точечной комплексной свертки, содержащий только шесть вещественных умножений. 1.3. Построить алгоритм 3-точечного преобразования фурье k=O, 2, 2, в котором имеется только два вещественных умножения. 1.4. Доказать, что не существует алгоритма умножения двух комплексных чисел, содержащего только два вещественных умножения. 1.6.а. Допустим, что имеется устройство вычисления линейной свертки двух 50-точечных последовательностей. Описать, как это устройство может быть использовано для вычисления циклической свертки двух 50-точечных после- довательностей. б. Допустим, что имеется устройство для вычисления циклической свертки двух 50-точечных последовательностей. Описать, как это устройство может быть использовано для вычисления линейной свертки двух 50-точечных последовательностей. 1.6.) Доказать, что корреляцию можно вычислять как свертку, записывая одну из последовательностей в обратном порядке и, возможно, пополняя одну из последовательностей отрезком нулей. Ю Доказать, что любой алгоритм вычисления х~~, в котором используются только сложения, вычитания и умножения, должен содержать по меньшей мере семь умножений, но если допустить возможность деления, m суще- ствует алгоритм, содержащий всего шесть умножений и делений. 1-8- Один из алгоритмов вычисления произведения комплексных чисел дается равенствами е= ас ‒ bd, f = (а+ b) (с+ 4 ‒ ас ‒ bd. 
32 Гл. 1. Введение Записать этот алгоритм в матричном виде, подобно тому, как это сделано в тексте главы. Каковы недостатки или преимущества этого алгоритма по сравнению с приведенным выше 1.9. Доказать «свойство сдвиг.а» для преобразований Фурье: если (о;) ~ (Vp} являются парой преобразования Фурье, то парамн преобразовання фурье также являются «и и,} ««> < „+»>} и «и<<~>>>} ««и~У„}. 1.10. Доказать, что «циклическая корреляция» двух вещественных последова- тельностей g u d удовлетворяет соотношению 1 ‒ л а,д- у g«,+„,н,, Й=О где б и D соответственно преобразования Фурье последовательностей g u d. Замечания Хорошее изложение начала истории быстрых алгоритмов преобразования Фурье содержится в статье Кули, Левиса и Велча [1) (1967). Основы теории цифровой обработки снгналов можно найти во многих книгах; укажем две из них: Олпенгейм н Шафер [2) (1975) и Рэбинер и Голд [3] (1975). Алгоритмы умножения комплексных чисел, содержащие три вещественных умножения, в общем стали известны с конца 1950-х, но поначалу им не придавали должного значения. Описанный нами алгоритм умножения матриц принадлежит Винограду [4] (1968). 
Глава 2 ВВЕДЕНИЕ В АБСТРА3(ТНУЮ АЛГЕБРУ Хорошие алгоритмы основаны на красивых алгебраических тождествах. Для построения таких алгоритмов необходимо зна- комство с мощными структурами теории чисел и современной ал- гебры. Такие структуры, как множество целых чисел, кольца многочленов и поля Галуа, играют важную роль в построении алгоритмов обработки дискретных сигналов. В настоящей главе излагаются алгебраические сведения, которые необходимы для дальнейшего, но, как правило, неизвестны студентам, специали- зирующимся в области обработки дискретных сигналов. Сначала изучаются математические структуры групп, колец и полей. Мы увидим, что дискретное преобразование Фурье может быть опре- делено в произвольном поле, хотя наиболее известно его опреде- ление в поле комплексных чисел. Затем будут рассмотрены из- вестные понятия матричной алгебры и векторных пространств. Мы покажем, что их можно корректно определить для любого поля. Наконец, мы изучим кольцо целых чисел и кольца много- членов, уделяя особое внимание алгоритму Евклида и китайской теореме об остатках. 2.1. Группы Понятие группы является математической абстракцией опре- деленной алгебраической структуры, часто встречающейся во многих конкретных видах. Введение абстрактного понятия обус- ловлено тем, что легче одновременно исследовать все математиче- ские системы с общей структурой, чем изучать каждую из них по отдельности. Определение 2.1.1. Группой G называется множество эле- ментов с определенной на нем операций (обозначаемой *), кото- рая удовлетворяет следующим четырем свойствам.' (1) (Замкнутость ) Для каждой пары элементов а и Ь из moro множества элемент с = а~ b принадлежит этому множеству. (2) (Ассоциативность.) Для всех элементов а, Ь и с из этого множества а ~ (Ь:| с) = (а ~ Ь) ь с. 
34 Гл. 2. Введение в абстрактную алгебру Рис. 2.1. Пример конечной группы. (3) (Существование единицы.) В этом множестве существует элемент е, называемый единичным элементом, такой что а*е = е*а= а для любого элемента а рассматриваемого множества. (4) (Обратимость.) Яля любого а из данного множества су- ществует (называемый обратным к а) некоторый элемент Ь из этого множества, такой что а Ь= Ь*а=е. Если 6 содержит конечное число элементов, то она называется конечной группой. Число элементов в конечной группе 6 называ- ется ее порядком. На рис. 2.1 приведен пример конечной группы. По существу здесь представлена одна и та же группа, но в разных обозначениях. В случае когда две группы описываются одной и той же структурой, хотя и в разных обозначениях, они назы- ваются изоморфными '). Некоторые группы обладают тем дополнительным свойством, что для любых а и Ь из такой группы а~ Ь = Ь~а. Это свойство называется коммутативностью. Группы, обладающие этим дополнительным свойством, называются коммутативными группами, или абелевыми группами. Мы всегда будем иметь дело с абелевыми гр уппами. В случае абелевых групп знак групповой операции обознача- ется плюсом и называется сложением (даже тогда, когда операция не является обычным арифметическим сложением). В этом случае единичный элемент е называется «нулем» и обозначается О, а обратный к а элемент записывается в виде а, так что а+( а) = ( а) +а= О. Иногда символ групповой операции обозначатеся точкой и называется умножением (даже тогда, когда оно не является обыч- 1) Вообще любые две алгебраические системы с одной и TQH же структурой, но представленные в разных обозначениях наываются иэоморфяыми. 
2.1. Группы 35 ным умножением). В этом случае единичный элемент называется единицей и обозначается 1, а обратный к а элемент записывается в виде а ', так что а-а'= а'а= 1. Теорема 2.1.2. Единичный элемент в каждой группе единст- вен. Для каждого элемента группы обратный элемент также единстеен, и (а ') ' = а. Яоказательспио. Предположим, что е и e' являются единич- ными элементами. Тогда е = e+e' = е'. Яалее предположим, что Ь и Ь' являются элементами, обратными к а; тогда Ь = b* (а~Ь') = (b*a) ~Ь' = Ь'. Наконец, а ' ~ а = а~ а ' = е, так что а является обратным к а '. Но в силу единственности обратного элемента (а ') ' = а. д Многие общеизвестные группы содержат бесконечное число элементов. Примерами являются. множество целых чисел с опе- рацией сложения; множество положительных рациональных чи- сел с операцией умножения '); множество вещественных (2х2)- матриц с операций сложения. Многие другие группы содержат только конечное число элементов. Конечные группы могут быть устроены весьма хитро. Если групповая операция применяется два или более раз к одному и тому же элементу, то можно использовать степенное обозначение. Таким образом, а' = а~а и а" = а~а~ ... ~а, где справа стоят Й копий элемента а. Циклической называется группа, в которой каждый элемент может быть записан в виде степени некоторого фиксированного элемента, называемого образующей группы.. Каждая конечная циклическая группа имеет вид G = ~ае, а', а2,..., а~ ‒ '), г где д порядок G, а образующая, а а~ ‒ единичный элемент, а обратный к а' элемент равен а~ ‒ '. Чтобы можно было на самом деле задать группу таким способом, необходимо, чтобы выполня- лось равенство а~ = ао. Это вытекает из того, что в противном слу- чае, если а~ = а' при г =ф= О, то а~ ‒ ' = а' ‒ ' и в противоречие с определением мы получаем меньше, чем д, элементов. ~) Этот пример дает удобный повод, чтобы сделать предостережение по поводу терминологии. В случае произвольной абелевой группы групповая опе- рация обычно называется сложением, но не обязательно является обычным сложением. 3 данном примере она является обычным умножением. 
36 Гл. 2. Введение в абстрактную алгебру Важнейшей циклической группой с д элементами является группа, обозначаемая >/(g), или иногда ~д, и задаваемая мно- жеством z/(g) = }0, 1, 2,..., g 1} со сложением по модулю д в качестве групповой операции. На- пример, Z/(6) =- }О, 1, 2,..., 5} и 3+4=1. Группа Z/(g) может быть выбрана в качестве стандартного прототипа циклической группы с д элементами. На самом деле имеется только одна группа с и элементами; все остальные явля- ются ее изоморфными копиями, различающимися обозначениями, но не структурой. Любую другую циклическую группу 6 с д элементами можно отобразить в Z/(g) с заменой групповой опера- ции в 6 сложением по модулю д. Любые свойства структуры в G справедливы в Z/(g), и наоборот. По заданным двум группам G' и G" можно построить новую группу 6, которая называется произведением групп 6' и G" и обо- значается 6 = 6' X 6". Элементами 6 служат пары элементов (а', а"), первый из которых принадлежит 6, а второй 6". Группо- вая операция в произведении групп G определяется равенством (а', а") + (Ь', Ь") = (а' + Ь', а" + Ь"). В этой формуле звездочка используется три раза в трех разных смыслах. В левой части равенства она обозначает групповую операцию в G, а в правой части операции в группах G и G" соответственно. Например, ~, Х ~, задается множеством z, х Z, = }(0. О), (О, 1), (О, 2), (1, О), (1, 1), (1, 2)}. Типичным элементом таблицы сложений в ~, х ~, является (1, 2) + (О, 2) = (1, 1). Отметим, что группа ~, X ~, сама является циклической с об- разующим элементом (1, 1). Следовательно, Z, X ~, изоморфна группе ~,. Причина этого роется в том, что числа 2 и 3 не имеют общих целочисленных делителей. Пусть G группа и Н подмножество в G. Тогда Н называется подгруппой группы G, если Н само является группой относительно ограничения групповой операции на Н. В качестве пр имер а, в множеств целых чисел (положительных,. отрицательных и нуля) с операцией сложения множество четных чисел, так же как и множество чисел, кратных 3, образует подгруппу. Один из способов построения подгруппы Н конечной группы 6 состоит в том, чтобы, выбрав некоторый элемент Й из 6, форми- ровать элементы множества Н в виде последовательных степеней 
2.1. Группы 37 h„ Д2 ~Я g3 6,=1 g2 ~1 g2 gs *ha = gs Й2 ~2 ДЗ ~2 Ятп h1 Ят g~ h2 Первый элемент в каждой строке называется лидером смеж- ного класса. Каждая строка таблицы называется левым смежным этого элемента: h, h2, h', h', .... Так как группа G конечна, то элемент последовательности обязательно начнет повторяться. Первым должен повториться сам элемент h, а непосредственно предшествующий ему элемент является единичным элементом группы, так как рассматриваемая конструкция дает циклическую группу. Множество Н называется циклической подгруппой, порожденной элементом h. Число и элементов в подгруппе Н удовлетворяет равенству h< = 1 и называется порядком элемента h. Множество элементов h, h', h', ..., h< = 1 называется циклом в группе G. Для того чтобы доказать, что непустое подмножество Н яв- ляется подгруппой в G, достаточно только проверить, что вместе с элементами а и Ь из Н множеству Н принадлежит элемент а~Ь, и что обратный к произвольному элементу а из Н также принадлежит Н. Остальные требуемые групповые свойства на- следуются из группы G. Если группа конечна, то, как мы увидим позже при рассмотрении циклических подгрупп, даже свойство обратимости выполняется автоматически. Для заданных конечной группы 6 и подгр уппы Н имеется важная конструкция, иллюстрирующая определенную, взаимо- связь между G и Н и известная под названием разложения группы 6 ка смежные классы по подгруппе Н. Обозначим через h>, h„ Й~, ... элементы из Н, причем через h, обозначим единичный эле- мент. Построим следующую таблицу: первая строка состоит из элементов подгруппы Н, причем первым слева выписан единичный элемент и каждый элемент из Н выписан в строке один и только один раз. Выберем произвольный элемент группы G, не содержа- щийся в первой строке. Назовем его g, и используем в качестве пер вого элемента второй строки. Остальные элементы второй строки теперь получаются умножением слева элементов подгруппы на этот первый элемент. Аналогично, строя стретью, четвертую и пятую строки, каждый раз выбираем не использованный на пре- дыдущих шагах элемент группы G в качестве элементов первого столбца. Конец наступает, когда после некоторого шага оказы- вается, что все элементы группы записаны в некотором месте таблицы. Процесс оканчивается в силу конечности G. Таблица имеет следующий вид. 
38 Гл. 2. Введение в абстрактную алгебру классом, а в случае абелевой группы просто смежным классом. Если при построении разложения группы на смежные классы использовать вместо левого правое умножение на элементы группы Н, то строки называются правыми смежными классами. В силу указанных правил построения разложение группы на смежные классы всегда является-прямоугольной таблицей, все строки кото- рой полностью заполнены. Я,окажем теперь, что в этой таблице каждый элемент группы встречается точно один раз. Теорема 2.1.3. В разложении группы на смежные классы каж- дый элемент группы встречается один и только один раз. Яоказательство. Каждый элемент появится по крайней мере один раз, так как в противном случае процесс не остановится. Покажем теперь, что каждый элемент ие может появиться дважды в одной и той же строке, а затем докажем, что один и тот же эле- мент не может появиться в двух разных строках таблицы. Предположим, что два элемента в одной и той же строке, ска- жем g;+h; и g<+hq, равны. Тогда умножение') каждого из них на gs дает равенство h] = h~. Это противоречит тому, что каждый элемент подгруппы выписан в первой строке только один раз. Предположим, что два элемента из различных строк, скажем gg+hj и gp+h(, равны, и что k < f' Умножение справа íà h] приводит к равенству gI ‒ ‒ g> *h~ *hj. Тогда g~ порождает k-й смежный класс, так как элемент h]+h]' принадлежит под- группе. Это противоречит выбранному выше правилу выбора ли- деров смежных классов. Q Следствие 2.1.4. Если Н подгруппа группы 6, mo число элементов в Н делит число элементов в G. Таким образом, (Порядок Н) (Число смежных классов 6 по Н) = (Порядок G). Яоказательство. Следует непосредственно из прямоугольности таблицы разложения на смежные классы. П] Теорема 2.1.5. Порядок конечной группы делится на порядок любого из ее элементов. Таким образом, а~ = 1 для любого элемента а группы G с д элементами. Яоказательство. Группа содержит циклическую подгруппу, порожденную любым из ее элементов, и, таким образом, доказа- тельство теоремы вытекает из следствия 2.1.4. ~ 2.2. 1(ольца Следующей необходимой нам алгебраической структурой яв- ляется кольцо. Кольцо представляет собой абстрактное множество, которое является абелевой группой и наделено дополнительной операцией. 1) Слева. ‒ Прим. перев. 
2.2. Кольца 39 Определение 2.2.1. Кольцом R называется множество с двумя определенными на нем операциями. первая называется сложением (обозначается плюсом); вторая называется умножением (обозна- чается записью сомножителей рядом), причем выполняются сле- дующие аксиомы: l. Относительно сложения (+) R является абелевой группой. 2. (Замкнутость.) Произведение аЬ принадлежит R для любых а иЬизЯ. 3. (Закон ассоциативности.) а (Ьс) = (аЬ) с. 4. (Закон дистрибутивности.) а(Ь+с) = аЬ +ас, (Ь +с)а= Ьа+-са. Сложение в кольце всегда коммутативно, а умножение не обязательно должно быть коммутативным. Коммутативное коль- цо ‒ это кольцо с коммутативным умножением. аЬ = Ьа для всех а и b из R. Дистрибутивный закон в определении кольца связы- вает операции сложения и умножения. Важнейшими примерами колец являются кольцо ~ целых чисел и кольцо ~/(д) целых чисел по модулю q. Мы уже видели, что они являются группами по сложению. Так как на этих множест- вах имеется также умножение с необходимыми свойствами, то они являются кольцами. Несколько хорошо известных читателю по знакомым кольцам свойств могут быть выведены из аксиом следующим образом. Теорема 2.2.2. Для произвольных элементов а и b из кольца Я выполняются равенства (i) аО=Оа=О. (й) а( Ь) =( а)Ь= ‒ аЬ. Ь) = аЬ + а ( Ь). Следовательно, а ( Ь) = ‒ (аЬ). Аналогично доказывается вторая половина п. (й). С3 Относительно операции сложения кольцо содержит единицу, называемую «нулевь>. Относительно операции умножения кольцо не обязательно имеет единицу, но если единица есть, то она един- ственна. Кольцо, обладающее единицей относительно умножения, называется кольцом с единицей. Эта единица называется «единицей» Доказательство. (() аО = а (О + О) = аО + аО. Прибавляя к обеим частям равенства аО, получим О = a0. Аналогично доказывается вто- рая половина п. (i). (й) О = аО = а (Ь 
40 Гл. 2. Введение в абстрактиую алгебру и обозначается символом 1. Тогда для всех а из Я имеет местр 1а‒ = а1 = а. Относительно операции сложения каждый элемент кольца имеет обратный. Относительно операции умножения обратные к~цанному элементу не обязательно существуют, но в кольце с еди- ницей обратные могут существовать. Это означает, что для за- данного элемента а может существовать элемент Ь, такой что аЬ = 1. Если это так, то Ь называется правым обратнь~м к а. Аналогично, если существует элемент с, такой, что са = 1, то с называется левым обратным к а. Теорема 2.2.3. В кольце с единицей: (i) Единица единственна. (ii) Если элемент а имеет и левый обратный Ь, и правый обратный с, то b = с. В этом случае элемент а называется обра- тимым, причем обратный элемент единствен (и обозначается через а '). (iii) (а ') ' = а. Доказательство. Аргументация аналогична использованной в доказательстве теоремы 2.1.2. [] Если кольцо содержит единицу, то можно произвольное число раз сложить ее саму с собой или вычесть из себя самой, получив, таким образом, бесконечную в о6е стороны последовательность (1+1+1), (1+1), 1, О, 1, 1+1, 1 +1 -+1, .... Эти элементы называются целыми кольца и иногда обозначаются просто как О, ~1, ~2, ~3, ~4, .... Кольцо может содержать как конечное, так и бесконечное множество целых. Число целых в кольце с единицей называется ero характеристикой. Если ха- рактеристика кольца равна конечному целому числу д, то це- лые этого кольца могут быть записаны в виде множества ( 1, 1 +- 1, 1 +- 1 +- 1, . ), или в более простом, используемом для обычных целых чисел, обозначении (1, 2, З, ..., q 1, O). Это подмножество является подгр уппой аддитивной гр уппы кольца; на самом деле это циклическая подгруппа, порождаемая элементом 1 ° Следовательно, если характеристика кольца ко- нечное целое число, то сложение в кольце является сложением по модулю д. Если характеристика бесконечна, то целые кольца складываются как целые числа. Следовательно, каждое кольцо 
2.2. Кольца с единицей содержит подмножество, которое ведет себя относи- тельно сложения либо как ~, либо как ~/(о). В действитель- ности оно ведет себя так же и относительно умножения, так как если а и р конечные суммы единицы кольца, то а.р=р+р+... +P, где справа стоит а копий элемента р. Так как сложение целых в R ведет себя подобно сложению в > или в >/(о), то так же ведет себя и умножение в R. В пределах кольца R каждый элемент и может быть возведен в целочисленную степень,' и просто означает произведение m ко- пий элемента а. Если кольцо содержит единицу и число целых кольца является простым, то иногда для упрощения степенных сумм оказывается полезной следующая теорема. Теорема 2.2.4. Пусть р просгпае, и пусть R кольцо с р целыми. Тогди для любого положительного целого числи m и любых элементов а и р из R (а ~ р)~ = а~ и, по непосРедственному обоби~ению, (~а,) = ~(а~ ) для любого множества элементов а~ из R. Яоказательство. Согласно биномиальному разложению, P p (u ~ P)> = g с~с (~P)> 1-О Р где . интерпретируется в R как сумма такого числа копий еди- l ницы кольца. Напомним, что в кольце с р целыми арифметика целых совпадает с арифметикой по модулю р. Следовательно, можно записать а~ (~b)' Р где двойные скобки вокруг . обозначают вычисление tip Mp- L дулю р. Теперь заметим, что pl p (s ‒ i) l c l (р ‒ c) l i l (p ‒ i) l представляет собой целое число и Р простое. Следовательно, 3на- Р менатель делит (р 1)! в области целых чисел, и . кратно р. Ф 
42 Гл. 2. Введенне в абстрактную алгебру р Таким образом, . = О (mod р) для всех 1 = 1, 2, ..., р 1. 4 Итак, (а + р)р = ар + (~0)~. Наконец, либо р = 2 и так что (~P)' = ~P', либо р нечетно и (~P)> = ~P>. Таким образом, (а~ р)р=ар~рР и для т = 1 теорема доказана. Возведем теперь последнее равенство в р-ю степень, ((а ~ р)р)р = (а~ ~- 0~)~, и опять воспользуемся утверждением теоремы при т = 1: (а ~ р)р =а~ ~- V. Иовторяя это m 1 раз, получаем (а ~ ~)~ =ар что завершает доказательство теоремы. Q Если в кольце с единицей элемент имеет обратный, то он назы- вается обратимым '). Множество всех обратимых элементов кольца замкнуто относительно умножения, так как, если а и b обратимы, то с = ab имеет обратный элемент, равный с ' = b 'а '. Теорема 2.2.5. (i) Относительно умножения в кольце множество обратимых элементов кольца образует группу. (ii) Если с = ао и с обратимыйэлемент кольца, то а имеет правый обратный, а b левый обратный. (ш) Если с = ао и а не имеет правого обратного или b не имеет левого обратного, mo с не является ооратимым элементом. Яоказательство. Упражнение. Многие примеры колец известны. Например: 1. Множество всех вещественных чисел относительно обычных сложения и умножения образует коммутативное кольцо с едини- цей. Каждый ненулевой элемент кольца является обратимым. 2. Множество Z всех целых чисел (положительные, отрица- тельные и нуль) относительно обычных сложения и умножения образует коммутативное кольцо с единицей. Единственными обра- тимыми элементами кольца служат ~1. 3. Множество всех (nx n)-матриц с вещественными элементами 1) Используемые для единицы и обратимых элементов кольца английские термины «ипру» и «нпИ» переводятся на русский язык одним словом «единица», так что часто в литературе обратимые элементы называются единицами кольца; мы предпочитаем зафиксировать термнн «единица» в определенном выше смысле.‒ Прим. перев. 
43 2.3. Поля относительно матричного сложения и матричного умножения об- разует некоммутативное кольцо с единицей. Единицей служит единичная (nXn)-матрица. Обратимыми элементами кольца яв- ляются все невырожденные матрицы. 4. Множество всех (nXn)-матриц, элементами которых явля- ются целые числа, относительно матричного сложения и матрич- ного умножения образует некоммутативное кольцо с единицей. 5. Множество всех многочленов от х с вещественными коэффи- циентами относительно сложения и умножения многочленов обра- зует коммутативное кольцо с единицей. Единицей кольца является многочлен нулевой степени р (x) = 1. 2.3. Поля 4 (i) = «а+ib« Грубо говоря, абелевой группой является множество, в кото- ром можно «складывать» и «вычитать», а кольцо множество, в котором можно «складывать», «вычитать» и «умножать». Более сильной математической структурой, называемой полем, является множество, в котором можно «складывать», «вычитать», «умно- жать» и «делить». Определение 2.3.1. Полем называется множество с двумя опе- рациями сложением и умножением, которые удовлетворяют следующим аксиомам: 1. Множество образует абелеву группу по сложению. 2. Иоле замкнуто относительно умножения и множество не- нулевых элементов образует абелеву группу по умножению. 3. Дистрибутивный закон (а + Ь} с = ас+ bc выполняется для любых а, b и с из поля. Единичный элемент относительно сложения принято называть нулем и обозначать через О, аддитивный обратный к элементу а обозначать а, единичный элемент относительно умножения на- зывать единицей и обозначать 1, мультипликативный обратный к элементу и обозначать а '. Под вычитанием (а b) понимается а ~- ( b); под делением (а/b) понимается b 'а. Следующие примеры полей широко известны: 1. p: множество вещественных чисел. 2. Q: множество комплексных чисел. 3. Q: множество рациональных чисел. Все эти поля содержат бесконечное число элементов. Имеется много других не столь широко известных полей с бесконечным числом элементов. Одно из таких полей описывается очень просто и известно как поле ()(/) комплексных рациональных чисел. Оно дается определением 
44 Гл. 2. Введенне в абстрактную алгебру где а и b рациональные числа, а сложение и умножение опре- деляются так же, как для комплексных чисел. При таком опреде- лении множество Q (j) удовлетворяет определению 2.3.1 и, сле- довательно, является полем. Имеются также поля с конечным числом элементов, и MbI 6y- дем ими также пользоваться. Поле с д элементами, если оно су- ществует, называется конечным полем или полек Галуа и обозна- чается GF (д). Что представляет собой наименьшее поле? Оно обязано со- держать нулевой элемент и единичный элемент. На самом деле этого уже достаточно для задания поля, если сложение и умно. жение определить таблицами Это поле известно как GF (2). Никаких других полей с двумя эле- ментами не существует (за исключением, конечно, изоморфных копий поля GF (2)). В;онечные поля можно описывать с помощью таблиц сложения и умножения. Вычитание и деление однозначно определяются таб- лицами сложения и умножения. Позже изучим конечные поля детально. Сейчас мы приведем еще три примера. Поле GF (3) = {О, !, 2) с операциями Поле GF (4) = )0, 1, 2, 3) с операциями Заметьте, что в GF (4) умножение не есть умножение по мо- дулю 4, а сложение не есть сложение по модулю 4. Поле GF (5) = «О, 1, 2, 3, 4) с операциями 
45 2.3. Поля существует, если в поле F имеется элемент а порядка n' и эле- мент р, порядка и". Если таких элементов в поле нет, то указанное преобразование не существует. Например, в поле GF (5) порядок элемента 2 равен 4. Следо- вательно, в поле GF (5) существует 4-точечное преобразование фурье э Г» ‒ ‒ g 2'»о„ б=0 и двумерное (4X4)-преобразование Фурье Д 3 g 2'""2'"""vr А = О, 1, 2, 3, б'=0 б"=0 Компоненты векторов v u V принадлежат полю GF (5), и вся арифметика является арифметикой поля GF (5). Если Это примеры очень малых полей. Мы найдем применения и для значительно больших полей, таких как GF (2" + !). Для произвольного поля, как бесконечного, так и конечного, применимы почти все известные алгоритмы вычислений. Это проис- ходит потому, что большинство процедур, используемых в полях вещественных и комплексных чисел, зависит только от даваемой определением 2.3.1 формальной структуры поля и не зависит от частных характеристик конкретного поля. В произвольном поле F имеется даже преобразование Фурье: n ‒ 1 V» — — f и»v;, lг=О,..., и 1, б=0 где а корень степени и из единицы в поле F, à v и Ъ' векторы длины и над полем F. Преобразование Фурье длины и в поле F существует тогда и только тогда, когда поле содержит корень степени и из единицы. Если преобразование Фурье существует, то оно ведет себя ожидаемым образом. В частности, должно су- ществовать и обратное преобразование Фурье, и должна выпол- няться теорема о свертке, так как если просмотреть доказатель- ства этих свойств, то можно увидеть, что о поле F не делается никаких предположений, за исключением того, что оно является даваемой определением 2.3.1 формальной структурой. Аналогично, двумерное преобразование Фурье в поле F ‒ 1 n" ‒ 1 А'=О,..., и' ‒ 1 g ° p i giipii ф ° ° ° ф ф V».»-= Е Е < Р ог r 
46 Гл. 2. Введенне в астрактную алгебру то одномерное преобразование Фурье вектора v равно 4 3 2 1 1 1 1 1 ! 2 4 3 1 4 1 4 1 3 4 2 vo и, v, ~з Определение 2.3.2. Иусть F поле. Подмножество в F на- зывается подполам, если оно является полем относительно насле- дуемых операций сложения и умножения; исходное поле F в этом случае называется расширением подполя. Иоле рациональных чисел является подполем поля веществен- ных чисел, которое в свою очередь является подполем поля ком- плексных чисел. Поле комплексных рациональных чисел не яв- ляется подполем поля вещественных чисел, но является подполем поля комплексных чисел. Легко видеть, что конечное поле GF (2} является подполем поля GF (4}, так как элементы 0 и 1 склады- ваются и умножаются в поле GF (4} так же, как в поле GF (2). Однако GF (2} не является подполем ни поля GF (3}, ни поля GF (5). Чтобы доказать, что некоторое подмножество поля является подполем, необходимо доказать только то, что оно содержит не- нулевой элемент и замкнуто относительно сложения и умножения ° Все остальные необходимые свойства наследуются из поля Обращение по сложению или умножение на элемент Р входят в порождаемую элементом р циклическую группу соответственно относительно операций сложения или умножения. Каждое поле содержит в качестве подмножества множество свои х целых (1 }1< 1), (1»1), l, 0, 1, 1+-1, 1+1+1, ."}. Целые поля обычно записываются просто как О, ~1, ~2, ~3, ... Иоле может содержать только конечное число целых, и в этом случае такое число называется характеристикой поля. (Оно всегда простое.) Все элементы полей GF (3) и GF (5) являются целыми, так что характеристики полей равны соответственно 3 и 5. Так как в поле GF (4) целыми являются только 0 и 1, то характе- ристика этого поля равна 2. Характеристика и поля веществен- ных чисел, и поля комплексных чисел равна оо. Каждое поле характеристики оо содержит поле рациональных чисел (или его изоморфную копию). Если поле имеет конечную характеристику р, То целые этого поля образуют циклическую группу по сложению; следовательно, сложение целых поля представляет собой сложение по модулю р, где р число целых поля. Сумму и копий единицы поля будем 
2.4. Векторные пространства 47 записывать в виде ((п)), где двойные скобки обозначают вычисле- ние по модулю р. Конечное поле задает группу двумя путями. все элементы поля образуют группу относительно сложения и все ненулевые эле- менты поля образуют группу относительно умножения. На самом деле по умножению ненулевые элементы поля образуют цикличе- скую группу. Я,оказать это утверждение трудно, и мы отложим доказательство до гл. 5, но пользоваться цикличностью этой структуры будем раньше. Так как по умножению множество ненулевых элементов группы образует циклическую группу, то оно порождается одним элементом. Определение 2.3.2. Иримитивным элементом поля Галуа GF (д) называется элемент порядка (д 1) относительно умно- жения. Он порождает мультипликативную группу поля. Например, в поле GF (5) степени элемента 3 равны: 3' = 3, 32 = 4, 3З = 2, 34 = 1. Следовательно, 3 примитивный эле- мент поля GF (5). 2.4. Векторные пространства Для заданного поля F п-последовательность (и„о„..., U„,) элементов поля называется вектором длины и над полем F. Мно- жество всех таких векторов длины и вместе с двумя заданными на нем операциями сложением векторов и умножением ни ска- ляр называется векторным иростринством над полем F. При рассмотрении векторных пространств элементы поля F, над Ко- торыми строются векторы, называются скалярами. Умножение на скаляр это операция, связывающая вектор v с элементом поля с по правилу с (p'oi p'li ° ° ° ° оп-1) = (цэ pp'li ° ° снап 1). Векторное сложение является операцией сложения двух векторов, v = v' + v", выполняемого по следующему правилу: t 1 / IT If Ф (ppэ <i~ ° ° ° е pn ‒ i)+ (ооэ Uiý ° э пл-!) = = (Up + Up Ui + Ui ° ° ° ол ‒ ! + ол ‒ 1). Векторное пространство и-последовательностей представляет собой один пример векторных пространств. Векторное простран- ство над полем F можно определить абстрактно как множество V элементов (именуемых векторами) с двумя заданными на нем операциями. Первая операция определена на парах элементов из V, называется сложением векторов и обозначается плюсом. Вторая операция определена на элементе из V и элементе из F, дает в результате элемент из V и называется умножением яа ска- ляр; для обозначения такой операции эти элементы записываются 
48 Гл. 2. Введение в абстрактную алгебру рядом.,0,ля того чтобы V было векторным пространством, эти операции должны удовлетворять следующим аксиомам. 1. V представляет собой абелеву группу относительно опера- ции сложения векторов, 2. (Дистрибутивный закон.) Для любых векторов ч„ч, и лю- бого скаляра с c(v,+v,} =cv,+cv,. 3. (Дистрибутивный закон.) Для любого вектора v и любых скаляров с, и с выполняется 1.v = v u (с, + с,) ч = c v+ c v. 4. (Ассоциативный закон.) Яля любого вектора ч и любых скаляров с, и с, (с,с,) v = с, (с,ч). Нулевой элемент из V называется началом координап и обозна- чается через О. Отметим, что мы использовали символ + двумя различными способами. для векторного сложения и для сложе- ния в поле. Отметим также, что мы использовали символ О для обозначения нулевого элемента поля и символ О для обозначения начала координат векторного пространства. Это неопределенность практически не приводит к недоразумениям. Подмножество векторного пространства называется векторным подпространством, если оно само является векторным простран- ством относительно исходных операций сложения векторов и умножения вектора на скаляр. Относительно сложения векторов векторное пространство является группой, а векторное продпро- странство подгруппой. Для того чтобы проверить, является ли непустое подмножество векторного пространства подпростран- ством, необходимо проверить только замкнутость подмножества относительно сложения векторов и умножения векторов на ска- ляр. Замкнутость относительно умножения на скаляр гаранти- рует принадлежность подмножеству нулевого вектора. Все осталь- ные требуемые свойства наследуются из исходного пространства. Векторное пространство и-последовательностей над F обозна- чается через F". В этом пространстве сложение векторов и умно- жение вектора на скаляр определены покомпонентно. В F" имеется еще одна операция, называемая покомпонентным произведением двух векторов. Если и = (а„а„..., а„,) и ч = (Ь„Ь1, ..., b„,}, то покомпонентное произведение определяется равенством ич = (а,Ь„а,b>, ..., а„,Ь„,). Оно представляет собой вектор, компоненты которого получаются в результате перемножения компонент векторов а и ч. Скалярным произведением двух п-последовательностей из F„ называется скаляр, определяемый равенством и.v = (а„..., и„— ) (Ь„..., bn 1) =а,Ь,+... +а„,Ь„,. 
2.4. Ве~торнме пространства 49 Немедленно проверяется, что и.v = v.и, (си).v = с (и.v) н что также w. (и + ч) = (w. и) + (и ч). Если скалярное произведение двух векторов равно нулю, то векторы называются ортогональ- ными. Над некоторыми полями возможна ортогональность нену- левых векторов самим себе, но это невозможно над полем веще- ственных чисел. Вектор, ортогональный к каждому вектору из данного множества, называется ортогональным к этому множеству. Теорема 2.4.1. Пусть V векторное простринство и-после- Яножестао векторов, ортогональных к Я7, само образует под- пространство. Яоказительство. Пусть U обозначает множество всех векторов, ортогональных к ~. U не пусто, так как О принадлежит U. Пусть w произвольный вектор из Я7, а ц, и ц, некоторые векторы из U. Тогда ф.u~ = w u2 ‒ ‒ О и и ид + w ll~ = О = w (и~+ и~)~ так что и, + и, также вектор нз U. Далее, и (си,) = с (w и1) = О, так что СО1 также вектор из U. Следовательно, U является под- пространством. Множество всех векторов, ортогональных к подпространству W', называется ортогональным дополнением поди ространства W u обозначается через ~~~. В векторном пространстве ~" всех п-по- следовательностей над полем вещественных чисел пересечение подпространств _#_ и 5'> содержит только нулевой вектор; но в векторном пространстве над GF (q) подпространство Г~ может иметь нетривиальное пересечение с W или может даже лежать в W, содержать W и совпадать с ЯГ. Например, подпространство нз двух векторов (00) н (11) пространства 6Е' (2) является своим ортогональным дополнением. В векторном пространстве V сумма вида и = а,ч, + а,ч, + ... + a„v„, где а; скаляры, называется линейной комбинацией векторов v„ ~~, ..., ч~. Говорят, что множество векторов порождает линейное пространство, если каждый вектор этого пространства представим в виде некой линейной комбинации векторов из этого множества. Тогда говорят также, что такое линейное пространство натянуто на это множество векторов. Линейное пространство, которое на- тянуто на конечное множество векторов, называется конечномер- ным векторным простронством. Число векторов в наименьшем множестве, порождающем некое пространство, называется раз- мерносщью этого пространства. Пространство и-последовательно- стей над, Р дает пример конечномерного векторного пространства размерности и. 
50 Гл. 2. Введение в абстрактную алгебру Множество векторов [v„v„..., v>} называется линейно за- висилым, если существует множество скаляров [а„..., aÄ}, не все из которых равны, таких что aA + а,ч, + ... + адчд ‒‒ О. Множество векторов, не являющееся линейно зависимым, назы- вается линейно независимым. Ни один вектор из линейно незави- симого множества не может быть представлен как линейная ком- бинация остальных. Заметим, что нулевой вектор О не может принадлежать линейно независимому множеству; каждое мно- жество, содержащее О, является линейно зависимым. Множество из Й линейно независимых векторов, порождающих линейное пространство, называется базисом этого пространства. 2.5. Матричная алгебра ~дд ~12 ° ~1т ~21 ~22 ° ° ° ~2ш = [а~;]. А= ~4~1 ~у~2 ° ° ° <~m Если и = m, то матрица А называется квадратной. Две (nxm)-матрицы А и В над полем F можно складывать по правилу п11 + b>z п1~ + (~1.. a»+ b» ° ° ° а,„,+b„, а„,+b„, ... а„+ b„ А+В= Всякую (nxm)-матрицу А можно умножить на элемент р поля по правилу рой Pais Ьв ° ° ° Pa„, Pa„, ... Pa„ Всякую (Ixn)-матрицу А можно умножить íà (nxm)-матрицу В, получив в результате (Ixm)-матрицу С по правилу i=1, '., 1, с„= ~', а,„b„~, 1=1 ) 1э ° ° ° э Методы матричной алгебры обычно изучаются только для полей вещественных и комплексных чисел,.хотя большинство операций справедливо в произвольном поле (а иногда даже в произвольном кольце). Определение 2.5.1. (ax т)-матриией A над полем F назы- вается прямоугольная таблица, состоящая из и строк и m столб- цов и содержащая nm элементов из поля F: 
2.5. Матричная алгебра 51 Множество элементов а;, для которых номер строки совпадает с номером столбца, называется главной диагональю. (пхп)-ма- трица, все элементы главной диагонали которой равны единице, а остальные элементы равны нулю, называется единичной матри- цей размера и и обозначается через 1. Матрица, все элементы побочной диагонали (элементы, для индексов которых j = n + + 1 i) которой равны единице, а остальные элементы равны нулю, называется обменной мшприцей и обозначается через J. Отметим, что У = 1. Примерами единичной и обменной матриц являются следующим (3X 3)-матрицы: 1= О 2 О, Я= dqt (А) = g Я;, ~ аи,ар~ ...а„~, где i„~2, ..., ~„перестановка на множестве целых чисел (1, 2, ..., и}(; gg f равно +1, если перестановка содержит четное число транспозиций, и 1 в противном случае, а сумми- Относительно введенного определения произведения и суммы матриц, как легко проверить, множество квадратных (nXn)-ма- триц образует кольцо. Это кольцо некоммутативно, но обладает единицей, а именно единичной (nXn)-матрицей. Транспонированной к (nxm)-матрице А называется (mxn)-ма- трица А, такая что ац ‒ ‒ а~~. Таким образом, строками ма- т т» трицы Ат служат столбцы матрицы А, а столбцами матрицы Ат служат строки матрицы A. Легко проверить, что если С = AB, то Ст = ~тАт Обратной к квадратной матрице А, если таковая существует, называется квадратная матрица А ', такая что А 'А = АА ' = = 1. Как нетрудно проверить, множество всех обратимых ква- дратных (пхп)-матриц относительно операции умножения обра- зует группу. Следовательно, если матрица имеет обратную, то обратная единственна, так как в силу теоремы 2.1.2 это свойство выполняется в каждой гр уппе. Матрица, имеющая обр атную, называется невырозсденной; в противном случае матрица назы- вается вырожденной. Пусть С = АВ. Как следует из п. (ш) тео- ремы 2.2.5, если хотя бы у одной из матриц А или В нет обрат- ной, To H у матрицы С нет обратной. Если матрицы А и В обра- тимы, то С'=В А', так как (В'А')С=1=С(В'A'). Определение 2.5.2. Пусть поле F задано.,Яля каждого и опре- делитель квадратной (nX и)-матрицы А равен величине det (А), являющейся функцией из множества всех (nX и)-матриц над F в поле F. Функция det (А) задается формулой 
52 Гл. 2. Введение в абстрактную алгебру рование ведется по всем перестановкам. Транспозицией назы- вается перестановка двух членов. Если матрица А' получается из матрицы А перестановкой двух строк, то каждую перестановку строк матрицы А', получаемую в результате четного (нечетного) числа транспозиций, можно рас- сматривать как соответствующую перестановку строк матрицы A. Отсюда следует, что при перестановке любых двух строк матрицы знак определителя меняется на противоположный. Аналогичные рассуждения показывают, что если две строки матрицы равны, то определитель равен нулю. Следующая теорема, приводимая без доказательства, содержит вытекающие непосредственно из определения 2.5.2 свойства опре- делителя. Теорема 2.5.3. (i) Если все элементы некоторой строки ква- дратной матрицы равны нулю, mo определитель arnou матрицы равен нулю. (11) Определитель матрицы равен определителю транспониро- ванной матрицы. (iii) Если две строки квадратной матрицы поменять местами, mo определитель поменяет знак. (iv) Если две строки равны, то определитель равен нулю. (v) Если все элементы одной строки матрицы умножить на элемент поля с, mo определитель новой матрицы будет равен определителю исходной матрицы, умноженному на с. (vi) Если матрицы А и В отличаются только ~-й строкой, mo сумма их определителей равна определителю матрицы С, i-я строка которой равна сумме ~-х строк матриц А и 3, а осталь- ные строки равны соответствующим строкам матрицы А или B. (vii) Если к элементам некоторой строки матрицы k раз при- бавить соответствующие элементы некоторой другой ее строки, mo определитель матрицы не изменится. (viii) Определитель матрицы отличен от нуля тогда и только тогда, когда ее строки (столбцы) линейно независимы. f Если в квадратной матрице удалить строку и столбец, содер- жащие элемент а~~, то определитель оставшейся квадратной таб- лицы размера и 1 называется минором элемента а~~ и обозна- чается через М,~. Алгебраическое дополнение, обозначаемое здесь через С,.;, определяется равенством C,, = ( ‒ «~+Щц. Из способа задания определителя матрицы следует, что ал- гебраическое дополнение элемента а~> является коэффициентом при а,~ в разложении определителя: Л 4е1(А) = g а,~С~~. А-1 
53 2.5. Матричная алгебра Это известная формула Лапласа для разложения определителей. Формула разложения Лапласа лежит в основе рекуррентного спо- соба вычисления определителей. Она дает выражение определи- теля (п X п)-матрицы через определители ((и 1) х (п 1))-матриц. Л Если а;„заменить на а;~, то получится сумма f а~~С,„, а=1 равная определителю новой матрицы, полученной из старой за- меной элементов i-й строки элементами j-й строки,' этот определи- тель равен нулю, если j + ~. Таким образом, ~Ф), i =ф'= j. Поэтому если det (А) + О, то матрица А имеет обратную, равную Если det (А) = О, то обратной матрицы не существует. Матрицу можно разбить на блоки по правилу: Дд }А А= 1 Агд } Ага где А„, А„, А„и А„меньшие матрицы, размеры которых очевидным образом дополняют друг друга до размеров исходной матрицы А. A именно, число строк матрицы А» (или A») плюс число строк матрицы А» (или A») равно числу строк матрицы А; аналогичное утверждение выполняется для числа столбцов. Ма- трицы можно перемножать поблочно. А именно, если 1 ! Ац} Ац в, s» А = Э В = ‒ +- Apt ~ Aqi В21 . Ва и С=АЗ, то 1 At®tt + A~q+t ~ А11Ви + АгВи А21Ви + АдВР1 ~ АпВа + А 2Вгг п~и условии, что все размеры блоков выбраны корректно в том смысле, что все матричные произведения и суммы определены. Такое разложение может быть выведено как простое следствие аксиом ассоциативности и дистрибутивности основного поля. Определение 2.5.4. Пусть А = [ад3 и В = [b~<3 матрицы соответственно размеров Ix К и Jx L. Тогда кронекеровским про- 
54 Гл. 2. Введение в астрактную алгебру изведением матриц А и В, обозначаемым Ах В, называется ма- трица, содержащая IJ строк и E(L столбцов, у которой на пере- сечении строки с номером (1 () J + j и столбца с номером (k <) L + 1 стоит элемент с~~, qt ‒‒ а;~Ь~,. Кронекеровское произведение представляет собой (1 x Ê)-таб- лицу, состоящую из (J x L)-блоков, (i, k)-й из которых равен а,.„В. Непосредственно из определения вытекает, i To кронекеровское произведение матриц некоммутативно, но ассоциативно: А х B + B х А, (А х B) х С = А (B х С). Элементы матрицы АХ В те же, что и у матрицы В ХА, но упоря- дочены по-другому. Очевидно также, что кронекеровское произ- ведение дистрибутивно относительно обычного сложения матриц. Наиболее известным примером кронекеровского произведения является внешнее произведение двух векторов. Предположим, <То А и В обе представляют собой векторы-столбцы, скажем, а = (а„..., а )г и b = (b„..., b~)> соответственно. Тогда К. = = L = 1, и аХ bг является (1X 1)-матрицей, на пересечении i-й строки и j-го столбца которой стоит элемент а,Ь;. Оно обозна- чается просто через ab~, так как в этом случае кронекеровское произведение совпадает с обычным произведением матриц. Следующая полезная теорема утверждает, что кронекеровское произведение произведений матриц равно матричному произве- дению кронекеровских произведений соответствующих матриц. Теорема 2.5.5. Если все матричные произведения определены, mo кронекеровское произведение удовлетворяет равенству (А х B) (С х D) = (АС) х (В0). Доказательство. Пусть матрицы А, В, С и D имеют соответ- ственно размеры 1ХК, JxL, КХМ и LXN. Так как матрица Ах В содержит KL столбцов, а матрица С x D содержит I(L строк, то матричное произведение (Ax B) (Cx D) определено. Оно со- держьт 1Ю строк, которые мы занумеруем парами (i, /), и M Ж столб- цов, которые мы занумеруем парами (т, n). Элемент, стоящий на пересечении строки (1, /) и столбца (т, n), равен f a~~b;,cq d~„. и Так как матрица АС содержит I строк и М столбцов, а матрица BD содержит 1 строк и L столбцов, то матрица (AC)X(BD) также является (11 X l(L)-матрицей. Стоящий на пересечении строки (1, j) и столбца (и, n) элемент этой матрицы равен f апд,~ Z bgldln = Z ап,б~,с„„Д„, k l а.с что и завершает доказательство. Р 
2.5. Матричная алгебра (пХп)-матрица, в которой а~~ = а~.i, если 1 f = в' j', называется теплицевой (п Х n)-матрицей. Теплицева матрица имеет вид а 1 а2 ~4-1 ао а1 а1 ао а а ‒ 2 а (n ц вдоль любой ее диагонали стоит один и тот же элемент. Элементарными операциями над строками матрицы назы- ваются следующие действия: 1) перестановка двух произвольных строк; 2) умножение произвольной строки на ненулевой элемент поля; 3) замена произвольной строки на сумму ее самой и некото- рого кратного любой другой строки. Каждая элементарная операция над строками (п X т)-ма- трицы А может быть выполнена путем левого умножения А на соответствующим образом подобранную так называемую элемен- тарную (nXn)-матрицу Е. Элементарные матрицы определяются как следующие модификации единичной матрицы: иЛи Каждая элементарная операция над строками обратима, и обратная операция имеет такой же вид. Элементарные операции над строками используются для при- ведения матрицы к стандартному виду, называемому канониче- ским ступенчатым видом и определяемому следующим образом: 1) ведущий ненулевой элемент каждой ненулевой строки ра- вен единице; 2) все остальные элементы каждого столбца, содержащего такой ведущий элемент, равны нулю; 3) ведущий элемент любой строки находится правее любого ведущего элемента любой расположенной выше строки. Нулевые строки расположены ниже всех ненулевых строк. 
56 Гд. 2. Введение в астрактную алгебру Примером матрицы, приведенной к каноническому ступенча- тому виду, является 110130 001100 000001 000000 Заметим, что нулевая строка расположена снизу и что если уда- лить последнюю строку, то все столбцы единичной (3x 3)-матрицы появятся среди столбцов матрицы, но в разбросанном виде. В об- щем случае если имеется Й ненулевых строк и по меньшей мере такое же количество столбцов, то матрица в каноническом сту- пенчатом виде будет содержать все столбцы единичной (kxk)-ма- трицы, но в разбросанном виде. Строки (num)-матрицы А над полем F являются подмноже- ством векторов пространства F~, т. е. векторами с т компонен- тами. Пространством строк матрицы А называется множество всех линейных комбинаций строк матрицы А. Пространство строк образует подпространство в F . Размерность пространства строк называется рангом матрицы по строкам. Аналогично, столбцы матрицы А можно рассматривать как множество векторов в про- странстве F" векторов с и компонентами. Пространстао столбцов матрицы А определяется как множество всех линейных комбина- ций столбцов матрицы А, и размерность этого пространства на- зывается рангом матрицы по столбцам. Множество векторов v, таки х что Av~ = О, называется нулевым пространством ма- трицы А. Нулевое пространство, очевидно, является векторным поппространством пространства F . В частности, нулевое про- странство матрицы А является ортогональным дополнением про- странства строк матрицы А, так как нулевое пространство может быть описано как множество всех векторов, ортогональных ко всем векторам пространства строк матрицы. Теорема 2.5.6. Если две матрицы А и А' переводятся друг в друга некоторой последовательностью элементарных операций над строками, то они имеют одно и то же пространство строк. Яоказшлельство. Каждая строка матрицы A' является линей- ной комбинацией строк матрицы А; следовательно, любая линей- ная комбинация строк матрицы А' также является линейной комбинацией строк матрицы А, и тем самым пространство строк матрицы А содержит пространство строк матрицы А'. Но А может быть получена из А' с помощью обратных операций, и, следова- тельно, пространство строк матрицы А' содержит пространство строк матрицы А. Следовательно, пространства строк матриц А и А' равны. р 
2.6. Матричная алгебра Теорема 2.5.7. Если матрицы А и А' связаны последователь- ностью элеменгпарных операций над строками, то любое мно- жество линейно независимых столбцов матрицы А является также линейно независимым в А'. Яоказательство. Теорема очевидна для первой и второй эле. ментарных операций, так что достаточно провести доказательство для единственной третьей операции. Итак, пусть А' получается из А прибавлением строки а, умноженной на элемент поля к строке р. Если в А' имеется некоторая линейная зависимость столбцов, то она приводит к нулевой линейной комбинации соот- ветствующих элементов строки а, которая поэтому никак не ска- зывается на строке р. Следовательно, это множество столбцов в А также линейно зависимо. Q Теорема 2.5.8. Если Й строк (Axn)-матрицы А линейно не- зависимы, то эта матрица содержит А линейно независимых столбцов. Яоказательство. Приведем матрицу А к каноническому сту- пенчатому виду А'. Так как строки линейно независимы, то ни одна строка не будет нулевой. Следовательно, для каждой строки иайдется столбец, который в пересечении с этой строкой содержит единицу, а во всех остальных позициях ‒ нуль. Это множество из А столбцов матрицы А' линейно независимо, и, следовательно, по теореме 2.5.7 в матрице А это же множество столбцов также лииейно независимо. Р Теорема 2.5.9. Ранг матрицы по строкам равен ее рангу по столбцам и оба равны размерам любой наибольшей квадратной подматрицы, определитель которой отличен от нуля. (Эта вели- чина называется просто ранеом матрицы.) Докааательство. Необходимо только доказать, что ранг ма- трицы А по строкам равен размеру наибольшей квадратной под- матрицы с отличным от нуля определителем. То же самое дока- зательство, примененное к транспонированной матрнце, тогда дает этот же результат для ранга матрицы по столбцам, и, таким образом, служит доказательством равенства ранга по строкам рангу по столбцам. Подматрицей матрицы А называется матрица, получающаяся из А удалением произвольного числа строк и столбцов. Пусть М яевырожденная квадратная подматрица матрицы А наибольшего размера. Так как М невырожденна, то, согласно п. (viii) тео- ремы 2.5.3, ее строки линейно независимы, и, следовательно, эти же строки матриць~ А должны быть линейно независимы. Таким образом, ранг матрицы А по строкам по меньшей мере столь же велик, сколь размер подматрицы М. 
58 Гл. 2. Введение в абстрактную алгебру С другой стороны, выберем произвольное множество из k ли- нейно независимых строк. Согласно теореме 2.5.7, образованная этими строками матрица содержит k линейно независимых столб- цов. Выбирая эти k столбцов на рассматриваемых k строках, получаем подматрицу с ненулевым определителем. Следовательно, размер наибольшей квадратной невырожденной подматрицы по меньшей мере столь же велик, сколь ранг матрицы А по строкам. Это завершает доказательство. 2.6. Кольцо целых чисел Целые числа (положительные, отрицательные и нуль) образуют обманчиво простое математическое множество. Ничего, кажется, не может быть более регулярного и равномерного, чем целые числа, но присмотревшись пристальнее, можно увидеть сложные внутренние связи и модели этого множества. Разумный конструк- тор использует эти свойства множества целых чисел при построе- нии эффективных алгоритмов цифровой обработки сигналов. Относительно обычных операций сложения и умножения целые числа образуют кольцо, которое принято обозначать ~. В кольце целых чисел вычитание возможно всегда, а деление не всегда. Ограниченность деления является одной из причин, делающих кольцо целых чисел столь интересной и богатой структурой. Говорят, что целое число sдели,тся на целое число r, или что r делит s, или что r является делителем s, если s = ra для некоторого целого числа а. Этот факт записывается символом r (s, который читается «r делит s». Если r и делит s, и делится на s, то r = ~в. Действительно, r = sa u s = гЬ для некоторых целых чисел а и b. Следовательно, r = rab u ab должно равняться 1. Так как а и b оба целые, то они равны 1 или 1. Положительное целое число р ~ 1, которое делится только на ~р или +-!, называется простым. Наименьшими простыми числами являются 2, 3, 5. 7, 11, 13, ...; число 1 не является про- стым. Не являющееся простым положительное целое число назы- вается составным. Наибольший общий делитель двух целых чи- сел r u s обозначается HOgl [r, s] и определяется как наибольшее положительное число, которое делит" оба из них. Наименьшее обиднее кратное двух положительных чисел r u s обозначается НОК (r, s J и определяется как наименьшее положительное число, которое делится на оба из них. Два числа называются взаимно простыми, если их наибольший общий делитель равен 1. В кольце целых чисел всегда, возможно сокр ащение; если са = cb и с отлично от нуля, то а = Ь. В кольце целых чисел имеется также слабая форма деления, известная под названием деления с остатком или алгоритма деления. 
2.6. Кольцо целых чисел 59 Теорема 2.6.! (Алгоритм деления). Для каждого целого числа с и положительного целого числа d найдется единственная пара целых чисел Q (частное) и s (остаток), таких что с = dQ + s, где 0~<s <d. Частное иногда обозначается =~:] Обычно нас будет больше интересовать остаток, чем частное. Если s и с при делении íà d имеют один и тот же остаток, то это записывается в виде s = с (mod d). Выражение этою вида называется сравнением и читается так: s сравнимо с с по модулю d. В сравнении ни s, ни с не должны быть обязательно меньше d. Мы больше интересуемся остатком. Оста- ток записывается в виде равенства s= R~ [с), которое читается так: s равно остатку от деления с Hà d, или s равно вычету с по модулю d. Мы будем также пользоваться скобками ((с)) для обозначения этих же величин; в этом случае d ясно из кон- текста. Еще одним обозначением является s= с (modd), в котором вместо знака сравнения стоит знак равенства. Теперь это не сравнение, а остаток от деления с на d. Вычисление остатка от сложного выражения облегчается сле- дующей теоремой, которая утверждает, что можно менять после- довательность выполнения операции вычисления остатка со сло- жением и умножением. Теорема 2.6.2. Для фиксированного модуля d (1) Ra [а + Ь] = Ra [Яг [а] + Ra [Ь]], (11) Ra [а. Ь] = Ra [Ra [а] Ra [Ь]]. Доказательство предоставляется читателю в качестве упраж- нения. Наибольший общий делитель двух заданных положительных чисел s u t может быть вычислен с помощью итеративного приме- нения алгоритма деления. Эта процедура известна как алгоритм Евклида. Предположим, что 3 < s; алгоритм Евклида сводится к последовательности шагов s = Q<'×+ tt» Q(2)t(1) + ~(2) 
60 Гл. 2. Введение в абстрактную алгебру t(() Я(ЗЦ(2) + ~(З) ~(л ‒ 2) Q(n)t(n ‒ () ] t(n) ~(л ‒ )) Q(n+l)t(n) где остановка процесса наступает при получении нулевого остатка. Последний ненулевой остаток, t("), равен наибольшему общему делителю. Этот факт будет доказан в следующей теореме. Матрич- ные обозначения позволяют кратко записать шаги алгоритма Евклида в виде s(ã ‒ 1) ~(г ‒ 1) s(') 0 1 ~(~) [ Q(~) Теорема 2.6.3 (Алгоритм Евклида). жительных чисел s и t, где s ~ t, пусть ние рекуррентных уравнений «) Для двух заданных поло- я;(О) ~ и ~(0) / Pp~ $ ( ‒ 1) g(r ‒ 1) ъ s« ‒ )) t«1) 1 s() О 1 /(~) ! Q(~) при r = 1, ..., п дается величиной s(") = НОД fs, tl, где п равно наименьшему целому числу, для которого t("' = О. Яоказательство. Так как t('+') < t(') и все остатки неотрица- тельны, то в конце концов наступит п, для которого t(") = О, так что завершение работы алгоритма произойдет обязательно. Легко проверить, что 0 ‒ 1 Q (r) 1 0 1 Q(r) Поэтому я " Q(() ! s(n) П г,= 1 О О так что s( ) должно делить оба числа s u t и, следовательно, делит НОД [s, t]. Далее, о =~, 1 ц)') I c так что любой делитель чисел s u t делит s("). Следовательно, НОД [я, t] делит я(") и делится на я("). Таким образом, s("» = НОД [я, t]. Это завершает доказательство. [] 
2.6. Кольцо целых чисел 6] Из этой теоремы вытекает несколько важных следствий. Пусть 1 0 1 О 1 А< =П А(' ‒ '). Я(О 1 Q(~) Тогда получаем следствие, являющееся важным и интуитивно непредсказуемым результатом теории чисел, утверждающим, что наибольший общий делитель двух целых чисел равен их линейной комбинации. Следствие 2.6.4. Для любых целых чисел s и t найдутся такие целые числа а и Ь, что НОД [s, tl = as + bt. Докаэательство. Достаточно доказать следствие для положи- тельных s u t. Так как (;(л) А(л) s ((~) = НОД [s, tI то утверждение выполняется при а = А11 и Ь = А12. [] (л) (а) Из доказательства этого следствия видно, как целые числа а и Ь вычисляются в виде элементов матрицы A. Остальные два эле- мента матрицы также имеют свою интерпретацию, для описания которой нам понадобится обратная к матрице А('). Напомним, что О 1 А(') = П Q(<) Отсюда видно, что определитель матрицы A<'> равен ( 1)'. Обрат- ная к А(') матрица равна д( ) д() ‒ 1 д(г) д(г) 11 12 22 12 А~'~ А(' А"' А" 21 22 21 11 Следствие 2.6.5. Получаемые в процессе алгоритма Евклида матричные элементы А~< и А2~ удовлетворяют равенствам (л) (л) s = ( ‒ 1)" А@> НОД [s, t], ( 1)" А<",> НОД [s, t]. Яокаэательство. Используя выписанное выше выражения для д5ратной матрицы и обращая первое равенство из доказательства следствия 2.6.4, получаем (n) цв A 2ß -А 21 (л) ,д(и) (и -А и А',",) О Утверждение вытекает отсюда непосредственно. П 
б2 Гл. 2. Введенне в абстрактную алгебру Используя алгоритм деления, можно вычислить наибольший общий делитель двух целых чисел. Например, НОД [814, 187] находится следующим образом: 8 l4 187 3 ‒ l3 8~ l7 74 l87 Из этих вычислений с азу следует, что НОД [814, 187] равен 11 и что НОД [814, 187 = 3'Х 814 13 Х 187. 2.7. Кольца многочленов Для каждого поля F имеется кольцо F [х), называемое коль- цом многочленов Hà F. Во многих отношениях кольцо многочле- нов аналогично кольцу целых чисел. Чтобы сделать эту анало- гию очевидной, в изложении данного раздела мы следуем разд. 2.6, Многочленом над полем F называется математическое выра- жение f (х) = f„x" + f„,õ" '+... j f,õ+ f, = ~'~ f;x', где символ х называется неопределенной переменной, а коэффи- циенты f„..., /„ принадлежат полю. Нулевым многочленом назы- вается многочлен f (х) = О. Степень многочлена обозначается deg f (х) и определяется как индекс старшего ненулевого коэффи- циента. По определению степень нулевого многочлена полагается равной отрицательной бесконечности ( оо). Приведенным много- членам называется многочлен, старший коэффициент ~„которого равен 1. Два многочлена равны, если равны все их коэффи- циенты /~. В кольце всех многочленов над заданным полем сложение H умножение определяются как обычные сложение и умножение многочленов. Такое кольцо многочленов определено для каждого поля F и обозначается символом F [х[. B исследованиях по этому кольцу элементы поля F иногда называются скалярами. Суммой двух многочленов из F [х) называется другой много- член из F [х], определяемый равенством f (х) + g (х) = Z (f i + g;) х', где, конечно, члены с индексом, болыиим наибольшей из степеней многочленов f (х) и g (х), равны нулю. Степень суммы не превос- ходит наибольшей из этих двух степеней. Произведением двух 
2.7. Кольца многочленов 63 многочленов из F [х) называется многочлен из F [х), определяе- мый равенством С ) )х) у (х) ‒ Z Z /ia ~)) х'. С j~ Степень произведения равна сумме степеней множителей. Если f (х) + О и g (х) ‒,е= О, то f (х) g (х) + О, так как deg p (х) равно отрицательной бесконечности тогда и только тогда, когда р (х) = О. В кольце многочленов вычитание возможно всегда, а деление не всегда. Будем писать r (х) ~s (х) и говорить, что многочлен s (х) делится на многочлен r (х), или что многочлен r (х) делит s (х, нли что r (х) является делителем многочлена s (х), если су- ществует многочлен а (х), такой что r (х) а (х) = s (х). Ненулевой многочлен р (х), делящийся только íà р (х) или на произвольный элемент а поля, называется неприводимьсм многочленом. Приве- денный неприводимый многочлен называется простым много- членом. Чтобы выяснить, является ли многочлен простым, надо знать поле, над которым он рассматривается. Многочлен х4 ‒ 2 яв- ляется простым над полем рациональных чисел, но не над полем вещественных чисел, над которым он распадается в произведение двух простых многочленов: р (х) = (х' у 2) (х'+ к'2). Над полем комплексных чисел каждый из последних многочленов не является простым. Если r (х) и делит s (х), и делится íà s (х), то r (х) = ns (х), где а элемент поля F. Это доказывается следующим образом. должны существовать многочлены а (х) и Ь (х), такие что г (х) = = s (х) а (х) и s(х) = r (х) Ь (х). Следовательно, r (х) = r (х) X х Ь (х) а (х). Но степень стоящего справа многочлена равна сумме степеней многочленов r (х), а (х) и Ь (х). Так как эта сумма должна равняться степени многочлена, стоящего слева, то многочлены а (х) и Ь (х) должны иметь степени, равные нулю, т. е. являться скаля рами. Наибольший общий делитель двух многочленов r (х) и s(x) обозначается HOg [r (х), s (x)] и определяется как приведенный многочлен наибольшей степени, делящий одновременно оба из них. Если наибольший общий делитель двух многочленов равен 1, то они называются взаимно простыми. Наименьшее общее кратное двух многочленов r (х) и s (х) обозначается НОК [r (х), s (х) ] и определяется как приведенный многочлен наименьшей степени, делящийся на оба из них. Мы увидим, что наибольший общий делитель и наименьшее общее кратное многочленов r (х) и s (х) определены однозначно. В поле вещественных чисел операция дифференцирования вво- дится через операцию предельного перехода. Это определение возможно не всегда, так как в некоторых полях отсутствует по- 
64 Гл. 2. Введение в абстрактную алгебру нятие произвольно малого числа. В таких полях удобно просто ввести операцию над многочленами, результат которой ведет себя так, как вела бы производная. Такой многочлен называется формальной производной от многочлена. Определение 2.7.1. Пусть г (х) = rÄx" + г„,х" ‒ ' + + + r>x + ro есть многочлен над полем F. Формальной производной от r (х) называется многочлен вида r' (я) = (пг„) х" ‒ '+ ((п 1) r„,) х" ‒ '+... + r,, где новые коэффициенты вычисляются в поле F как суммы 1 ко- пий элемента I ~'. (ir~) = r; + r; +... + r~. Легко проверить, что сохраняются многие полезные свойства производных, а именно, что (r (х) s (х) }' = r' (х) s (х) + r (х) s' (х), и что если а' (х) делит r (х), то а (х) делит r (х). В кольце многочленов над полем возможно сокращение; если с (х) а (х) = с (х) о (х) и с (х) отличен от нуля, то а (х) = Ь (х). Кроме того, в кольце многочленов имеется слабая форма деления, известная под названием деления с остатком или алгоритма деления. Теорема 2.7.2 (Алгоритм деления для многочленов). Для каждого многочлена с (х) и ненулевого многочлена d (х) существует единственная пара многочленов Q (х) (частное) и s (х) (остаток), таких что с (х) = Q (х) d (х) + s (х) и deg s {х) ( deg d (х). Доказательство. Частное и остаток находятся по элементар- ному правилу деления многочленов. Они единственны, так как если с (х) = Q, (х) d (х) + s, (х) = Q, (х) d (х) + ss (х), то Н (х) (Q. (х) Я, (х) ] = в, (х) в, (х). В правой части равенства стоит ненулевой многочлен, степень которого меньше deg d (х), а в левой ‒ ненулевой многочлен, степень которого не меньше deg d (х). Следовательно, оба много- члена равны нулю, и представление единственно. Практически вычисление частного и остатка выполняется с помощью простого правила деления «уголком». Частное иногда обозначается 
2.7. Кольца многочленов Обычно мы будем больше интересоваться остатком, чем частным. Остаток часто записывается в виде s (х) = Ял<» [с (х)], ИЛИ s (х) = с (х) (mod d (х)). Можно записать также сравнение s (х): ‒ с (х) (mod d (х)), которое обозначает, что многочлены s (х) и с (х) имеют один и тот же остаток при делении на d (х). Чтобы найти Лл<» [c (х)!, казалось бы, надо выполнить деление. Однако имеется несколько приемов, позволяющих сократить и упростить необходимую для этого работу. Прежде всего заметим, что Ял<» [с (х)] = Rd<» [с (х) + а (х) d(х)!. Не изменяя остатка, к с (х) можно прибавить любое кратное много- члена d (х). Следовательно, не изменяя остатка, можно исключить старший коэффициент многочлена с (х), прибавляя соответству- ющее кратное многочлена d (х). Используя этот метод при при- ведении многочлена с (х) по модулю приведенного многочлена и ‒ 1 d(x) = х" + f d,õ', 1=0 для упрощения можно член х" заменить многочленом f<", <<d;x' всюду, где это удобно. Такой прием упрощает вычисление остатка путем деления многочленов «уголком». Другой способ упрощения задачи вычисления остатка от деле- ния дается следующей теоремой. Теорема 2.7.3. Если многочлгн d (х) кратен многочлгну g (х), Rs <» [а (х)] = Rs <» [R«» [а (х)Ц для любого а (х). Доказательство. Пусть d (х) = g (х) h (х) для некоторого h (х). Раскрывая правую часть, получаем а (х) = Q, (х) d (х)+ Лл<» [а (х)] = = Q< (х) Й (х) д' (х) + Яг (х) а (х) + Rs<» [R«» [а (х)Ц, где степень остатка меньше degg (х). Раскрывая левую часть, имеем а (х) = Q (х) g (х) + Яг< » [а (х) ], и, согласно алгоритму деления, такая запись однозначна при степени остатка, меньшей deg g (х). Теорема вытекает из отожде- ствления подобных членов в обоих выражениях. П В качестве примера использования теоремы 2.7.З разделим 
66 Гл. 2. Введение в абстрактную алгебру х' + х + 1 на х' + х» + х' + х + 1. Яеление «уголком» было бы утомительно, но если вспомнить, что (х 1) (х' + х~ + х + + х + 1) = х' 1, то можно сначала разделить на х' 1, а затем на х4 + хз + х2 + х + 1. Тогда Я,' ~ [х'+ х+ 1! = х2+ х+ 1, и теперь деление на х4: + хз + х2 + х + 1 тривиально, так что Я;+„..+„+,.+< [х'+х+ 1] = х'+х+ 1. Другое удобное правило дается следующей теоремой. Теорема 2.7.4. (i) R«<» [а (х} + b (х)] = Rd <» [а (х}] + R«<» [b (х)]. (й) R«» [а (х). Ь (хЦ = Р«<» [Ra <» [а (х}] Л«<» [b (х)]}. Доказательство. Применяя алгоритм деления к обеим частям первого равенства, запишем а (х )+ Ь (х) = Q (х) d (х) + Rd <» [а (х) + Ь (х) ] И а (х) + Ь (х) = Q' (х) d (х) + Я«<Ä) [а (хЦ + + Q" (х) d(х)+ Рл <» [b (хЦ. Часть (i) вытекает ив однозначности алгоритма деления. Часть (ii) доказывается аналогичным образом. ~] Подобно тому как часто бывает полезным представление целых чисел в виде произведения простых сомножителей, часто бывает полезным представление многочленов в виде произведения непри- водимых многочленов. Чтобы сделать разложение целых чисел на простые множители однозначным, приходится ограничить рас- смотрение только положительными простыми числами. Анало- гично, для однозначности разложения многочленов приходится условиться, что используемые в качестве простых делителей многочлены являются приведенными многочленами. Теорема 2.7.5 (теорема об однозначном разложении). Много- член над некоторым далем однозначно разлагается в произведение элемента паля и npocmbn над данным полем мнагачленов, npuw> степень каждого из них равна по меньшей мере 1. Доказательство. Ясно, что входящим в произведение элемен- том поля является коэффициент р„, где п степень равлагаемого многочлена р (х). Эгиы элементом можно пренебречь и доказь<- вать теорему для приведенных многочленов. Предположим, что теорема не верна и пусть р (х) приве- денный многочлен наименьшей степени, для которого она не верна. 
2,7. Кольца многочленов 67 Гогда имеются два разложения, р (х) = а, (х) а (х) ... а~ (х) = b, (х) Ь, (х) ... b> (х), где а~ (х) н b; (х) ‒ простые многочлены. Все многочлены аь (х) должны отличаться от всех многочле- нов b; (х), так как в противном случае можно было бы сократить общие члены и получить многочлен меньшей степени, который можно разложить двумя разными способами. Без потери общности предположим, что степень многочлена b~ (х) не больше степени многочлена а, (х). Тогда а, (х) = Ь, (х) Q (х) + а (х), где deg s (х) ( deg b, (х) ~( deg а, (х). Далее, s (х) <> (х)... а>, (х) = b, (х) [b, (х)... b; (х) Q (х) а, (х)... а>, (х)]. Разложим многочлен а (х) и стоящий в квадратных скобках много- член на простые множители, разделив, если надо, на соответ- ствующий элемент прля так, чтобы все множители были приве- денными. Поскольку Ь, (х) не содержится в левой части, мы полу- чили два различных разложения приведенного многочлена, сте- пень которого меньше степени многочлена р (х). Это противоречие доказывает теорему. П В силу теоремы об однозначном разложении теперь ясно, что НОД [а (х), t (х)] н НОК [s (х), t (х)! являются единственными для любых двух многочленов s (х) и t (х}, так как наибольший общий делитель равен произведению всех общих для s (х) и t (х) простых делителей, причем каждый делитель входят в наимень- шей нв степеней, в которой он входит в s (х) н в t (х), а наименьшее общее кратное равно произведению всех простых делителей, вхо- дящих либо в s (х), либо в t (х), причем каждый делитель входит в наибольшей степени, в которых он входит в а (х) или в t (х). Из алгоритма деления для многочленов вытекает важное след- ствие, известное под названием алгоритма Евклида для много- членов. Для заданных двух многочленов s (х) и t (х) их наиболь- ший общий делитель может быть вычислен с помощью итератив- ного применения алгоритма деления. Без потери общности можно полагать, что deg s (х) )~ deg t (х); алгоритм состоит ив последо- вательности шагов s(x) = Q<'> (х) t (x)+t<'> (х), t (х) = Q<~> (х) t<'> (х) -«/<г> (х), t< > (х) = Q<s> (х) ~<'> (х) -«- t<» (х), ° ° i<и ‒ 2> (х) = q<tE> (х} t<n ‒ i> (х) + t<n> (x) t< ‒ » (х) q<~+ (х) ~<> („), 
68 Гл. 2. Введение в абстрактную алгебру где остановка процесса наступает при получении нулевого остатка. Последний ненулевой остаток t<") (х) равен наибольшему общему делителю. Доказательство этого факта дается следующей теоремой. Теорема 2.7.6 (Алгорнтм Евклида для многочленов). Для двух заданных многочленов s (х) и t (х) с deg s (х) )~ deg t (х) пусть s<0) (х) = s (х) и t<0) (х) = t (х). Решение рекуррентных уравнений х = ~(l ‒ 1 ) (х) =,<,,> ("} s<'> (х) 0 1 в«' ‒ > (x) t<'> (х) 1 Q<') (х) t<' ‒ ') (х) лри r = 1, ..., n Baemcs величиной s<") (х) = u НОД [s (х), t (х)!, где и ‒ наименьшее положительное число, для которого 1<") (х) = = 0 и сс + 0 принадлежит солю. Доказательство. Так как deg t<'+') (х) ( deg t<') (х), то для некоторого и обязательно наступит событие t<") (х) = О, так что алгоритм будет завершен. Легко проверить, что 0 1 ‒ ' Q<') (х) 1 1 ‒ Q<'> (х) 1 0 Следовательно, к (х) " ()") (х) ( ) к(") (х) П t (x) << 1 0 0 так что многочлен s<") (х) должен делить оба многочлена s (х) и t (х} н, следовательно, НОД [s (х), t (х)!. Далее, s<"> (х) ' 0 1 s (x) 0 <=„1 Q<') (х) t (х) так что любой делитель обоих многочленов s (х} и t (х) должен делить н многочлен s<"> (х). Таким образом, НОД [s (х), t (х) ! делит s«) (х} и делится íà s" (х), н, следовательно, s<") (х) = а НОД [s (х), t (х) ), элемент поля. Это завершает доказательство где а ненулевой теоремы. Q Снова, как и в важных следствия. случае с кольцом целых чисел, получаем два Определим матрицу, многочленов 1 О Q<') (х) 1 1 А<i ‒ <) („) А<') (х) = + l=r 
69 2.7. КОЛЬЦа МНОГОЧЛЕНОВ где А«»» (х) есть единичная матрица. Тогда мы имеем следующий результат. Следствне 2.7.7. Для любых двух многочленов s (х) и t (х) над полем F существуют два других многочлена а (х) и b (х) над тем же полем, такие что НОД [s (х), t (х) ! = а (х) s (х) + Ь (х) t (х). Доказательство. Так как я<л» (х) s (х) = А~"» (х) и s<"» (х) = а НОД [s (х), t (х) ], то утверждение следствия вы- полняется при а (х} = <x 'А<«» (х) и Ь (х) = а 'АI~~ (х). [~ Многочлены а (х) и Ь (х) получаются из элементов матрицы A<"» (х) делением на а '. Два других элемента матрицы А (х) также имеют прямую интерпретацию, для описания ксггорой нам надо вычислить обратную к матрице А<'» (х). Напомним, что О 'А<'» (х) = Г] 1 1 Q<'» (х) Отсюда видно, что определитель матрицы A<'» (х) равен ( 1), а обратная матрица дается равенством t А<«» (x) А1г' (х) Агя' (х) 1 Аф (х) А<»' (х} s (x) = ( 1)" А,",» (х) а НОД [s (x), t (x)], t (х) = ( 1)" А<",» (х) а НОД[з (х), t (х)]. Доказательство. Обратим первое равенство в доказательстве следствия 2.7.7, используя выведенную формулу для [А<'» (х)]-': g х ‒ А<"~ х А<,"» (х) э<"» (х) А<",» (х) О ()тсюда утверждение следствия очевидно. (:ледствие 2.7.8. Вычисляемме в процессе алгоритма Евклида элементы А'<» (х) и А'z~ (х) удовлетворяют равенствам 
70 Гл. 2. Введение в абстрактную алгебру В качестве примера использования алгоритма Евклида для многочленов вычислим НОД [s (х), t (х)1 прн s (х) = х' 1 и t (х) = x' + 2х'+ 2х+ 1. Имеем 3 s(x) ‒ х+ 2 t(x) 1 ! 2Х 4 4 2 4 ЗХ + 3Х+ 4(Х + 1) 1 2 3 2Х 4Z + ‒ 1 3 ‒ Зх + 3х 3х + 3 х + ~Z + ~x + Таким образом, НОД [х' Кроме того, 1,х'+2х'+2х+ 1! =х+ 1. х+ 1 = ( ‒ х ‒ ‒ ) s (х} + ( х' ‒ x + ‒ ) t (х}, как обещано следствием 2.7.7. Можно вычислить значение многочлена р (х} над полем F в любом элементе р этого поля. Для этого надо вместо неопреде- ленной переменной х подставить соответствующий элемент р н найти элемент р (р} этого поля. Можно также вычислить значение многочлена в элементе из любого большего поля, содержащего поле F. Для этого надо вместо неопределенной переменной х подставить значение элемента из расширения поля. Если F— поле вещественных чисел, то вычисление многочлена в расшире- нии поля является знакомой операцией. Многочлены с веществен- ными коэффициентами часто приходится вычислять в поле ком- плексных чисел. Элемент р поля называется корнем многочлена р (х}, если р (P} = О. 1~орнн многочлена не обязательно лежат в его соб- ственном поле. Многочлен р (х) = х'+ 1 не имеет корней в поле вещественных чисел. Доказательство. Согласно алгоритму. деления, р (х) = (х P) Q (х) + s (х), где степень многочлена s (х) меньше единицы, так что s (х) яв- ляется элементом поля, s,. Следовательно, О= р(Р) =(Р Р) @(Р)+ „ Теорема 2.7.9. Элемент р поля является корнем ненулевого многочлена р (х) тогда и только тогда, когда (х P) является делителем многочлена р (х}. Более того, если степень,многочлена равна n, mo многочлен имеет в поле не более и корней. 
2.8. Китайские теоремы об остатках так что s (х) = s, = О. Наоборот, если (х ‒ р} делит р (х), то р (х) = (х ‒ P) Q (х) и р (P) = (P P) Q (P) = О, так что р является корнем много- члена р (х). Теперь разложим многочлен в произведение скаляра и про- стых многочленов. Степень многочлена р (х} равна сумме степеней простых делителей, и один такой простой делитель имеется для каждого корня. Следовательно, число корней не может превос- ходить и. [3 Теорема 2.7.10 (Интерполяция Лагранжа}. Пусть множество из и + 1 различных точек, и пусть р (P„) за- даны для всех k = О, 1, ..., и. Тогда найдется в точности один многочлен р (х} степени и или меньше, принимающий значения р (Ps) для всех Й = О, ..., и. Этот многочлен дается равенством (х ‒ pz) n ( ) = g п 04) '", П (~~ ‒ ~~) с=о )wc Доказательство. Непосредственной подстановкой Рь вместо х можно убедиться, что многочлен р (х) принимает в этих точках указанные значения; Однозначность представления следует из того, что если р' (х) и р" (х) два таких многочлена, то много- член P (х) = р' (х) р" (х} имеет степень, не превосходящую и, но и + 1 корней ~„при k = О, ..., п. Следовательно, P (х} является нулевым многочленом. р 2.8. 3(итайские теоремы об остатках Любое неотрицательное целое число, не превосходящее произ- ведения модулей, можно однозначно восстановить, если известны его вычеты по этим модулям. Этот результат был известен еще в древнем Китае и носит название китайской теоремы об остатках. Формулировка китайской теоремы об остатках приведена на рис. 2.2. Мы будем доказывать ее в два этапа. Сначала будет доказана единственность решения, а затем (построением процедуры отыскания решения) его существование. Прежде чем строить формальную теорйю, приведем простой пример. Выберем в качестве модулей то = 3, m> = 4 и т, = 5 и положим M = т,т,т~ = 60. Для заданного числа с, лежащего в интервале 0 ~ с < 60, обозначим c; = R. [c]. Китайская теорема утверждает, что между шестьюдесятью такими числами с и шестьюдесятью векторами (с„с1, с,} соответствующих вычетов 
72 Гл. 2. Введение в абстрактную алгебру Прямые уравнения с~= Я [с3 m~~ где т~ взаимно просты О, . ° °, Й Обраяные уравнения k с= g с;Ф~М; (mod М) 8=0 k где М = П m~ М; = М~~71~ Ю=~} и N~ являются решениями уравнений N-М;+ а;т~ = 1 Рис. 2 2. Китайская теорема об остатках. существует взаимно однозначное соответствие. Предположим, что с, = 2, с, = 1 и с, = 2. Тогда эти условия приводят к следующим возможностям: с 6 «2, 5, 8, 11, 14, 17, 20, 23, 26, 29, ...), с C (1, 5, 9, 13, 17, 21, 25, 29, 33, ... }, с 6 (2, 7, 12, 17, 22, 27, 32, 37, ...}. Теорема 2.8.1. Для заданного множества целых положитель- ных попарно взаимно простых чисел т„т„..., m> и множества нео~прицательных целых чисел с~, с~, ..., сд при с; < т; система c,=с (modm), i=0, ..., k, k имеет не более одного решения в интервале 0 ( с ( П т~. i=l Доказательство. Предположим, что с и с' являются двумя лежащими в рассматриваемом интервале решениями. Тогда с = Q;m;+ c; и с' = Q~mg+cg и, следовательно, с с' кратно m; для каждого i, а так как m; k попарно взаимно просты, то с с> кратно Д т~. Но число c ‒ с к=а Единственным решением служит с = 17. Позже будет дан про- стой алгоритм вычисления числа с по его вычетам. В рассмотренном примере число однозначно было восстанов- лено по его вычетам. В следующей теореме доказывается, что это имеет место в общем случае. 
2.8. Китайские теоремы об остатках 73 k k лежит между g т, 1 и Пт,. Единственным положитель- i=0 i=0 ным числом, удовлетворяющим этим условиям, является с с' = = О. Следовательно, с = с'. Д КОД [s, t l = es + bt. Для заданного множества попарно взаимно простых положитель- ных чисел т„т>, ..., m>, используемых в качестве модулей, k положим M = Дт; и М; = М/т;. Тогда НОД [М,, m;1 = 1, S 0 и, следовательно, существуют такие целые N; и и;, что NM;+nm;=1, i=0,..., k. Теперь можно доказать следующую теорему. k Теорема 2.8.2. Пусть M = P m; ‒ произведение попарно вза- ~=0 имно простых положительных чисел, пусть М; = М/т, и пусть для каждого ~ Ni удовлетворяют равенствам У;М; + п~т~ = 1. Тогда единственным решением системы сравнений c; = с (mod m;), i = О, ..., Й, является k с = f c;N;M; (mod M). 8=0 Яоказательство. Поскольку мы уже знаем, что решение рас- сматриваемой системы сравнений единственно, надо только до- казать, что выписанное выше с действительно является решением. Но для такого с k с = f с,N,M, = c;N;M; (mad т;), ибо т; делит М, при r =,ф ~. Наконец, так как У;М; + n;m; = 1, то N;M, = 1 (mod т;) и с = с, (mod т;), что и завершает дока- зательство. ~] Чтобы проиллюстрировать теорему 2.8.2, продолжим преды- дущий пример. Заметим, что М = 60, Мо = 20, М1 = 16 и М, = 12. Далее, как можно вычислить по алгоритму Евклида или просто проверить, 1 = ( 1) M, + 7mo, 1 = ( 1) M~ + 4т1, Имеется простой путь построения решения системы сравнений из теоремы 2.8.1, основанный на следствии из алгоритма Евклида. Согласно этому следствию, в кольце целых чисел для каждого s u t найдутся такие а и Ь, что 
74 Гл. 2. Введение в абстрактную алгебру Прямьи уравнения с~ ~(x)= R < ° > [c(x)], с О, ..., й. m (х) где т~ > (х) взаимно прость~ Обрсииные уравнения k с(х) = f c~ ~ (х) N~ ~ (х) МП~ (х) (mod М (х)) 1=0 k где М (х) = 11 т~~~ (х), М~~~ (х) = М (х)/т~~~ (х) 1=0 и N~ ~ (x) являются решениями уравнений Ф~~~ (x) М~'> (х)+ п~~~ (х) т~~~ (x) = 1 Рис. 2.3. Китайская теорема об остатках для многочленов. 1 = ( 2) М, + Бт,. Следовательно, Ш,М, = 20, N,Ì~ = 15, У~И~ = ‒ 24 и с = ‒ 20с, 15с, 24с, (mod 60). В частности, при со = 2, с, = 1 и с, = 2 имеем с = ‒ 103 (mod 60) = 17, что мы видели и раньше. Китайская те~зрема об остатках является основой представле- ния целых чисел, в котором просто выполняется операция умно- жения. Допустим, что надо выполнить умножение с = ab. Пусть a; = R«[al, b; = R~~ [Ь] и c~ = R«[с] для каждого 8 = = О, ..., k. Тогда c; = a;b; (mod т,), и это умножение вычислить легче, так как а; и b; являются малыми целыми числами. Анало- гично, при сложении с = а + Ь имеем c; = а; + b; (mod т;) для всех ~ = О, ..., k. В обоих случаях для получения окончатель- ного ответа с должно быть восстановлено по вычетам в соответ- ствии с китайской теоремой об остатках. Переход к системе вычетов позволяет разбить большие целые числа на маленькие кусочки, которые легко складывать, вычи- тать и умножать. Если вычисления состоят только из этих опе- раций, то такое представление является альтернативной арифме- тической системой. Если вычисления достаточно просты, то пере- ход от естественной записи целых чисел к записи через систему остатков и обратное восстановление ответа в целочисленном виде могут свести на нет все возможные преимущества при вычисле- ния х. Если, однако, объем вычислений достаточно велик, то такой переход может оказаться выгодным. Это происходит по- тому, что при вычислениях все промежуточные результаты можно сохранять в виде системы остатков, выполняя обратный переход к целочисленному виду только при окончательном ответе. 
75 2.8. Китайские теоремы об остатках В кольце многочленов над некоторым полем также имеется китайская теорема об остатках, формулировка которой приве- дена на рис. 2.3 и которая доказывается по той же схеме, что и для целых чисел. Теорема 2.8.3. Для заданного множества попарно взаимно про- стых многочленов т«» (х), т<'> (х), ..., т<~> (х) и множества много- членов с<в> (х), с<'> (х), ..., с~~~ (х), таких что deg с<~> (х) ( ( deg т<'> (х) система уравнений с<'> (х) = с (х) (той т<'> (х)), i = О,..., Й, имеет не более одного решения с (х), удовлетворяющего условию k deg с (х) ( ~'.~ deg т<'> (х). й=0 Доказательство. По существу доказательство совпадает с до- казательством теоремы 2.8. 1. Предположим, что имеются два решения, а именно с (х) = Q«> (х) т<'> (х) + с<'> (х) с' (х) = Q' «> (х) т<'> (x) + с<'> (х), так что разность с (х) с' (х) кратна многочлену т<'> (х) для каждого с. Тогда многочлен с (х) с' (х) кратен и многочлену Дт«> (х), причем 1=0 deg [с (х) с' (х)] ( deg П т<'> (х) 1=0 Следовательно, с (х) с' (х) = О, и доказательство закончено. р Система сравнений может быть решена так же, как и в случае кольца целых чисел. В кольце многочленов над некоторым нолем для любых заданных s (х} и t (х) существуют многочлены а (х) и Ь (х), удовлетворяющие условию НОД [s (х), 3 (х) l) = а (х) s (х) + Ь (х) t (х). k Пусть М (х) = P т<'> (х) и М<'> (х) = М (х)/т, (х); тогда r=0 НО~ [М<~> (х), т<'> (х) 1 = I. Пусть N«> (х) и и«> (х) удовлетво- ряют равенству И«> (х) М «> (х) + и«> (х) т«> (х) = 1. Теорема 2.8.4. Пусть М (х} = Дт<'> (х) произведение no- r=0 парно взаимно простых многочленов; пусть М<'> (х) = М (х}/т«> (х} и для всех i многочлены й/<'> (х) удовлетворяют условиям 
Гл. 2. Введение в абстрактную алгебру 76 Задачи а. Показать, что существует только одна группа с тремя элементами. По- строить ее и показать, что она абелева. б. Показать, что существу~от только две группы с четырьмя элементами. Построить их и показать, что они обе абелевы. Показать, что одна из двух групп с четырьмя элементами не содержит элементов порядка четыре. Эта группа называется четверной группой Клейна. Пусть групповая операция на группах из задачи 2.1 называется сложе- нием. а. Определить умножение на трехэлементной группе так, чтобы она стала кольцом. Является ли такое определение единственным? б. Для каждой из четырехэлементных групп определить умножение так, чтобы превратить их в кольца. Является ли каждое определение един- ственнымм? Какое из трех построенных в задаче 2 2 колец является полем? Можно ли задать другое умножение так, чтобы получить поле? Доказать, что в циклической группе с д элементами выполняются равенства ае = ао и (d) > = аа а. Показать, что 22 Х Zz изоморфно Z<. б. Показать, что Z2 Х Zq не изоморфно Zq. Привести пример кольца без единицы. Отталкиваясь от пары (о;} ~ (Vg} преобразования Фурье, доказать сле- дующие стандартнь1е свойства дискретного преобразования Фурье: в. Линейность: (ао + Ьо>) « (аде+ Ьу~}. б. Свойство сдвига: «о<<>>>> «-~ >и >~я). в. Модуляционное свойство: 1и ог) (V„>>+»>j. 1г1 Показать, что преобразование Фурье вектора даниых og = о ~, где r‒ целое число, содержит единственную ненулевую спектральную компоненту. Какова эта компонента, если r = О? Показать, что see спектральные ком- поненты вектора, имеющего только одну ненулевую компоненту, не равны нулю- Доказать, что если А ‒ теплицева матрица, а Я ‒ обменная матрица той же размерности, то A~ = JAJ. а. Найти НОД [1573,308], используя алгоритм Евклида. 2.1. 2.2. 2.3. 2.4. 2.6. 2.6. 2-7. 2.8. 2.9. 2.10. Ж<'> (х) М<'> (х) + и<'> (>с) т«> (х) = 1. Система сравнений с«>(х) = с(х) (той т«>(х)), i = О, ..., Й, имеет единственное решение, даваемое многочленом с (х) = ~", c«> (х) N«> (х) М«> (х) (mod М (х)). 8=0 Доказательство. Нам нужно только доказать, что многочлен с (х) удовлетворяет каждому сравнению данной системы. Но с (х) = с<'> (х) К<'> (x) N«> (х) (mod m«> (x)), так как т<'> (х) является делителем многочлена М<'> (х), если r + i. Наконец, так как N«> (х) М«> (х) + и>'> (х) т<'> (х) = 1, то Ж<'> (х) М«> (х) = 1 (той т<'> (х)) и с (х) = с<'> (х) (mod m<'> (х)), что и завершает доказательство теоремы. [] 
3адачи 77 б. Найти целые числа А и В, удовлетворяющие равенству НОД [1573,308] = A 1573 + В 308. 2.11. Рассмотрим множество S = (О, 1, 2, 3), на котором заданы операции тогда и только тогда, когда преобразуемая последовательность данных является вещественной. Пусть G ‒ произвольная группа (не обязательно конечная). Условимся называть групповую операцию умножением и единичный элемент едини- цей. Пусть g ‒ произвольный элемент группы и v ‒ наименьшее положи- тельное число, если оно существует, такое что g = 1, где под g понимается v-кратное произведение g a g * ... e g. Dîêàçàòü, что подмножество ° ° ° g, g~, ..., g»~, g»} образует в G подгруппу. Доказать, что эта подгруппа является абелевой даже тогда, когда G неабелева группа. Доказать, что множество вещественных чисел вида }а+ Ь ~2}, где а и Ь ‒ рациональные числа, образует поле относительно обычных операций сложения и умножения. Кольцо кватернионов состоит из всех выражений внда 2.13. 2.14. 2. 15. а = ао + а~~ + ~j + аф, где ао, а„а2 и аэ ‒ вещественные числа, à 1, ( и Й ‒ неопределенные переменные. Сложение и умножение определяются иравилами а+ Ь = (ао+ bp) + (а, + ЬД с+ (а~+ 6g) ) + (аз+ Ьз) А, аЬ = (аоЬо ‒ а1Ь1 ‒ Qgbg ‒ азЬЙ + + (а,Ьо + аоЬ1 ‒ а~Ь2 + а2ЬЗ) i + + (,чдЬо+ адЬ~+ аоЬ~ ‒ адЬд) у+ + (алло ‒ а2Ь~+ а~Ь2+ ао"з) >. Доказать, что кольцо кватериионов действительно образует кольцо, ио не поле. Какое из свойств поля в этом кольце не выполняется7 Доказать теорему 2.2 5. Поле из трех элементов GF (3) задано арифметическими таблицами 2.16. 2.17. Является ли это множество полемик 2.12. Доказать„что комплекснозначное дискретное преобразование Фурье удовлетворяет условию симметрии 
Гл. 2 Введение в абстрактную алгебру Вычислить определитель следующей матрицы и показать, что раиг ее равен трем: 1 2 1 2 О 1 2.18. (ДПФ переставленной последовательности). Рассмотрим дискретное пре- образование Фурье л ‒ 1 и,= fm"î,, k=o, ..., n ‒ I, 8=0 и предположим, что а взаимно просто с и. Пусть перестановка компонент вектора v задается равенством о~ = о(( ~)>. Доказать, что является перестановкой компонент вектора V, задаваемой равенством V~ = V((~~)) для некоторого целого Ь, взаимно простого с и. Год содержит самое большое 366 дией. Предположим, что все месяцы за исключением последнего содержат по 31 дню. а. Можно ли однозначно определить порядковый иомер дия в году по задаи- ным его иомерам в месяце и иеделе? 6. Предположим далее, что месяц содержит 31 день, а неделя ‒ 12 дией. Можно ли теперь одиозначно определить порядковый номер дня в году по заданным его номерам в месяце и неделе? в. Используя 31-дневный месяц и 12-дневную неделю, выписать формулу для вычислеиия порядкового номера дия в году через его номера в месяце и неделе. г. Сделать несколько числовых примеров. Сколько векторов содержится в векторном простраистве GF" (2)? Правильно ли утверждение о том, что если х, у и г линейно независимы над GF (q), то также линейно иезависимы векторы х+ у, y+ г и г+ х? Доказать, что если S и Т ‒ два двумерных различных подпространства трехмерного пространства, то их пересечение образует одномериое под- пространство. Пусть S ‒ произвольное конечное множество. Пусть G ‒ множество всех подмножеств множества S. Для двух множеств А и В через А ~ В обозначим миожество всех элементов, которые прииадлежат хотя бы одному из множеств А или В; через А Р В ‒ множество scex элементов, которые принадлежат одновременно и А, и В; через А ‒ В ‒ множество элемен- тов, принадлежащих А, но не принадлежащих В. а. Показать, что множество G с операцией объединения U множеств в ка- честве групповой операции е не является группой. 6. Операция симметрической разности миожеств ~ определяется равен- ством 2.19. 2.20. 2.21. 2.22. 2.23. А д В = (А ‒ В) 0 (В ‒ А) Показать, что множество G с симметрической разностью в качестве груп- повой операции образует группу Является ли она абелевой? в. Показать, что множество G с операциями < и Д образует кольцо. Яв- ляется ли это кольцо коммутативным? Содержит ли это кольцо единицу? 
Замечания 79 Заыечания 1) Не требующее предварительной подготовки хорошее изложение начал линейной алгебры и теории матриц можно найти также в книге. 'Головина Л. И. Линейная алгебра и некоторые ее приложения. ‒ 4-е изд. ‒ N. Наука, 1985. Более углубленное изложение содержится в следующих книгах. Курош А. Г. Курс высшей алгебры. ‒ 11-е изд. ‒ М.: Наука, 1975; Мальцев А. И. Основы линейной алгебры. ‒ 4-е изд. ‒ М.: Наука, 1975. ‒ Прим. перев. В этой главе рассматривался обычный материал современной алгебры. Можно указать много учебников, в которых этот материал излагается более детально. В качестве легко усваиваемого вводного курса, по уровню достаточного для данной книги, мц рекомендуем книгу Биркгофа и Маклейна [1] (1941). Монография Ваи дер Вардена [2] (1949, 1953) представляет собой курс более высокого уровня, адресованный в основном математикам и углубленно изла- гающий многие вопросы. Материал по линейной алгебре и теории матриц мощно найти также и в учебниках, специально посвященных этим разделам алгебры. Особенно подходящей представляется книга Тралля и Торнгейма [3] (1957), так как в отличие от миогих других книг в ней не предполагается, что рассма- триваемое поле является подем веществеиных или комплексных чисел ~). В книге Полларда (7] в явном виде изложено понятие преобразования Фурье в произ- вольном поле. Поля Галуа назваиы в честь Эвариста Галуа (18!1 ‒ 1832). Абелевы группы названы в честь Нильса Хенрика Абеля (1802 ‒ 1829). 
Глава 8 Б ЫСТР Ы Е АЛГОРИТМЫ КОРОТКИХ СВЕРТОК Наилучший известный способ эффективного вычисления свер- ток состоит в использовании теоремы о свертке и быстрого алго- ритма преобразования Фурье. Этот способ обычно бывает доста- точно удобен и часто работает с удовлетворительной скоростью, хотя существуют и лучшие методы. Однако в тех приложениях, в которых стоит заботиться о дальнейшем снижении вычисли- тельных затрат, целесообразен переход к другим методам. В слу- чае когда длина свертки мала, лучшими с точки зрения числа умножений и сложений являются алгоритмы Винограда вычисле- ния свертки. Описание алгоритмов Винограда занимает основ- ную часть данной главы. В следующих главах будет показано, как можно, соединяя вместе эти малые алгоритмы, строить алго- ритмы для длинных сверток. При таком подходе алгоритмы для длинных сверток окажутся хорошими, только если хороши алго- ритмы для коротких. Поэтому поиску алгоритмов коротких сверток уделяется большое внимание. влетали алгоритмов свертки могут зависеть от конкретного поля, над которым вычисляется свертка, но общая идея постро- ения таких алгоритмов от поля не зависит. Хотя, конечно, наи более важные приложения имеют поля вещественных и комплекс- ных чисел, мы описываем методы построения алгоритмов свертки применительно к любому представляющему интерес йолю. 3.1. Циклические свертки и линейные свертки В компактном виде линейная свертка записывается как произ- ведение многочленов s (х) = g (х) d (х). Коэффициенты s, этого многочлена даются равенствами N ‒ 1 s, = g g, „а. = О, ..., Ь +- Л ‒ 1, @=О где degg(х) = L 1 и degd(х) = N 
3.1. Циклические и линейные свертки 81 s (х) = g (х) d (х) (mod х" 1), где deg g (х) = deg d (х) = n 1, коэффициенты даются равен- ствами и†! sf g g((f~))cd i = O, ..., n ‒ 1, a=o и двойные скобки обозначают вычисления по модулю л, если вычислять ее прямо по выписанным формулам, содержит п~ умно- жений и n (n 1) сложений. Циклическую свертку можно также вычислять как линейную свертку с последующим приведением по модулю х" 1 (). Следовательно, эффективные способы вы- числения линейной свертки приводят также к эффективным мето- дам вычисления циклической свертки. Наоборот, эффективные методы вычисления циклической свертки можно легко превратить в эффективные методы вычисления линейной свертки. Популярным способом вычисления циклической свертки яв- ляется использование теоремы о свертке и дискретного преобра- зования Фурье. Согласно теореме о свертке в частотной области, S> G<D>, k=0, ..., n ‒ 1, так что свертку можно вычислять,1 выполняя последовательно преобразование Фурье, поточечное умножение и обратное пре- образование Фурье. Эта процедура иллюстрируется рис. 3.1. Средний блок содержит п комплексных умножений, что мало по сравнению с л~. Если л имеет много делителей, то описываемое в следующей главе быстрое преобразование Фурье может привести к существенному уменьшению числа вычислений в первом и третьем блоках, сведя их к величинам, также малым по сравне нию с л'. Приведенная на рис. 3.1 продЪдура вычисления циклической свертки относится к комплексному случаю. Поэтому естественно ожидать, что в случае вещественных последовательностей этот алгоритм сильнее, чем требуется, и его эффективность может быть повышена. Некоторая модификация позволяет почти тем же самым алгоритмом вычислять одновременно две вещественные свертки. 1) При N = L лииейную (L )( N)-свертку часто называют N-точечной линейной сверткой, а циклическую свертку по модулю х" ‒ 1 часто называю~ и-точечной циклической сверткой. ‒ Прим. перев. Прямые способы вычисления произведения многочленов со- держат число умножений и сложений, примерно равное произ- ведению степеней многочленов, LN; возможны, однако, другие способы вычисления такого произведения, содержащие меньшее число вычислений. Циклическая свертка, 
82 Гл. 3. Быстрые алгоритмы коротких сверток Вход Вычислить n ‒ I >a= g о~"4 ~=о A=0, ...,n ‒ 1 n ‒ 1 ta= g~ C=O 1=0, ...,n ‒ 1 Вычислить Sg брР~ 1=0, ..., л ‒ 1 Вычислить n ‒ I 8g = ‒ (0 Sg -И й i=0, ...,n ‒ 1 1 Выход Рис. 3.1. Вычисление циклической свертки с помощью преобразования Фурье. Вещественное преобразование Фурье обладает свойством симме- трии (см. задачу 2.12) V~=@„' ~, А=О, ..., и ‒ 1. Предположим, что d' и d" ‒ ~- вещественные векторы длины и и пусть компоненты комплексного вектора d длины п задаются правилом d~ = d; + jd~, i = О, ..., n ‒ 1. Тогда его дискретное преобразование Фурье удовлетворяет равен- ствам Р =И+у~ь в л~ л~ л' еа ъ~з ° ° ° з И 1. ~п ‒ Й ‒ ~a )~a, Следовательно, >i = р Фж+ >:~], k=0, ..., и ‒ 1. ~Й ‒ [+k ~~П ‒ й] з 2) Эти формулы позволяют вычислить преобразование Фурье двух вещественных последовательностей, выполняя одно дискретное преобразование Фурье и некоторые дополнительные сложения- 
3.1.. Циклические и линейные свертки 83 Яыкод Рис. 3.2. Вычисление двух вещественных циклических сверток с помощью пре- образования фурье. Описанную идею можно применять и в обратном порядке, начиная с двух комплексных преобразований двух вещественных последовательностей. Для заданных комплексных преобразова ний D' и 0" пусть D> = D>+ j'D>, k = 0, ..., и ‒ 1, где в общем случае и Р~ и Р~ являются комплексными числами. Ч'огда обратное преобразование Фурье приводит к равенствам d< d; + /d~', ~ = О, ..., n ‒ 1, из которых обе вещественные последовательности вычисляются немедленно. 
84 Гл. 3 Быстрые алгоритмы коротких сверток Используя описанную идею, процедуру на рис. 3.1 можно заменить более эффективной процедурой одновременного вычисле ния двух вещественных сверток, представленной на рис. 3.2. 3.2. Алгоритм Кука Таама Алгоритм Кука Тоома является алгоритмом вычисления линейной свертки, который был разработан как метод умножения двух многочленов. Запишем линейную свертку в виде произведе- ния двух многочленов s (х) = g (х) d (х), где deg d (х) = N 1 и degg (х) = L 1. Степень многочлена s (х} равна N + L 2, так что этот многочлен однозначно опре деляется своими значениями s N + L 1 различных точках. Пусть (3„(3„..., Izaak множество из L+ Ш 1 различных вещественных чисел. Если нам известны s(P„) для k = О, ..., N + L 1, то s (х) можно вычислить по интерполяционной фор- муле Лагранжа. Согласно теореме 2.7.10, многочлен ‒ П (х ‒ Ц) s (х) = s (P,) П (pt ‒ ~,) 1=0 f ôü~ является единственным многочленом степени и 1, принима- ющим значения s (t3„) при х = I3„~~~ s~~x k = О, ..., п 1. Идея алгор итма Кука Тоома состоит в том, чтобы сначала вычислить величины s (P„) для k = О, ..., п 1, а затем восполь- зоваться интерполяцией Лагранжа. Алгоритм Кука Тоома приведен на рис. 3.3. Умножения даются равенствами s (Ц) = g (~3~) d(P„), k = О, ..., L + К ‒ 2. Всего имеется L + N 1 таких равенств, так что здесь мы имеем L + N 1 умножений, и, если разумно выбирать точки I3<, то полное число умножений будет исчерпываться этими умноже- ниями. Имеются еще и другие умножения, а именно те, которые входят в вычисление величин Й (~3„) и g (0~) и те, которые уча- ствуют в интерполяционной формуле Лагранжа. Но эти умноже- ния представляют собой умножения на малые константы, и мы не будем их учитывать при подсчете полного чйсла умножений '}, хотя полностью их игнорировать нельзя. 1) На самом деле не учитывать можно только умножения на О и ~1; ко, как правило, за счет некоторых предварительных проделанных раз и навсегда вычислений удается свести рассматриваемые константы к трем указанным.‒ Прим. мрев. 
3.2. Алгоритм Кука ‒ Тоома 85 Вход Вь~ход Рис. 3.3. Структура алгоритма Кука ‒ Тоома. i) Первым, еще до Тоома (1963) и Кука (1966), способ выполнения (2X2)- свертки с тремя умиожениями и четырьм. сложеииями описал А. Карацуба [ДАН, 145 (1962), 293, 294]; его алгоритм состоит в следующем.' зо = додо, зй = ( Простейшим примером является линейная (2Х2)-свертка: d(x) = Идх+ И~, g(x) =g,õ+g, и я(х) = d(x)g(x). К та- кому вычислению сводится прохождение двух отсчетов данных через КИО-фильтр с двумя отводами. Очевидный алгоритм вы- полнения такого вычисления содержит четыре умножения и одно сложение, но мы построим алгоритм с тремя умножениями, тремя сложениями. Может показаться, что эта задача слишком мала для каких-либо практических применений. Но на самом деле хороший алгоритм решения этой задачи является хорошим бло- ком, из которого можно строить тщательно проработанные алго- р итмы. Таким образом, рассматриваемый пример представляет собой нечто большее, чем простую иллюстрацию алгоритма Кука Тоома; он важен практически '). B качестве первой попытки опишем алгоритм с тремя умно- жениями и пятью сложениями, а затем ег) улучшим. Так как 
86 Гл. 3. Быстрые алгоритмы коротких сверток степень многочлена s (х} равна двум, то надо выбрать три точки. Выберем их равными [3« = О, [3h = 1 и [3« = 1. Тогда d ([3«) = do, ~1 (}3h) = «о + 4 d ([3«) = «о Chý, а ([3о) = a'î g (}3h) = gо + и g([2) ЙО Й1 s ([3«} = g (13«} d (l3«} s ([3h) = g ([3h) d ([3h) ° ([32) g ([3») ~ ([32)г так что требуются три умножения. Если КИО-фильтр задается фиксированным многочленом g (х}, то константы g ([3„) не надо каждый раз вычислять заново; их можно вычислить заранее один раз и запомнить. Коэффициенты многочлена g (х) в запоминании не нуждаются. Наконец, согласно интерполяционной формуле Лагранжа s (x) = s ([3«} L«(х) + s ([3h} L, (х) + s ([3«} L, (х), где интерполяционные многочлены равны L„(x) = х'+ 1, L, (х) = (1/2) (х'+ х}, L, (х} = (1/2} (х' х). Это завершает описание алгоритма Кука Тоома для вычисле- ния s (х). Но вычисления можно организовать в более компактной форме. Деления на 2 можно «похоронить» так, чтобы они не были видны. Для этого просто заменим константы g (P„) новыми, по- глощающими этот делитель. Пусть GP = gP Gh = (1/2) (go + gh) G« = (I/2) (gо Д'1). Так как в большинстве случаев многочлен g (х) фиксирован. то эти константы можно вычислить заранее, и ничто не мешает нам определить их таким образом. Гогда L,> (x) = х' + 1, L, (õ) = х' + х, L« (x) = х' х. Построенный алгоритм показан на рис. 3.4, а и в компактной форме может быть записан в матрично-векторных обозначениях в виде s = С j[Bg].[Ad]}, где точкой обозначено покомпонентное умножение векторов Bg и Ad. Матричная запись дает удобную форму обозрения алго- ритма, но вычисления, конечно, проводятся не посредством умножения матриц. Умножение на матрицы А и С выполняется как серия сложений. Возможная последовательность вычислений показана на рис. 3.4, Ь. 
87 3.2. Алгоритм Кука ‒ Тоома 1 0 0 Go 1 0 0 1 ‒ 1 G, ‒ 1 G ! где Рис. 3.4. Алгоритм Кука ‒ Тоома вычисления линейной свертки 2-точечных век- торов. Алгоритм Кука Тоома можно рассматривать как фактори- зацию матрицы. В рассматриваемом примере свертка может быть записана в виде Яю Йо или, кратко, s = Td. На рис. 3.4с,алгоритм Кука Тоома ,п,пя этой свертки переписан с использованием диагональной ма- трицы, также обозначенной 6 и содержащей элементы вектора Q. Алгоритм теперь имеет форму s = CGAd, что позволяет интерпретировать его как факторизацию матрицы Т = CGA, где А матрица предсложений, С есть матрица постсложений, а б диагональная матрица, ответственная за see умножения. Число умножений равно размерности матрицы G. Такое представление алгоритма очень полезно для обозрения его структуры. Ь) Dî D) D, S) S. ~о S) ~э do do + di do GOD0 G)D, 0~0 So S ‒ S„ 5о + Si + Sz 
88 Гл. 3. Быстрые алгоритмы коротких сверток В общем случае линейная свертка может быть выражена в виде s= Td, где d входной вектор длины N, s выходной вектор длины N + L 1 и Т представляет собой ((N + L 1) х N)-матрицу, элементами которой являются компоненты вектора g. Алгоритм Кука Тоома в такой форме представляет собой алгоритм фак- торизации матриць~ g (Ро) = иод ch, Ы (Рд) = go gh ~(Ро) = g(Po) < (Ро) ‒ Д~АРоо ~(Р) =g(Ри) 1(Р1) ‒ вАРд где t (х) = g (х) d (х) ддд1дх'. Согласно интерполяционной фор- муле Лагранжа, s (х) ghdh»' = 1(Рд) Lh (х) + t(po) Lo (х), где L, (х) = х + 1 и Lh ,(х) = х. Объединение всех этих фрагментов дает искомый алгоритм ')д s(») ghdh»' + ( (d, 4) (ио й) + иА + ид4) х+ Мо. Алгоритм содержит три сложения и три умножения. Его матрич- ная форма выписана на рис. 3.5, который полезно сравнить с рис. 3.4. 1) Это приведенный на стр. 85 алгоритм А. Карацубы (1962), в котором не учтено в числе сложений вычисление go ‒ дд. ‒ Прии. перев. Т =CGA, где G диагональная матрица, а матрицы А и С содержат только малые целые числа. Алгоритм Кука Таама можно модифицировать к другому варианту, содержащему то же число умножений, но меньшее число сложений. Заметим, что sz», = уьдд1дод. Для вычисле- ния этого коэффициента необходимо одно умножение. Степень модифицированного многочлена s (») ‒ ат„+дт,» + = к (») d (») ‒ а,.+~,о» + равна L + N 3, так что использующее идеи алгоритма Кука Тоома вычисление этого многочлена требует L + N 2 умножь ний. Общее число умножений опять равно L + N1, ,но сложе ний теперь будет меньше. Рассмотрим поведение этой модификации алгоритма Кука Тоома при вычислении линейной (2x2)-свертки. Выберем Po = О и Ph = 1. Тогда дд (Ро) = do~ 1(Рд) = d 
3.2. Алгоритм Кука ‒ TooMa (ao ‒ а) 1 ‒ 1 ~о dg Рис. 3.5. Улучшенный алгоритм Кука ‒ Тоома вычислеиия лииейной (py,2) свертки. Выход Рис. 3.6. другое описание алгоритма Кука ‒ TooM>. Алгоритм Кука Тоома эффективен по числу умножении; но если объем задачи растет, то число необходимых сложений также начинает быстро расти. Это происходит потому, что хоро ший выбор чисел Pq в виде О, 1 и 1 уже сделан, и с ростом задачи m,~ должны использовать также «+2, +3 и другие малые целые числа. При этом матрицы А и С будут содержать эти числа. Ко нечно, умножения на них можно заменить соответствующим числом сложений, но это резонно делать только в случае, когда выбираемые числа малы. Поэтому алгоритм Кука Гоома ста новится слишком громоздок при вычислении сверток, болыдих чем Зх4 или 4х4. Для больших задач надо пользоваться описы- ваемыми в следующем разделе алгоритмами Винограда вычисле ния сверток или итерировать малые алгоритмь| Кука ‒ Тоома, используя изучаемые в гл. 7 гнездовые методы. Имеется еще один подход к пониманию алгоритма Кука Тоома, и эта альтернатива перекидывает мостик к следующему Вход 
90 Гл. 3. Быстрые алгоритмы коротких сверток разделу. Вместо того чтобы выбирать множество различных чисел (Po, [3„..., PL+Nz}, выберем множество многочленов (х Ро, х P„..., х P~~,}. Тогда можно, как на рис. 3.6, записать g(6~) = Яаь[у(хЦ, d9~) = Я„а„[с1(х)]. Это просто несколько более сложный способ сказать то же, что говорилось и раньше. Преимущество, реализуемое в следующем разделе, состоит в замене многочленов первой степени многочле- нами более высоких степеней, что увеличивает конструктивные возможности. С этой более изощренной точки зрения интерполя- ционную формулу Лагранжа можно рассматривать как некото. рую форму обращения китайской теоремы об остатках для того частного случая, когда в качестве многочленов-модулей выбраны только многочлены первой степени. В более общем случае интер- поляционную формулу Лагранжа приходится отвергнуть, отдавая преимущество китайской теореме об остатках. 3.3. Алгоритмы Винограда вычисления коротких сверток Предположим, что требуется вычислить s (х) = g (х) d (х) (mod и (х)), где и (х) фиксированный многочлен степени и над полем F, а g(x) и d (х} многочлены над этим же полем, причем их степени меньше п. Задача вычисления линейной свертки s (х) = g (х) d (х) может быть вложена в эту задачу, если в качестве и выбрать целое число, большее степени многочлена s (х}, а в качестве и (х} произвольный многочлен этой степени и. Тогда задача s (х) = g (х) d (х) (mod и (х)) становится тривиальной переформулировкой задачи вычисления линейной свертки, так как приведение по модулю и (х} не меняет s (х). коль скоро степень и (х) больше степени s (х). Это позволяет включить задачу о линейной свертке в общую задачу, рассматри- ваемую в данном разделе. Выбирая и (х} равным х" ‒ 1, мы включаем сюда также задачу вычисления циклической свертки, s (х) = g (х) d (х) (то4 х" 1). Мы хотим заменить задачу вычисления s (x) = g (x) d (х) (mod и (х)) некоторым множеством задач с меньшим числом вычислений. Чтобы разбить задачу на подзадачи, разложим многочлен и (х) 
3.3. Алгоритмы Винограда вычисления коротких сверток 91 на взаимно простые над некоторым подполем поля F многочлены: и (х) = и«» (х) т<'> (x) ... и<" †'> (х). Обычно если F поле вещественных или комплексных чисел, то в качестве подполя разложения выбирается поле рациональных чисел, и мы будем ссылаться на такой выбор, хотя теория до- пускает и другие подполя. (Если свертка вычисляется в конечном поле GF (р~), то в качестве подполя разложения обычно выби- рается простое подполе GF (р)). Процедура ставит своей целью минимизацию числа умножений в поле F, не пытаясь минимизи- ровать число умножений в подполе. В большинстве практических случаев этими умножениями в подполе оказываются умножения на малые целые числа, обычно на 1, О или 1, которые триви- альны. Начиная с данного момента, мы не будем учитывать умно- жения на рациональные числа в полном числе умножений, хотя практически всегда надо проверять, являются ли эти рациональ- ные числа на самом деле малыми целыми числами. Быстрые алгоритмы свертки основаны на вычетах я<>'>(х) = R <q» „[s(x)], А = О, ..., К ‒ 1. Согласно китайской теореме для многочленов, многочлен s (х) можно вычислить по системе остатков в соответствии с формулой s(x) = a«»(x)s«»(x)+ .. +а<" ‒ '> (x) s<" ‒ '> (х) (то4и(х)), где а<о> (х), ..., а<к ‒ '> (х) соответствующие многочлены с раци- ональными коэффициентами. Разобьем это вычисление на три шага. Сначала вычисляются остатки ««'> (х) = R «,> <Ä [d (х) ] и g<~> (х) = Я «,><„[g (х)] для всех lг = О, ..., K 1. Эти вычисления не содержат умножений. Затем вычисляются вели- чины з«'> (х) = g (х) d (х) (то4 и<" > (х)) = R «>l [ R <>,> ~ [g (X)]' R «» р [d (x)] ] = Я «,> <„, [g«'> (х) <><~> (х)]. Наконец, вычисляется многочлен s(x) = а<о>(х) s<о> (x) + ° .. + а<к ‒ '> (х) s« ‒ '> (х) (то4и (х)). Так как коэффициенты всех многочленов а<~>(х) являются раци- ональными числами, то последний шаг также не содержит умно- жений. Структура алгоритма Винограда для вычисления свертки показана на рис. 3.7. Умножения возникают только на втором шаге при вычислении коротких сверток, задаваемых произведе- ниями многочленов, g<~> (х) d«'> (х); так как число коэффициентов у многочленов g<~> (х) и d<~> (х) равно степени MHoro 
92 Гл. 3. Быстрые алгоритмы коротких сверток Вход Выход Рис. 3.7. Структура алгоритма Винограда для коротких сверток. члена т<~> (х), то полное число умножений, необходимых для стандартного способа вычисления этих произведений, К ‒ 1 равно ~ [deg т<~> (х) ]2. Это дает существенное уменьшение @=О числа необходимых умножений. Позже мы увидим, что исполь- зование той же самой идеи разбиения на еще более мелкие под- задачи позволяет добиться улучшения и при вычислении этих составляющих коротких сверток. На рис. 3.8 дается поучительное сравнение алгоритма Вино- града вычисления свертки и алгоритма, основанного на дискрет- ном преобразовании фурье. Для того чтобы сделать это сравнение более наглядным, алгоритм Винограда выписан в приведенных выше матричных обозначениях. После группировки членов и перехода к матричным обозначениям этот алгоритм записывается в виде равенства s = С ([Bg].[Ad]}, где точка обозначает покомпонентное произведение векторов Bg и Ad. Из этого сравнения видно, что алгоритм Винограда яв- ляется обобщением метода вычисления сверток с помощью пре- образования Фурье. В качестве примера рассмотрим вычисление свертки Зточеч- ного вектора с 2-точечным вектором. Пусть g (x) = gent + gs d(х) = й,х'+ d,õ+'d,. 
93 3.3. Алгоритмы Винограда вычисления коротких сверток Вход Вход Свертка Ю частютной абласти сдертюа Винограда Вьян с~ертка (mod й' ‒ Ц ВИМОд свертка (mod Ж('©)) Рис. 3.8. Сравнение двух способов вычисления сверток. Прямое вычисление содержит шесть умножений и два сложения. Мы сначала построим алгоритм, содержащий пять умножений и восемь сложений. Это не очень хороший алгоритм, но его по- строение является поучительным. Позже будет приведен алго- ритм, который лучше и содержит четыре умножения и семь сло- жений. Степень линейной свертки s (х) = g (х) d (х) равна трем. Вь>- берем m(х) = х (х ‒ 1}(х'+ 1) = m<»> (х) m<'> (х} m>'> (х). Мяоищтели взаимно просты', возможно и другое разложение многочлена m (х), но для иллюстрации метода мы остановимся 
94 Гл. 3. Быстрые алгоритмы коротких сверток на выбранном разложении. Вычеты равны g<О>(А) = go, d(o> (z) = d, g<'> (х) = д1 + go d< > (х) = ds + d~+ do g<'>(x) = g,х + g„ d<'>(x) = d,õ + (d, ‒ d,). Следовательно, s<o> (x) = g,((О, ""(x) =«~+g)«+d +d.) s<'> (х) = «,х + g(>) (d,õ + (do ‒ d,)) (mod х'+ 1). При вычислении s<o> (х) требуется одно умножение, при вычисле- нии s<'> (х) требуется одно умножение и, как мы увидим, при вычислении s<'> (х) требуются три умножения. Вычисление s<2> (х) сводится к вычислению двух величин (2) (2)д(2) (2)д(2) О = 00 0 ‒ К1 ~(2) (2)й(2) 1 (2) д(2) 81 =КО 1 ~01 ~ (которые случайно имеют структуру произведения комплексных чисел). Алгоритм этой части вычислений дается равенством ( (o> (2>) (2) Д'о L', l (и> ‒ g ) и содержит три умножения. Последний шаг состоит в вычислении s (х) по формуле s(x)=a<o>(x)s(o>(x)+а<'>(x)s<'>(x)+a<2>(x)s< (х) (mod õ4 ‒ х~+х2 х). где а<о> (х), а('> (х) и а<2> (х) вычисляются по китайской теореме об остатках следующим образом. Воспользуемся соотношением и(('> (х) m<~>(х) + N<~>(х) М<('> (х) = 1 и построим следующую таблицу.' V' (x) и (х) и' '(х) М"'(х) х ‒ х +х †! 2 х + х 2 Х ‒ Х x ‒ к + ! 2 ‒ 2(х + к+ 2) 2 1 ‒ 2(х ‒ 2) ‒ ! l 2 1 2(~ О х ! х ‒ ! 2 х +! Тогда а<~> (х) = N<s>(x) М<~> (х). Следовательно, s (х) = (ха ‒ х' + х ‒ 1) s<o> (х) + ‒ (хз + х) s<'> (х) + + ‒ (хз ‒ 2х2+ х) s<o> (х) (m(>d х4 ‒ хз+ х' ‒ х). 2 
3.3. Алгоритмы Вииограда вычислеиия коротких сверток 95 Последнее равенство может быть перезаписано в виде матричного равенства so Si Sg ‒ ! ! ! ‒ ! Sg Ч'еперь для построения искомого алгоритма надо собрать вместе его отдельные части. Всего имеются пять умножений, которые мы выпишем в выбранной единообразной форме S~ G~Dg„k = 0, ..., 4. Определим новые обозначения, соответствующие этой форме. Используя проделанные вычисления, для вектора D получаем определение 1 0 0 0 1 0 ‒ 1 Вектор б определяется аналогично, но в его определение мы включим знаменатели, которые должны появиться в матрице постсложений. Поэтому в данном ниже определении вектора б появляется самая левая матрица, содержащая извлеченные из ~0 D, Р рз D~ ! 0 0 0 ‒ 1 1 1 l 0 ‒ 2 0 0 1 0 0 0 0 111 lill 0 0 ,'0 llii 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 ! {}) 7 и Х ~Р) о 1 (~) 2 ! 
96 Гл. 3. Быстрые алгоритмы коротких сверток матрицы постсложений множители 1/2. Таким образом, 'J 1 2 l 2 I 2 l 2 Так как вычисление вектора G является предваряющим алго- ритм вычислением, то эту матрицу можно в дальнейшем просто отбросить. Наконец, матрица постсложений имеет вид о о о ‒ ! I 1 ! о -г о †! ! 1 ‒ 1 о о о о ! о о о Sî S, S, ~1 Э ~4 ! ‒ t 1 ‒ 1 о о г о ‒ 2 о о о ! ‒ ! о г ‒ 1 ‒ 1 Описанный алгоритм в матричной форме приведен на рис. 3.9. Порядок выполнения сложений в такой форме алгоритма не ука- зан. Читатель может сам поэкспериментировать с выбором по- рядка сложений, минимизируя их число; никакой специальной теории выполнения такой минимизации не разработано. Легко выполнить все предсложения с помощью четырех вещественных сложений. Постсложения можно реализовать с помощью следу- ющих восьми вещественных сложений: so = So. Ъ ‒ ~1+ ~1+ Sp С1 S4 ~2т 01 ~1 + A Ъ~ с!! ~8 + S4 sg cg SP + ~1 3то завершает рассматриваемый пример построения алгоритма Винограда для свертки, но построенный алгоритм можно улуч- шить. Более общая форма алгоритма Винограда соответствует G0 С, С2 Ñ4 А 2 2 0 l 2 2 l l 2 2 1 0 0 0 0 1 0 0 0 0 ~ 1 и 
3.3. Алгоритмы Винограда вычисления коротких сверток 97 ! 0 0 1 1 ! 1 ! ‒ ! ! 0 ‒ ! 0 ! 0 ! 0 0 0 0 †! ! 2 ! ‒ 1 ! 0 ‒ 2 0 2 ‒ 1 ! 0 ‒ ! ‒ 1 <о О, G2 ~'э G4 ~о S( S2 $э 1 0 ! 2 2 0 I 2 l 2 2 l l 2 2 <о G, G2 G3 ~~~4 Рис. 3.9. Пример алгоритма Винограда вычисления свертки. выбору многочлена и (z) меньшей степени. Это приводит к не правильному вычислению свертки, но ошибка легко подправляется с помощью нескольких дополнительных вычислений. Согласно алгоритму деления для многочленов можно записать s (х) = Q (х) т (х) + R <,1 [я (х) ]. Мы уже рассмотрели случай deg т (х) ) deg s (х), E котором частное Q (х) тождественно равно нулю. Если deg и (х} .< deg s (x), то алгоритм Винограда позволяет вычислить я (х) по модулю многочлена и (х}. Член Q (х) т (х) представляет собой погреш- ность, которую можно вычислить дополнительно и прибавить к результату. Простейшим является случай, когда deg т (х) = = deg s (х). Тогда многочлен Q (х) является константой, так как его степень должна быть равной нулю. Если т (х) приведенный многочлен степени п, то, очевидно, Q (х) = s„, где я„коэффи- циент при х„в многочлене s (х). Следовательно, s (x) = я„т (х) + R <> [я (x) ], и я„легко вычисляется как произведение старших коэффициентов многочленов g (х} и d (х). Эту модификацию можно формально включить в основной алгоритм Винограда для вычисления свертки путем замены многочлена т (х} формальным выражением и (х) (х ‒ оо). Утвер- ждение s (х) = s (х) (mod и (х) (х оо)) представляет собой просто удобное сокр ащение для данного выше точного утверждения. Вернемся к предыдущему примеру и применим описанную модификацию алгоритма к вычислению свертки s (х) = (д,х + ~,) (д,х' + d,õ + d,). качестве модуля выберем теперь многочлен х (х 1) (х+ + 1) (х oo). Алгоритм будет содержать четыре умножения; 
98 Гл. 3. Быстрые алгоритмы коротких сверток множителю (х оо) соответствует произведение дф,, а остальные три умножения это произведения вычетов по модулям х, х 1 и х + 1. Сразу видно, что 1 d 1 d 1 Коэффициенты многочлена s (х) вычисляются в соответствии с китайской теоремой об остатках.' s (x) = а)о> (х) S, + а<) > (х) S) + a<s> (x) S, + х (х ‒ 1) (х + 1} S~ = =( '+1)S,+ ( х'+ х) Я,+( х' ‒ ‒ х) 5,+ + (х' ‒ х) S,. Следовательно, 1 0 0 0 0 1 ‒ ! ‒ 1 So S) ‒ о Sg 0 0 0 1 Окончательная формулировка алгоритма приведена на рис. 3.1Q. Алгоритм содержит четыре умножения и семь сложений при условии, что диагональная матрица вычисляется Заранее. ю, = 1 ‒ 1 1 (go ‒ g)) 1 ‒ 1 д Рис. 3.10. другой пример алгоритма Винограда вычисления свертки. ЗА. Построение алгоритмов коротких линейных сверток Рассмотренный в предыдущем разделе метод Винограда по- строения коротких сверток приводит к хорошим алгоритмам. Однако следует подчеркнуть, что эта конструкция не исчерпы- вает всех возможных путей построения хороших алгоритмов. So S) S S, с �[Фа 1 ‒ 1 О 1 о 1 1 ‒ 1 о о 
3.4. Построение алгоритмов коротких линейных сверток 99 Иногда хорошие алгоритмы удается получить с помощью удачной факторизации. Рассмотрим следующие тождества: аоА = ао~1о амит+ grado = (go+ а1) (d + А) ао4 аА gpg + Adg + godo = (go + ао) (dp + do) godo + + а1~11 godown g~4 + god~ = (g~ + go) (d~ + do) g~d4 godo аы4 = а4. Эти тождества позволяют вычислить коэффициенты свертки s (х) = = (g, + g,õ + а,х') (d, + d,õ + d,õ"-) c помощью шести умноже- ний и десяти сложений. Этот алгоритм, однако, не может быть построен с помощью китайской теоремы об остатках. Матричная форма записи алгоритма дается равенством о о о ‒ 1 ‒ 1 О 1 ‒ 1 1 ‒ 1 О О -1 -1 О О О 1 О о о о о о о о о о о О 1 О о о 1 О о о гд, 81 t2 48o + gi) (8О + 82) (81 + g2) S2 2 Этот алгоритм следует сравнить с «наивным» алгоритмом, содер- жащим девять умножений и четыре сложения, и с «оптимальным» алгоритмом, который вскоре будет построен и содержит пять умножений и 20 сложений. Нельзя сказать, какой из этих алго- ритмов лучше. Это зависит от области применения. Позже мы будем строить большие алгоритмы из малых так, что и число умножений, и число сложений большого алгоритма будут в основ ном зависеть от числа умножений в малом алгоритме. В этой ситуации число сложений малого алгоритма не играет суще- ственной роли. На рис. 3.11 затабулированы характеристики некоторых алгоритмов линейных сверток; на рис. 3.12 приведены некоторые из них. Оптимальный алгоритм линейной (3 X 3)-свертки выписан в виде примера на рис. 3.12. Оптимальный по числу умножений алго- ритм содержит пять умножений. Он подсказан описанным в разд. 3.8 алгоритмом Кука Тоома, который также содержит пять умножений. По существу он совпадает с алгоритмом Кука‒ Тоома и получается выбором многочлена т (х) = х (х 1) (х + 1) (х 2) (х ‒ оо). Так как все множители являются многочленами первой степени, то всего имеется пять умножений. (Если заменить один из множи- 
100 Гл. 3. Быстрые алгоритмы коротких сверток s (х) = д (х) d (х) Деаа(х) = L ‒ 1 degd(х) = 1V ‒ 1 Веществеиные свертки Число вещественных умножеиий Число вещественных сложений Длина и L Комплексные свертки Число комплексных сложений Число комплексиых умножеиий 3 15 Рис. 3.11. Характеристики некоторых алгоритмов вычислеиия коротких линей- иых сверток. Линейная свертка 2~3 3 умножения. 3 сложения 8о + 8~ Линейная сеертю 33~3 Ь умо3неннй, 20 сложений 0 ‒ 1 1 ago I 2(80 + gl + g2) l o(go gl + Я2) j(ge + egg + 4gg) Ю [!] 2 0 0 ‒ 2 -2 -2 ! 3 I -I 0 0 0 ~о S) S2 ~3 S4 Рис. 3.12. Некоторые алгоритмы зычислеиия линфйных сверток. Оредсложения А + 4~2 lg m Д ‒ g) Ро 4~о ~о+ <> Рг ~4+<3 Р3 =I>+I>+I>4-D> Р =д Постсложения ~о = 8о + 8о Т, = S, + S, Т2 = sz + 82 Т3 84+ 84 Т4 Т3 80 83 Т =З,+S =Т,‒ Т +Т s2 so+ Т2+ Т3 54 ‒ ‒ Т4 ‒ Т3 ~4 = 84 3 7 20 10 4 41 15 
3.4. Построение алгоритмов коротких линейных сверток телей многочленом второй степени, то получим шесть умножений, но меньшее число сложений.) Выходной многочлен дается равен- ством з (х) = Жх (х ) ) (х(-) ) (х ‒ р) [д (х) (( (х)] + Яффах (х ‒ 1) (х + 1) (х ‒ 2). Остатки определяются матричными уравнениями 1 0 0 1. 1 1 1 ‒ ! 1 1 2 4 0 0 1 о, G, G2 G3 о, 1 ‒ 1 1 ~0 D, D~ ~3 D~ 2 ~0 2 0 0 0 0 ‒ 1 2 ‒ 2 ‒ 1 2 ‒ 2 1 3 0 $0 ! I б S2 I 6S3 $1 $2 1 ‒ 1 ‒ 1 1 ‒ 2 $3 S, 0 0 0 0 1 Постоянные множители можно похоронить в константах диаго- нальной матрицы, переопределяя величины S> и Gq. Яля выпол- нения свертки требуется пять умножений. Матрица предсложений может быть реализована семью сложениями, а матрица пост- сложений 13 сложениями. Окончательная форма алгоритма показана на рис. 3.12. Хотя алгоритм построен для поля вещественных чисел, он пригоден и в поле комплексных чисел: пять умножений становятся пятью комплексными умножениями, а 20 сложений становятся 20-ю комплексными сложениями. где с целью сохранения стройности и упорядоченности принятых обозначений G4 и D4 формально определяются как вычеты по модулю многочлена (х оо). Таким образом, S), = G„D), для Й = О, ..., 4. Наконец, используя китайскую теорему об остатках, для многочлена s (х) получаем выражение .9 Я 1 з(х) = Я, (х' ‒ 2х' ‒ х+ 2) ‒ ‒ S, (х' ‒ х' ‒ 2х) + 2 2 + ‒ Я, ( х'+ Зх' ‒ 2х) + ‒ Яз (хз ‒ х) + S' (х4 ‒ 2х'+ х'+ 2х). Запись последнего шага в матричном виде дается равенством 
102 Гл. 3. Быстрые алгоритмы коротких сверток 0 0 1 1 ‒ 1 1 / ‒ ! -/ -1 0 0 ! 1 ‒ 1 1 / ‒ 1 ‒ / ‒ 1 Do в, Вг ~з О, Китайская теорема об остатках (или интерполяционная фор- мула Лагранжа) дает s (x) = $, ( х'+ 1) + ‒ S, (х4 + х'+ х'+ х) + + S, (x4 ‒ х'+ х' ‒ х) + Ss (x'+ ух' ‒ х' ‒ ух) + + ‒ я (х4 ‒ jx' ‒ -+ jx). 4 В матричной форме это равенство записывается в виде 4 Я I 0 0 0 0 So 0 4) 1 1 ‒ 1 ‒ 1 $) Sg 0 1 ‒ 1 / ‒ / ‒ 1 1 1 1 1 4 Множители 1/4 можно спрятать в диагональной матрице. Алгоритм содержит пять комплексных умножений, эквивалент шести комплексных сложений в матрице предсложений и экви- валент девяти комплексных сложений в матрице постсложений. Процедуру Винограда можно использовать для построения сверток и большей длины, чем те, что приведены на рис. 3.12; однако построенные таким образом большие алгоритмы, как пра- вило, громоздки и содержат слишком много сложений. Вместо этого можно строить большие алгоритмы из малых. Есть не- сколько способов построения алгоритмов данных сверток из Можно также специально строить алгоритм над полем ком- плексных чисел. Он также будет содержать пять комплексных умножений, но число комплексных сложений уменьшится. Вы- берем многочлен з (х) = х (х 1) (х + 1) (х ‒ 1) (х + j). Вычисление остатков дается равенствами 
3.5. Вычисление произведения многочленов по модулю 103 алгоритмов коротких сверток. Некоторые из них, а именно гнездо- вой метод и метод Агарвала Кули, будут рассмотрены в гл. 7. Такие алгоритмы содержат несколько больше умножений, чем требуется для алгоритма Винограда, но число сложений у них существеннр меньше. 3.5. Вычисление произведения многочленов по модулю некоторого многочлена Мы уже видели, как можно разбивать задачу вычисления циклической свертки или задачу вычисления линейной свертки на несколько подзадач меньшего размера. Меньшие задачи опять имеют вид s (х) = g (х) d (х) (mod т (х)), s (х) = g (х) d (х) (mod х' + 1), где deg m (х) = п и степени обоих многочленов g (х) и d (х) меньше и, т. е. форму произведения многочленов в кольце много членов по модулю т (х). Для того чтобы построить хороший алгоритм исходной линейной свертки, необходимо построить хорошие алгоритмы для каждого из меньших произведений многочленов. Достаточно рассмотреть только случай неприводи- мого многочлена m (х}, так как в противном случае разложение можно продолжить дальше. Как будет доказано в разд. 3.8, для неприводимого многочлена т (х) степени п число умножений, необходимых для вычисления s (х}, равно 2п 1. Обычно в алгоритме с наименьшим возможным числом умножений требуется большое число сложений. В прак- тически приемлемых алгоритмах должен достигаться разумный баланс между числом умножений и числом сложений. В данном разделе рассматриваются практические аспекты построения таких алгоритмов. Наиболее прямой метод состоит в вычислении линейной свертки g (х} d (х) (на что требуется по меньшей мере 2л 1 умножений} и дальнейшем приведении результата по модулю т (х} (что вообще не требует умножений}. Это на первый взгляд может показаться парадоксальным, так как мы предлагали вычислять линейную свертку путем разбиения на подзадачи, соответствующие непри- водимым многочленам, а теперь сводим задачу обратно к линей- ным сверткам. Однако этим маневрированием «вперед- назад» мы существенно снижаем степень линейной свертки, что и улуч шает ситуацию. Мы уже рассматривали произведение многочленов 
!04 Гл. 3. Быстрые алгоритмы коротких сверток которое формально совпадает с комплексным умножением. Сейчас пришло время построить этот алгоритм. Одновременно мы будем рассматривать произведения многочленов s (х) = g (х) d(х) (mod х') s (х) = g (х) d (х) (mod х' + x -+- 1). Во всех этих примерах g (х) = д,х + -gp u d (х} = ~1,» Мы будем модифицировать описанную в равд. 3.2 линей- ную (2x2)-свертку. Алгоритм этой линейной свертки в поли- номиальной форме записывается в виде равенства s(x) = g(x) d (x) = ИА1»' + [g~d~ + gpdp (gi gp) (dg dp)]„+ + @о~о и содержит три умножения. Наша задача состоит в вычислении этого произведения по трем модулям: х' + 1, х' и х' + х -+- 1. Соответствующие три произведения получаются простой заменой x'- на ‒ 1, О и х 1 соответственно. А именно, s (х) = g (х) d (х) (mod х~ + 1) = ЫФ1 gpdp (g~ go) (~4 dp) ] x + gpdо ‒ gals s(x) = g(x) d(x) (modx') = [ggd1 gpdp (gl gp) (d1 dp) [ «+ gpdp s (х) = g (х) d (х) (mod х' + х + -1) = = [Мо (g~ ио) (~4 dp) ) х + ао4 ‒ а<4. В матричной форме эти три алгоритма соответственно имеют вид о ! ‒ ! g 8О 81 о о ! ! 
105 Второй иэ этих алгоритмов не очень хорош. Следуя по формаль- ному пути, мы построили алгоритм,. характеристики которого хуже следующего эвристического алгоритма, содержащего только одно сложение: о о О 1 ! go Р А ! Характеристики некоторых алгоритмов вычисления произ- ведения многочленов по модулю неприводимого многочлена затабу- лированы на рис. 3.13. В некоторых случаях указаны характе- ристики двух алгоритмов решения одной и той же задачи. На- пример, для модуля х' + 1 указан алгоритм, содержащий 9 умно- жений и 15 сложений, и алгоритм, содержащий 7 умножений Число умножений Число сложений Простой многочлен р (х) х~+ х+ 1 ха+ 1 х4+ хэ+ хэ+ х+ 1 P+ х~+ 1 х~+ х~+ х4+ х~+ ~~+ х+ 1 xxs+ xe+ 1 Рис. ЗЛЗ. Характеристики некоторых алгоритмов вычисления произведения многочленов по модулю простых многочленов. и 41 сложение. При выборе того или иного алгоритма надо оцени- вать ситуацию и понимать, как данный алгоритм вкладывается в алгоритм большей задачи. Часто случается, что несущественные преимущества в числе умножений в малом алгоритме приводят к большим преимуществам, когда этот алгоритм используется 'в виде блока в большом алгоритме, в то время как большие потери в числе сложений малого алгоритма приводят лишь к незначи- тельным потерям в числе сложений большого алгоритма. 'Гак, например, для модуля х4 + 1 алгоритм с семью умножениями может на самом деле дать больше, чем это может показаться. Можно построить также и библиотеку хороших алгоритмов для вычисления коротких циклических сверток. Эти алгоритмы можно строить как по методу Винограда построения коротких 3.6. Построение алгоритмов коротких циклических сверток 3 9 7 9 7 15 15 75 3.6. Построение алгоритмов коротких циклических сверток 3 15 41 16 46 39 53 267 
106 Гл. 3. Быстрые алгоритмы коротких сверток сверток, так и другими способами. Для построения алгоритма по методу Винограда надо быть уверенным в том, что каждое из рассматриваемых малых произведений многочленов может быть вычислено хорошим алгоритмом. Яля этих подзадач мы будем пользоваться уже построенными в предыдущем разделе алго- ритмами. В настоящем разделе в качестве примеров будут построены несколько хороших алгоритмов. Некоторые алгоритмы вычисле- ния коротких циклических сверток приведены в приложении A. Излагаемый в гл. 7 метод, известный под названием алгоритма Ага рвала Кули, позволяет строить алгор итмы вычисления сверток больших длин, комбинируя известные алгоритмы для коротких циклических сверток. Рассмотрим задачу вычисления циклической свертки s (x) = g (x) d (х) (mod - 1), где оба многочлена g (х) и d (х) имеют степень, равную п l. Один из способов решения состоит в том, чтобы найти сначала линейную свертку, а затем выполнить приведение по модулю х" 1. Чтобы реализовать такой' способ, надо модуль т (х) для вычисления линейной свертки выбрать так, чтобы его степень была по меньшей мере равна 2п ‒ 1, так как она должна быль больше суммы степеней g (х) и d (х). Альтернативный способ состоит в использовании китайской теоремы об остатках, на последнем шаге которой для восстановле- ния многочлена s (х) в качестве модуля т (х) используется не- посредственно х" 1, а в качестве взаимно простых модулей используются делители и' (х), m«> (х), ..., m<< ‒ '> (х) многочлена и (х). Так как сумма степеней этих простых делителей должна быть равна и, что меньше чем 2п 1, то можно ожидать упро- щения вычислений. С другой стороны, делители уже нельзя выбирать так, как нам удобно. Первый метод допускает выбор произвольных делителей, но сумма их степеней должна быть равной 2п ‒ 1, а не и. В качестве простейшего примера рассмотрим вычисление 4-точечной циклической свертки: s (х) = g (х) d (х) (mod ха 1). Я;елителями многочлена х4 1 служат циклотомические много- члены, х' ‒ 1 = (х ‒ 1) (x + 1) (х'+ 1) = т<о> (х) т<'> (х) т<'> (х). 8 этой задаче у нас нет реального выбора: циклотомические много- члены представляют собой такие модули, которые необходимо 
3.6. Построение алгоритмов коротких циклических сверток 107 использовать в алгоритме Винограда. Коэффициенты вычетов даются равенствами ‒ ) ! Мы уже построили несколько алгоритмов вычисления умножения по модулю х' -+- 1. Одним из них является правило 0 4~о 0 0 0 Следовательно, внутренние переменные даются определениями 1 О ‒ 1 О 1 ‒ 1 1 ‒ 1 1 О О О Далее, S„= G~Dz для Й = 0, ..., 4. Китайская теорема о6 Остатках дает s (х) = (х'+ хз + х+ 1) s<s> (х) ‒ ‒ (хз ‒ х2+ х ‒ 1) s<'> (х)‒ ‒ ‒ (х2 ‒ 1) в<2> (х) (mod х~ ‒ 1). б'0 б, G, б', G, 1 О 1 О,‒ 1 О ',1 ! ! ‒ ! ! 0 ‒ ! 0 ! 0 ‒ ) 
108 Гл. 3. Быстрые алгоритмы коротких сверток Таким образом, ! S'О) 4 0 ! ~!! ! ~<n э~о г4" 1 1 1 0 1 ‒ 1 0 1 1 1 ‒ 1 0 1 ‒ 1 0 ‒ 1 SI Sg ! 4 S0 -S I 1 1 0 ‒ 1 1 1 1 ‒ 1 0 ‒ 1 ‒ 1 ! †2,S, ‒ S ! 2 З I 2 ~4 Окончательный вид алгоритма показан на рис. 3.14. B упоря- дочивании элементов матриц, конечно, имеется некоторый произ- вол. В матрице предсложений допустима произвольная переста- новка строк, а в матрице постсложений перестановка столбцов; это не влияет на результаты вычислений. На рис. 3 15 приведены характеристики некоторых наилучших известных алгоритмов вычисления коротких сверток. Эти алго- ритмы, часть из которых приведена в приложении А, построены по описанному методу. В некоторых случаях для уменьшения ~исла сложений использовались дополнительные методы, анало- гичные тем, которые будут описаны ниже в оставшейся части раздела. Рис. 3.15 следовало бы дополнить характеристиками коротких сверток для поля комплексных чисел. Каждый алгоритм вы- числения свертки в вещественном поле подходит в качестве алго- р итма для комплексного поля. Но иногда многочлен х" 1 над полем комплексных чисел разлагается на большее число простых делителей, чем над полем вещественных чисел. Эго в ком- плексном случае дает конструктору алгоритма дополнительные ВОЗМОЖ КОСТИ- Алгоритм Винограда можно рассматривать как метод разло- жения некоторых матриц. Пусть s, g u d векторы длины и, компонентами которых являются соответственно коэффициенты многочлеиов s (х), g (х) и d (х). Циклическая свертка s (х) = 
3.6. Построение алгоритмов коротких циклических сверток <о с, С2 ~3 ~~4 ‒ 1 0 ! 0 ! 1 0 ‒ 1 ! 1 ! ‒ 1 0 †! †! †! 1 ! I ‒ 1 ‒ 1 ‒ 1 ‒ 1 0 0 ‒ 1 1 I 1 ! 1 1 0 0 ! do dI ~з d~ SO SI Sg ~э гдв l 4 Рис. 3.!4. Алгоритм 4-точечной циклической свертки. s (х) = g (х) d (х) (то4 х" ‒ 1) degg(х) = n ‒ 1 degas (х) = n ‒ 1 Вещественные свертки Число вещественных умн ожеиий Число вещественных сложений Длина п Рис. 3.15. Характеристики некоторых алгоритмов вычисления циклической свертки. = g (х) d (х) (mod х" I) может быть записана в виде матричного произведения gss- I gII S0 gI ga SI Я -I g. -г Я -i д» I go 2 3 4 5 5 7 8 8 9 16 16 2 4 5 8 10 16 12 14 19 33 35 4 11 15 62 31 70 72 46 74 181 155 
110 Гл. 3. Быстрые алгоритмы коротких сверток ИЛИ s= Td. Алгоритм Винограда, записываемый равенством в = С [(BQ)-(АЙ)], может быть записан также в виде s =CGAd, где А представляет собой матрицу размера М (и) х и, С является диагональной матрицей размера М (и) х М (и), а С является матрицей размера и X M (и). Таким образом, алгоритм Винограда можно рассматривать как алгоритм разложения матрицы Т =CGA, где Gдиагональная матрица, ,а С и А ‒ матрицы, элементами которых являются малые целые числа. Так как в большинстве приложений многочлену g (х) соответ- ствует фиксированный КИО-фильтр, или по крайней мере КИО- фильтр, коэффициенты которого меняются не слишком часто, то вычисление G = Bg приходится выполнять не слишком часто и при подсчете общей вычислительной нагрузки им можно пре- небречь. Следовательно, сложность матрицы В особой роли не играет. Роли матриц АиВ симметричны, ,так как их можно поменять местами путем простого переименования векторов d u g. Алгоритм Винограда вычисления свертки допускает построение матриц А и В, отличающихся только перестановкой строк, и, следова- тельно, имеющих одну и ту;же сложность; но в общем случае более целесообразно одну из матриц строить более сложной и именно ей приписывать роль матрицы А. Удивительно то, что в алгоритме циклической свертки можно менять ролями даже матрицы С и А. Способ сделать это описывается следующей теоремой. Теорема 3.6.1 (теорема об обмене матриц). Если теплицева матрица S допускает факторизацию вида $ =CDE, mo она может бьопь также эаиисана в виде (E) рт (С)т где матрица Е отличается от матрицы Е обращенным порядком столбцов, а матрица С отличается от матрицы С обращенным лорядком строк. 
3.7. Свертки в общих полях и кольцах Доказательство. Пусть Я представляет собой обменную ма- трицу того же размера, что и матрица S. Тогда Ьт JS3 ()С) 0 (Е.)) CDE Операция транспонирования завершает доказательство. Q Применим эту теорему к умножению многочленов по модулю многочлена х" ‒ (, где Р некоторая константа. Пусть надо вычислить , s (х) = g (х) d (х) (mod х" g), где g (х) и d (х) многочлены степени не более п ‒ 1. Если g = 1, то мы имеем задачу о циклической свертке. Случай ~ = 1 (а в поле комплексных чисел и случаи g = ~j) также очень важен. Запишем это произведение многочленов в малерично-векторном виде gd„ , А) do d) dg gn S) d) g2 или s= Tg, теплицева матрица. Алгоритм s = С [(Bd) (Ag)) где Т 3.7. Свертки в общих полях и кольцах Любой алгоритм свертки, такой как алгоритм Кука Тоома или алгоритм Винограда, представляет собой некоторое тожде- ство, опирающееся на свойства операций в данном поле, в ча- стности на свойства ассоциативности, дистрибутивности и комму- можно перезаписать в виде s = CBAg, где О диагональная матрица, диагональные элементы которой равны компонентам вектора Bd. Согласно теореме 3.6.1, s = (А) г D (С) г g. Применительно к задаче вычисления циклической свертки тео- рема 3.6.1 означает, что наиболее сложную из трех матриц А, B и С можно выбрать множителем при векторе g и «включить» ее в матрицу G. 
112 Гл. 3. Быстрые алгоритмы коротких сверток тативности. Алгоритм, построенный в одном поле, может быть использован в любом расширении этого поля. Он, однако, может оказаться не столь хорошим, как алгоритм, разработанный спе- циально для данного поля. В частности, алгоритм свертки двух вещественных последова- тельностей можно без изменений использовать для свертки после- довательностей комплексных чисел. Если обозначить через М и А соответственно числа вещественных умножений и сложений, необходимых для вычисления вещественной свертки, и если для вычисления комплексной свертки использовать тот же алгоритм с обычными комплексными умножениями и обычными комплекс- ными сложениями, то в общей сложности получится 4М веще- ственных умножений и 2А + 2М вещественных сложений. Если вместо этого воспользоваться построенным B разд. 1.1 комплекс- ным умножением и рассматривать одну часть свертки как отводы фиксированного фильтра, то потребуется только ЗМ веществен- ных умножений и 2А +ЗМ вещественных сложений. Если длина комплексной циклической свертки равна некото- рой степени двойки, то можно построить даже еще лучший алго- ритм. Для пояснения того, как это делается, рассмотрим свертку по модулю x" -+- 1. В кольце многочленов по модулю многочлена х" + 1, ~ )~ 1, имеется элемент, квадратный корень из которого равен минус единице. Действительно, 1 =х~' (mod х" + 1) так что в рассматриваемом кольце ~1 = x'~ . Воспользуемся этим элементом, чтобы выписать комплексную свертку через две вещественные свертки. Для вычисления комплексной свертки s (х) = g (х) d (х) (mod x"~ +- 1), где g(x) = gR(x)+]gs(x) и d(x) = d„(x)+jd,(х), можно вычислить по модулю х' + 1 четыре вещественных свертки С g„(x) d„(x), g, (х) d„(x), дл(х) dz (х) и g, (х) dz (х) и записать s„(x) = g„(x) d„(x) ‒ g, (х) d( (х), ~(х) = gR(x) dz(x)+ gi(x) dR(x). Лучшая процедура, содержащая вдвое меньше умножений, сво- дится к введению многочленов а(х) = (g„(x) ‒ х" 'gi(x)) (d„(x) ‒ xÐ' 'di (х)) (mod х~'+ 1) b(x) = (ул(х)+ х' ~~,(х)) (d„(x) + х' 'dz (х)) (mod х" + 1), 
113 3.8. Сложиость алгоритмов свертки вычисление которых сводится к вычислению двух вещественных сверток. Выходной многочлен s (х) = g (х) d (х) (mod х' + 1) дается при этом равенствами sR(x) = а(х)+ Ь(х), з/(х) =х' '(а(х) ‒ Ь(х)) (то4 х' + 1). Мы хотим воспользоваться этой процедурой для вычислени я комплексной циклической свертки s (х) = g (х) d (х) (mod х" ‒ 1), где и равно степени двойки. Запишем х~ ‒ f = (z ‒ 1)(z+ f)(хи+ f)(х4+ Ц .. (хп/2+ 1). Тогда задача сводится к коротким циклическим сверткам вид s</1(х) = g</>(x)d</~ (x) (mod x2 + 1). Комплексные свертки по модулям s 1 и х + 1 являются ска- лярами, и их произведение вычисляется как произведение ком- плексных чисел. Их вклад в общую сложность очень мал. Если остальные комплексные свертки вычислять через две веществен- ные свертки, то рассматриваемый способ вычисления комплексной свертки потребует примерно вдвое больше вычислений, чем веще- ственная свертка той же длины. Этот метод конкурирует с методом разложения многочлена х" 1 B поле комплексных чисел: xä 1 = (x 1) (x+ 1) (x j) (x +j) (xà/4 ‒ j) (xë/4 + j) Каждая из индивидуальных подзадач теперь меньше, но арифме- тика является комплексной. 3.8. Сложность алгоритмов свертки Пусть задан алгоритм решения некоторой задачи; следует ли этим удовлетвориться или следует попытаться найти лучший алгоритм? На этот вопрос трудно ответить по нескольким при- чинам. Во-первых, трудно выбрать критерий, согласно которому можно утверждать, что алгоритм является наилучшим. Яалее, если даже такой критерий выбран, то трудно утверждать, что характеристики оптимального алгоритма соответствуют выбран- ному критерию. Во многих задачах критерием оптимальности служит мини- мизация числа умножений. Этот кр итерий достаточно прост, так что удается доказать некохорые теоремы, описывающие харак- теристики оптимального алгоритма. Конечно, после отыскания оптимального алгоритма может оказаться, что он нам не подойдет, 
114 Гл. 3. Быстрые алгоритмы коротких сверток скажем, по числу сложений, но все-таки хочется знать, что пред- ставляет собой такой алгоритм. В данном разделе мы будем исследовать характеристики опти- мального (в смысле минимального числа умножений) алгоритма свертки. Для этого надо уточнить понятие умножения, и мы сделаем это так, чтобы можно было ответить на интересующие нас вопросы. А именно, мы хотим определить умножение таким специальным образом, чтобы под произведением d-g понималось произведение произвольных вещественных чисел, но туда бы не входило произведение 2g, так как его можно интерпретировать как g + g. Такое различие легко принять, но как быть с произве- дением 3g или (5/7) g? Мы выберем определение, которое приводит к полезным результатам. Вычисление d.g будем считать умноже- нием только тогда, когда оба сомножителя -принимают произволь- ные вещественные значения, и не будем считать умножением, если произвольные вещественные значения допустимы только для одного из них, а другой должен быть рациональным. Мы уви- дим, что это определение, хотя интуитивно и кажется несколько ущербным, приводит к осмысленным результатам. Выбранный нами критерий может также вызвать подозрение злотому, что возникающие в приложениях числа всегда записываются словом конечной длины, так что все вбзникающие в приложениях числа являются рациональными. Тем не менее если в принципе пере- менные принимают вещественные значения, то указанное вы- числение будет называться произведением. В указанном смысле алгоритмы Винограда вычисления корот- ких циклических сверток являются оптимальными. Ни один алгоритм вычисления и-точечной циклической свертки не содер- жит умножений меньше, чем алгоритм Винограда. Яоказатель- ство этого факта составляет одну из сложных задач данного раздела. Мы докажем следующие результаты: 1. Никакой алгоритм вычислени я линейной свертки двух последовательностей длин L u N не может содержать меньшее число умножений, чем L + N 1. 2. Если число простых делителей многочлена х" 1 равно t, то никакой алгоритм вычисления и-точечной циклической свертки не может содержать меньшее число умножений, чем 2п 3. Если число простых делителей многочлена р (х) равно t, то никакой алгоритм вычисления произведения многочленов g (х) d (х) по модулю р (х) не может содержать меньшее число умножений, чем 2п Вторая задача, конечно, является частным случаем третьей, но она столь важна, что ее следует выделить отдельно. Рассматриваемые идеи не зависят or поля. Пусть F некото- рое поле, которое мы назовем полем вычислений, а Е его под- поле, называемое полем констант или основным полем. Элементы 
115 3.8. Сложность алгоритмов свертки из Е называются скалярами. Пусть d = (d~ ..., д„,) и g = = (g" g.,) произвольные векторы фиксированных длин а и r с компонентами из поля F. Компоненты векторов d u g будем называть неопределенными переменными или просто перемен- ными. Эти и + г переменных величин независимы. их не связы- вают никакие соотношения. Алгоритмом называется правило вычисления последовательности элементов /„ ..., fg из F, таких что каждый элемент f~ последовательности равен одной из Следу- ющих величин: (1) или компоненте вектора d, или компоненте вектора g, или сумме, разности или произведению двух таких компонент; (2) сумме, разности или произведению компонент вектора d или вектора g на элемент f; последовательности с номе- ром /, меньшим номера i; (3) сумме, разности или произведению двух элементов fi и f„ïîñëåäîsàòåëúíîñòè, номера j и ~г кото- рых меньше номера i; (4} элементу поля Е. Скажем, что алгоритм вычисляет выходной вектор s, если компоненты вектора s содержатся в последовательности f„ f, Необходимо подчеркнуть, что являющиеся компонентами век- тора s переменные величины связаны некоторыми функциональ- ными соотношениями с переменными, являющимися компонен- тами векторов d u g. Алгоритм, вычисляющий вектор s, пред- ставляет собой фиксированную процедуру правильного вычисле- ния s для любых возможных значений входящих в d u g пере- менных. Заметим, что данное определение алгоритма не включает в себя ни ветвления, ни деления. В алгоритмах, которыми мы зани- маемся, эти операции не являются необходимыми, к тому же ни деление, ни ветвление не могут уменьшить числа умножений. Яанное определение алгоритма можно проиллюстрировать примером комплексного умножения. Сначала запишем его в виде d а d c Ч'огда равенства fr=ca, fa=db. fa= fi f4 da 4 СЬ Й f4 +fá aKvr описание алгоритма в виде последовательности правил вы- числения. Вычисление произведения комплексных чисел можно также записать в виде ( ‒ 0~ о î i 0 о (+<) о о у 
116 Гл. 3. Быстрые алгоритмы коротких сверток Тогда равенства f1 = a К fm = c А 4 = c + ~( ° f4 = f2а~ 1Б = f3~> f6 = 4Ъ> f1 = f4 +f6 ° f8 = fi> + f6 дают описание последнего алгоритма в виде последовательности правил вычисления. Рассмотрим набор всех таких множеств правил вычисления комплексного умножения. Оптимальным из этого набора алго- ритмов является тот из них, который содержит наименьшее число умножений. Теперь можно формализовать определение задачи вычислений. Будем рассматривать только задачи вида s= Hd, где d входной вектор данных длины k, à s выходной вектор длины и. Элементы матрицы Н представляют собой линейные комбинации г неопределенных переменных ~„..., ~,.1. В типичных случаях r меньше числа элементов матрицы Н и каждая перемен- ная может присутствовать в матрице Н более одного раза. Такая структура включает в себя все рассмотренные задачи вычисления свертки. Под элементами матрицы Н будем понимать не элементы поля, а линейные комбинации неопределенных переменных вида r ‒ 1 » юу Е ~хюл> А> А=О где сс;~„являются скалярами. Яве такие линейные формы можно складывать, любую линейную форму можно умножать на скаляр. Множество таких линейных форм над полем Е образует векторное пространство, которое мы обозначим Е [д„..., д,, ]. Таким образом, Н является матрицей над множеством линейных форм. Для матрицы Н не выполняются многие известные свойства матриц, поскольку она является матрицей не над полем (и даже не над кольцом), а над множеством E [g„..., g,,). В частности, ранг по столбцам не обязательно равен рангу по строкам. Как мы увидим, ранг по строкам и ранг по столбцам каждый дают нижнюю границу для числа умножений в задаче s = Hd. Воз- можность менять ролями векторы g u d дает два пути применения этих двух границ. Ранг по строкам определяется следующим образом (анало- гично определяется ранг по столбцам). Каждая строка матрицы Н представляет собой вектор длины Й с компонентами из множества ') 1) Это множество образует векторное пространство, но мы предпочитаем называть его множеством, так как не рискуем говорить «вектор векторою. 
117 3.8. Сложность алгоритмов свертки Е tgp, -, g, 11. Линейная комбинация строк матрицы Н также является вектором длины k с компонентами из того же множества п вида ~~ ~~И,, где элементы Pq принадлежат полю E для всех 1=1 ~ = 1, ..., и. Рангом по строкам матрицы И называется мощность наибольшего множества линейно независимых строк, т. е. такого наибольшего множества строк, что никакая ненулевая их линей- ная комбинация не равна нулю. Например, над полем рациональных (вещественных) чисел ранг по столбцам матрицы 4go яо Н = 2g> ‒ g, 2© ‒ 2яо go равен двум, так как 4gn 2g, 2gi - 2g но никакая линейная комбинация двух столбцов не равна тожде- ственно нулю. Теорема 3.8.I (теорема о ранге по строкам). Для проимоль- ного алгоритма вычисления s = Hd число умножений по меньшей мере равно рангу по строкам матрицы К. До~азцтельство. Без потери общности можно предположить, что линейно независимыми являются первые р строк матрицы К, и в дальнейшем рассматривать тол~ко эти строки. Обозначим через М матрицу, образованную этийи строками, и рассмотрим только частичное вычисление = М4. Идея доказательства сводится к построению подходящей ма- трицы А над полем Е, для которой выполняются известные свой- ства матриц. Предположим, что в алгоритме, задаваемом последователь- ностью f„..., f~, имеется 1 шагов умножения, задаваемых соот- ветственно 1 членами последовательности е1, ..., е~. Тогда первые р компонент вектора s должны быть линейными комбинациями 
f l8 Гл. 3. Быстрые алгоритмы коротких сверток этих членов-произведений, линейных членов и элементов основ- ного поля. Таким образом, (:.1 ‒ AI Доказательство. Доказательство проведем индукцией. Если ранг по столбцам равен единице, то любой алгоритм должен содержать по меньшей мере одно умножение. Пусть при ранге по столбцам, равном 1 1, теорема верна. То есть если ранг по столбцам матрицы Н равен 1 1, то любой алгоритм вычисления в = Hd содержит по меньшей мере 1 1 умножение. Igar ин- дукции состоит в доказательстве соответствующего утверждения для случая, когда ранг по столбцам равен 1. Предположим, что задан алгоритм вычисления s= Hd, где элементы матрицы А принадлежат основному полю Е, а ком- поненты вектора Ь являются линейными комбинациями неопре- деленных переменных и элементов основного поля. Предположим теперь, что р больше, чем 1. Тогда матрица А содержит строк больше, чем столбцов, и, следовательно, строки матрицы А линейно зависимы, т. е. существует такой вектор с над полем Е, что стА = От. Следовательно, c~ (Md) = сг (Ае + Ь), и так как с~А = О, то это приводится к виду (стМ) 4 = стЬ В этом равенстве правая часть не содержит произведений неопре- деленных переменных, так как с содержит только элементы поля Е, а в Ь не входят произведения неопределенных перемен- ных; следовательно, и левая часть не содержит произведений неопределенных переменных. Так как компонентами вектора d являются неопределенные переменные, то отсюда следует, что с~М не содержит неопределенных переменных. Но стМ является вектором, компоненты которого равны линейным комбинациям неопределенных переменных. Следовательно, он равен нулю и строки матрицы М линейно зависимы. Полученное противоречие означает, что 1 больше, чем р, и число умножений по меньшей мере равно рангу по строкам матрицы H. P Теорема 3.8.2 (теорема о ранге по столбцам). Для произволь- ного алгоритма вычисления s = Hd число умножений по меньшей мере равно рангу по столбцам матрицы Н. 
119 3.8. Сложиость алгоритмов свертки причем ранг по столбцам матрицы Н равен 1. Без потери общности можно предположить, что последний столбец матрицы Н содержит по крайней мере один ненулевой элемент (в противном случае его можно удалить из Н}. Следовательно, переменная d, содер- жится в некотором члене-произведении, скажем, последнем таком члене. Это означает, что для некоторого множества скал яров и< сумма ~~ u<d; является множителем в некотором умножении, причем а~ ® О. Так как на скаляры не наложено никаких огра- ничений, то можно полагать сх~ равным 1, так что член д~ + ! ‒ 1 + ~ а;а; является множителем в некотором члене-произведении. r=o Чтобы завершить доказательство, нам надо при любом данном алгоритме решения исходной задачи построить, хотя и искус- ственную, новую задачу s' = Н'd' s' = Н'd', где d' представляет собой вектор длины ( 1, формируемый из вектора d удалением последней компоненты, а матрица Н' получается из матрицы Н заменой у-го столбца h; на столбец Й( а(й,. Таким образом, d) Н' = Н 4-) ранга 1 1, которую можно решить данным алгоритмом, удаляя из него одно умножение. Тогда, согласно предположению индук- ции, любой алгоритм решения новой задачи содержит по меньшей мере 1 1 умножение, и, следовательно, исходная задача данным алгоритмом решается по меньшей мере с l умножениями. Чтобы это сделать, заменим в исходной задаче переменную d< 1 ‒ 1 на f u;d~. Тогда последний член-произведение, содержащий ~~} ! ‒ 1 множителем сумму d< + f u;d<, будет представлять собой f О умножение на нуль и, следовательно, может быть удален из алго- ритма. Алгоритм теперь решает некоторую новую задачу, а именно, 
120 Гл. 3. Быстрые алгоритмы коротких сверток и данный алгоритм вычисляет Н'ci', что и завершает доказатель- ство. Q Теорема 3.8.3. Каждьсй алгоритм вычисления линейной свертки s (х) = g (х) d (х), где degg (х) = L 1 и deg d (х) = N ‒ 1, содержит по мень- шей мере L+ N 1 умножений. )7оказательство. Рассматриваемое вычисление можно в матрич- ном виде записать равенством s= Hd, где gp О ' О О g, g. - - - o o Н= Юс ‒ г о является ((L + N 1) X N)-матрицей. Как элементы множества E t00 й> " ф. >), строки матрицы Н, очевидно, линейно неза- висимы, следовательно, применение теоремы 3.8.1 показывает, что число умножений равно по меньшей мере L + N 1. С) Теорема 3.8.4. Пусть р (х) является простым многочленом cme- пени п. Каждый алгоритм вычисления произведения многочленов s (х) = g (х) d (х) (mod р (х)) содержит по меньшей мере 2п 1 умножений. Доказательство. Предположим, что алгоритм содержит умножений. Тогда на выходе алгоритма получим линейную ком- бинацию этих t членов-произведений s =AS, где А является (и X t)-матрицей над полем Е, à S вектор длины t, компонентами которого являются эти члены-произ- ведения. Ясно, что многочлены g (х) и d (х) всегда можно выбрать так, чтобы сделать некоторую одну компоненту многочлена s (х) не- нулевой, а остальные нулевыми. Следовательно, п строк ма- трицы А должны быть линейно независимыми, так что А должна содержать и и линейно независимых столбцов. Без потери общ- ности можно полагать, что первые и столбцов матрицы А яв- ляются линейно независимыми, так что матрица А может быть разбита на блоки вида > = [А',' А")$ 
121 3.8. Сложность алгоритмов ыертки где А' обратимая (и х п)-матрица. Умножим на обратную к А' матрицу С: Cs = )l> PQ = СН4 ° Так как многочлен р (х) неприводим, то можно показать, что все элементы любой строки матр и цы Н ли нейно независимы, равно как и все элементы любой линейной комбинации строк матрицы Н. Эго утверждеиие является стандартным результатом теории матриц и будет доказано отдельно в виде теоремы 3.8.6 в конце настоящего раздела. Следовательно, все элементы первой строки матрицы CH линейно независимы, так что согласно тео- реме 3.8.2 для вычисления первой компоненты вектора CHd требуется по меньшей мере и умножений. С другой стороны, первая строка вычисления Cs = [l,' P)S, 1=1 содержит самое большое 1+ (t n) умножений, так как ма- трица Р содержит E и столбцов, а вектор $ длины t содержит все члены-произведения. Следовательно, 1+ (t n) ) п, так что t)~ 2n 1, что и доказывает теорему. [] В качестве приложения этой теоремы рассмотрим комплексное умножение как задачу умножения по модулю многочлена х' + 1. Согласно теореме 3.8.4, для выполнения одного комплексного умножения необходимо по меньшей мере три вещественных умно- жения. Хотя мы и не будем этого делать, теорему 3.8.4 можно доказать и для умножения многочленов по модулю многочлена p' (х), где р (х) ‒ простой многочлен. Вместо этого мы рассмотрим слу- чай, когда р (х) распадается в произведение k простых много- членов. В этом случае китайская теорема об остатках позволяет разбить задачу на k подзадач, каждая длины п~, где f и; = п. t Дополнительных умножений при этом не возникает. Следова- тельно, используя для каждой из подзадач теорему 3.8.4, с по- мощью китайской теоремы об остатках для полной задачи вы- числения произведения многочленов по составному модулю полу- чаем по меньшей мере 
122 Гл. 3. Быстрые алгоритмы коротких сверток умножений. Следующая теорема утверждает, что ни один алго- ритм решения этой задачи не может быть лучше такого исполь- зования китайской теоремы об остатках. Теорема 3.8.5. Пусть многочлен р (х) степени и распадается 8 произведение k различных простых множителей. Каждый алго- ритм вычисления произведения многочленов s (х) = g (х) d (х) (mod р (х)) содержит по меньшей мере 2n k умножений. Яоказательстео. Так как китайская теорема об остатках задает не требующее умножений обратимое преобразование, то достаточно рассмотреть вычисление s = Hd, в котором матрица Н блочно-диагональная, т. е. д) clg S) S2 1 ! ) 1 1 1 б д» 5» и соответствующая китайской теореме об остатках i-я подзадача задается вычислением s; = H;d,. Теперь повторим доказательство теоремы 3.8.4. Иредиоложим, что алгоритм содержит t умножений. Тогда s=AS, Сь = [I' ,P]5 s = [A' , 'А")S где С обозначает матрицу, обратную к матрице А'. Следова- тельно, для вычисления первой компоненты вектора Се требуется самое большое 1+ (t и) умножений. Но, кроме того, выпол- няется равенство н, Нг . где S вектор длины t, содержащий все члены-произведения, и А представляет собой (и X t)-матрицу над полем Е. Так как А содержит и линейно независимых строк, то она содержит и и линейно независимых столбцов, в качестве которых можно вы- брать первые и столбцов. Тогда 
3.8. Сложность алгоритмов свертки 123 Рассмотрим теперь некоторую линейную комбинацию строк ма- трицы Н. Любая линейная комбинация строк каждой из матриц Н~ содержит лишь линейно независимые столбцы. Следовательно, любая линейио независимая комбинация строк матрицы Н со- держит по меньшей мере п (Й 1) линейно независимых столбцов. Следовательно, по теореме 3.8.2 вычисление первой компоненты вектора CHd требует по меньшей мере п (Й 1) умножений. Эти верхняя и нижняя границы числа умножениф, необходимых для вычисления первой компоненты вектора Cs, приводят к неравенству 1+ (t n) )~ п ‒ (Й 1), так что t )~ 2п k, что,фоказывает теорему. [] Теперь мы должны завершить незаконченное доказательство теоремы 3.8.4. Доказательство. Шаг 1. Обозначим через С„сопровождающую матрицу много- члгна р (х), определяемую следующей (п X n)-матрипей: о -р, о -p, о о о l О О 1 с = Р О О Тогда с-й столбец матрицы Н равен C~g, и через свои вектор- столбцы матрица Н записывается в виде н=[д сд с',д ... с,"-'a). Пусть w произвольная ненулевая вектор-строка, à wН соответствующая линейная комбинация строк матрицы Н. Надо показать, что никакая линейная комбинация столбцов wH не равна нулю. Предположим, что n ‒ 1 п ‒ 1 о= zo,(c',þ) = т,щс,']я. 8=0 ~=0 Теорема 3.8.6. Пусть s = Hd представляет собой матричную запись произведения многочленов s (х) = g (х) d (х) (mod р (х)), гдг р (х) нвприводимый многочлгн, и матрица Н составлгна из коэффициентов многочлгна g (х). Тогда всг элементы любой строки матрицы Н, так же как и все элементы любой линейной комбинации строк матрицы Н, линейно независимы. 
124 Гл. 3. Быстрые алгоритмы коротких сверток Так как это равенство должно выполняться для любого g, то w a(CÄ) = 0, где а(С~) = f а~С представляет собой матрицу размера и х и, вычисленную по матрице Ср. Поскольку строка w отлична от нулевой, то матрица а (С„) должна быть вырожденной, так как в противном случае w а(С„) не может равняться нулю. Следовательно, нам надо показать, что единственным многочленом степени не более и 1, таким что подстановка в него матрицы С„приводит к вырожден- ной матрице, является нулевой многочлен. Шаг 2. Легко проверить, что любой простой многочлен р (х) обращается в нуль при подстановке в него его сопровождающей матрицы. Таким образом, р (С„) = О, где О обозначает нулевую (и х и)-матрицу. Пусть а (х) обозначает многочлен степени ие более и I, такой что матрица а (С„) вырожденна, и пусть v обозначает ненулевой вектор из нулевого пространства матрицы а (С„). Тогда, так как р (х) является неприводнмым многочлеиом степени и, то существуют многочлены А (х) и P (х), такие что А (х) а (х) + Р (х) р (х) = 1. Следовательно, [A(C„) a(C„)+ P(C„) p(C„)]v = Iv. Но р (CÄ) = О, так что мы имеем А (С„) а (С„) v = v, что про- тиворечит выбору v: а (С„) v = О. Следовательно, за исключе- нием нулевого многочлена, не существует многочлена а (х) степени и 1 или меньше, такого что матрица а (С„) является вырожден- ной. Это заверша~ доказательство теоремы. Q Задачи 3.1. а. Комплексное умножение (е+ j f) = (а+ /Ь) (c+ jd) можно вычислить с тремя вещественными умножениями и пятью вещественнымн сложениями по алгоритму е = (а ‒ Ь) d+ а (с ‒ d), f = (а ‒ Ь) d+ Ь(c+ d). Положил с и d константами и записать алгоритм умножения в матричной форме е а f =»A ь где A и В представляют собой матрицы предсложений и постсложений, а 0 ‒ диагональную матрицу. 
Эадачи ‒ а. ‒ г, 1 -3 d Предположим, что многочлены d (х) и g (х) имеют комплексные коэффи- циенты. Сколько потребуется вещественных сложений и вещественных умножений для выполнения этого алгоритма, если комплексная арнфме- тика реализуется обычным классическнм cIloco6OMP в. Представить теперь входные и выходные данные в виде векторов длины четыре и выписать объединенный алгоритм с шестью вещественными умно- жениями. Сколько вещественных сложений содержнт этсл алгоритм7 При заданиом устройстве для вычисления линейной свертки двух после- довательностей длины и описать, как оно может быль использовано для n ‒ 1 вычисления вэвиыной корреляционной функции f g~+pf; этих после- д=0 3.2. довательностей. Построить алгоритм фильтрации 4-точечной последовательности входных данных в КИО-фильтре с тремя отводами, используя для этого алгоритм Кука ‒ Тоома для свертки. а. Начиная с алгоричма вычисления 2-точечной линейной свертки З.З. 3.4. s(x) = ад~l+ [g~d~+ йФо ‒ (й ‒ go) (4 ‒ do)] x+ В4. построить алгоритм вычисления s (х) = g (х) d (х) (mod х~ ‒ х+ 1). б. Пов'горить задачу, начиная с алгоритма s (x) = аФ.х'+ f(g, + ао) (4+ d ) ‒ аА ‒ ВМ x+ В4. Какой из алгоритмов заслуживает предпочтениями Допустим, что у нас имеется устройство (жесткий модуль или подпро- грамма) для вычислеиия 315-точечной циклнческой свертки, и что требуется пропустить 1000-точечиый вектор данных через КИО-фильтр с 100 отво- дами. Описать, как надо разбить даииые и организовать устройство свертки, чтобы получить требуемый ответ. Построить алгоритм 4-точечной циклической свертки комплексных после- довательностей, содержащий четыре комплексных умножения. Сравнить построениый алгоритм с алгоритмом 4-точечиой циклической свертки вещественных последовательностей, используемым для свертки комплекс- ных последовательностей. Одним из способов определения поля комплексных чисел является рас- ширеиие поля вещественных чисел с помощью неприводимого многочлена р (x) = х~+ 1. Комплексное умножение при этом определяется равенством 3.6. З.B. 3.7. е+ fx= (а+ Ьх) (с+ dx) (mod х'+ 1). Используя это определеиие, преобразуйте алгоритм линейной свертки в алгоритм умножения комплексных чисел. а. Сколько умножений содержит алгоритм Винограда вычислеиия 16-то- чечной циклической свертки, если в качестве модулей используются только рааложеиия у~6 ‒ 1. = (х ‒ 1) (х+ 1) (х~+ 1) (х4+ 1) (х~+ 1)? 3.8. б. 2-точечная циклическая свертка з (х) = g (x) d (х) (mod х~ ‒ 1) может быть вычислена по алгоритму 
Гл. 3. Быстрые алгоритмы коротких сверток 126 б . Предположим, что допускается разложение многочлена над полем ком- плексных рациоиальных чисел, т. е. чисел вида а+ jb, где а и Ь ‒ раци- ональные числа. Сколько теперь потребуется комплексных умножений, если B качестве модулей допускаются многочлены, имеющие числа 1, +j в качестве коэффицнентовР (Замечание: теперь комплексные числа счи- таются внутренними переменными и умножение на у не считается умно- жением.) в. Имеет ли алгоритм (б) преимущества перед алгоритмом (а)Р (Укаэаяие: рассмотреть, является ли циклическая свертка вещественной или ком- плексной.) 3.9. Выписать всю последовательиость равенств вычисления линейной (4 X X 3)-свертки по алгоритму Винограда, основанному иа миогочлене т (х) = х~ (х+ 1) (х ‒ 1) (х~+ 1). 3.10. Для представлеиия в ЭВМ чисел с двойной точностью можно использовать запись числа в виде многочлена d~x+ d(). Для такой записи чисел с двой- ной точностью выписать алгоричм умножения без округления, содержащий и умножения и четыре сложения чисел с одинарной точностью. 3.11. спользуя алгоритм 1 0 0 0 ! 0 0 0 ! ! ! 0 ! 0 1 0 ! Ю 0 0 0 0 О ! О О 1 0 0 0 0 0 ‒ 1 0 1 ‒ ! ‒ 1 ‒ 1 0 1 I ‒ 1 ‒ 1 0 0 -о S( 52 ~э S4 и принцип трансформации~), построить пя1ь иовых алгоритмов. чем онн интересными 3.12. Доказать, что для любого n .> 1 в поле вещественных чисел лучший алго- ритм вычисления а (х) = g (х) Ш (х) (mod х" + () содержит больше умножений, чем лучший алгоритм вычисления s (х) = g (х) d (х) (mod х" ‒ I). 3.13. Найти такие целые числа и и n', что n ( n', но и-точечная циклическая свертка требует большего числа умножений, чем и'-точечная цикличес- кая свертка. 3.14. Используя знание быстрых алгоритмов свертки, построить алгоритм 3-то- 2 чечного преобразования Фурье, Vk= f и~"vg, k = О, 1, 2, содержащий С=Ж только два нетривиальных вещественных умножения. 3.16. Построить алгорнтмы для следующих вычислений: а. s (х) = g (х) d (х) (mod хз+ х+ 1). б. s (х) = g (х) d (х) (mod хз). в- s (х) = g (х) d (х) (mod х~+ g~+ 1). 3.16. а. Сколько вещественных умножений требует описанный в разд. 3.7 метод вычисления циклической комплексной свертки по модулю х~ ‒ 17 б. Сколько комплексных умножений требуется по теореме Винограда о сложности для вычисления в поле комплексных чисел циклической свертки по модулю многочлена хв ‒ 17 в. Объяснить все кажущиеся несоответствия. См. теорему 9.2.1. ‒ Прим. перев. 
Замечания 3.17. а. Предполагая, что все переменные являк~гся незавнсимыми веществен- нымн величинами, доказать, что для вычнслення двух комплексных произ- ведений е +if = (а+ib) (с+ 14, е'+ if' = (а'+ уЬ') (с'+ усГ), требуется выполнить шесть вещественных умножений. б. Сколько потребуется умноженнй для одновременного вычнсления следу- ющих двух комплексных призведений: е + )f = (а+ ib) (с+ 4. е'+if' = (а ‒ ib) (с+ ф)~ В данном случае переменные повторяются. в. Сколько потребуется умножений для одновременного вычнсления сле- дующих двух комплексных произведений: е + >f (а+ уЬ) (с+ Щ е'+ yf' = (а ‒ уЬ) (с ‒ ф)Р 3.18. а. Доказать, что вычисление so go gy ga Оо 4 где все переменные являются комплексными, требует шести вещественных умножений. б. Доказать, что вычисление ~о+ Iso 8о igi. ~о+ Фо ~1+ А' igi ~о 1+ (4 где все переменные являются вещественными, также требует шести веще- ственных умноженнй. Таким образом, равенство нулю величин go и g,', как и в задаче а, не уменьшает числа необходимых умножений. в. Доказать, что вычисленне so Оо gé do 81 ‒ а1 ао 4 где все переменные являются комплексными, требует шести вещественных умножений. г. Доказать, что вычнсленне "so+iso й'о Ж "о+ do si + jsi ‒ 136 go d; + jdi где все переменные вещественны, требует четырех вещественных умно- жений. В этом случае равенство нулю переменных g" и g' уменьшает.необ- ходимое число умножений. 3.!9. Построить алгоритм 4-точечной циклической свертки над полем комплекс- ных чисел. Сравнить этот алгоритм с алгоритмом, основанным на БПФ и теореме о свертке. Заиечания Без какой-либо общей теории первые быстрые алгоритмы сверток коротких длин были опнсаны Агарвалом и Кулн [1] (1977) в связи с развитымн ими много- мерными гнездовыми методами. Описанный намн обший метод был предложен Внноградом [2] (1978). Примеры нспользования этого метода приведены в моно- графни [4) 1980 г. Внноград также доказал [3) (1977) теоремы о сложности рассмотренных алгоритмов свертки для полей комплексных и вещественных чисел. 
Глава 4 БЫСТРЫЕ АЛГОРИТМЫ ДИСКРЕТНОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ Построение набора методов вычисления дискретного преобра- зования Фурье является одной из основных наших целей. Мы по- строим много таких методов, каждый из которых обладает раз- личными преимуществами перед другими и каждый из которых наиболее пригоден при соответствующих обстоятельствах. Основ- ных стратегий имеется две. Одна из них состоит в сведении дис- кретного преобразования Фурье к свертке, которая затем вы- числяется описанными в предыдущей главе методами. Другая стратегия состоит в переходе от одномерного преобразования Фурье к двумерному, которое вычисляется проще. Хорошие алго- ритмы вычисления дискретного преобразования Фурье для мини- мизации сложности вычислений используют обе эти стратегии. Многие из изучаемых нами алгоритмов не зависят от частных особенностей поля, над которым определено дискретное преобразо- вание Фурье. Поэтому мы часто будем опускать указание на конкретное поле и в этом случае алгоритм справедлив для любого поля. В других случаях, хотя общая идея алгоритма и не зависит от поля, над которым рассматривается дискретное преобразование Фурье, но некоторые детали алгоритма определяются спецификой поля. В этих случаях алгоритм должен строиться для конкретного интересующего нас поля. 4.1. Алгоритм Кули Тычки быстрого преобразования Фурье Преобразование Фурье вектора v, t3 ‒ 1 1/ ~ <,)ио. к=о в том виде, как оно записано, требует порядка и' умножений и и" сложений. Если число и является составным, то имеется не- сколько способов перейти от этого преобразования Фурье к дву- мерному преобразованию или к чему-либо ему аналогичному. Это позволяет перевести вычисления в более эффективную форму, 
4 1. Алгоритм Кули ‒ Тычки быстрого преобразования Фурье 129 ~ПФ-алгоритм Кули ‒ Тыоки (1965) и = n'n" i = с™+ и'i' с'=0, ...,и' ‒ 1; i"=О, ..., и ‒ 1. =O,...,л' ‒ 1; =О, ...,и ‒ 1; л ‒ I Число умножений ти (n'+ и )+ и но за это приходится платить усложнением структуры. Алгоритмы подобного сорта известны под общим названием быстрого преоб- разования Фурье (БПФ}. На рис. 4.1 приведена структура БПФ- алгоритма Кули Тычки, изучаемого в данном разделе. Рис. 4.1 интересно сравнить с рис. 4.8 из разд. 4.3, на котором приведена структура БПФ-алгоритма Гуда Томаса. Для построения БПФ-алгоритма Кули Тьюки предположим, что n = и'и". В выражении для преобразования Фурье сделаем следующую замену записи каждого индекса: с= ~'+и'С, 1™ = О, ...„n" ‒ 1, k' = О, ..., и' k = и"й, '-+- k™, k"=0,...,n Тогда Раскроем скобки в показателе степени и положим а"' = у и и" = P. Так как порядок элемента и равен и'и", то член ®n'~'~"~' = 1 можно опустить. Определим теперь двумерные пере- менные, которые тоже обозначим через v и V, задавая их равен- ствами Qge ga ‒ Це+~э~н ..., и" ‒ 1, ..., и' ‒ 1, ..., и" ‒ 1. Рис. 4.1. БПФ-алгоритм Кули ‒ Тычки. ~'=О, i™ =О, k' = О, k =О, 
130 Гл. 4. Быстрые алгори1мы дискретного преобразования Фурье Индексы fS тсигек р]а дэиоде Индексь! fS move~ на &оде 0 gggg > ' отображение I3 !4 0 ! 2 3 4 З б 7 В 9 IO l l !2 l3 !4 быиисление отображение 33 !4 Индексы 21поцки на Юходв Индексы 7f точки на Юыкоде 0 ! 0 I 2 3 4 5 б 0 3 б 9 И IS IS 7 8 9 IO ! I !2 l3 + ! 4 7 IO !3 16 l9 4 IS !б l7 !8 !9 20 т 2 5 8 II l4 l7 20 г оаюбрамеиие Вычисление отображение 19 I9 20 Рис. 4.Я. Яримеры переиндексации по методу Кули ‒ Тыоки. При этом векторы входных и выходных данных преобразунугся в двумерные массивы. Заметим, что компоненты преобразова- ния ~ упорядочены в таблице не так, как компоненты сигнала ч. Это упорядочивание известно под названием адресного тасования. В терминах двумерных переменных формула преобразуется к виду л' ‒ ! n" ‒ ! <a - = E V"' '" E v'"'ú,-, ] С'0 С=О Хотя для понимания эта формула более трудна, чем исходная, но число входящих в нее умножений и сложений существенно меньше. А именно, она содержит не более п (n' + и" t 1) ком- плексных умножений и п (n' + и" 2) комплексных сложений вместо nР комплексных умножений и и' комплексных сложений исходной формулы. Визуально БПФ-алгоритм Кули Тычки выглядит как ото- бражение двумерной таблицы в двумерную таблицу, как показано на рис. 4.2 для примеров с n = 15 и и = 21. Вычисления состоят из п™-точечного дискретного преобразования Фурье каждого столбца, поэлементного умножения всех элементов таблицы соот- ветственно на ас"~" и и'-точечного дискретного преобразования Фурье каждой строки. Чтобы для комплексного входного вектора v подсчитать пол- ное число комплексных умножений и комплексных сложений, предположим, что внутреннее и внешнее преобразования Фурье вычисляются обычным способом, содержащим соответственно (п")~ и (п')~ комплексных умножений и и" (и" 1) и и' (и' 1) 
131 4.1. Алгоритм Кули ‒ Тычки быстрого преобразования Фурье 7Уложк З-аюмеч ~реобразод Марье Х-mocrevHee 5-точвчнов ареобразодаиие яреобразоВаицв 9ypse ~дрьв Рис. 4.3. Структура 75-точечного БПФ-алгоритма Кули ‒ Тычки, комплексных сложений. Каждое из этих преобразований Фурье используется n' и и™ раз соответственно. Помимо этого имеется n'n" комплексных умножений на множители «регулировки» m~'~". Таким образом, полное число умножений, М, (n), н полное число сложений, А, (n), в данном случае равны М,(n) = и'(и")'+ и" (й')'+и'и = и(и'+ и + 1), A, (n) = и'и (и" ‒ 1) + и и' (n' ‒ 1) = и (и' + и" ‒ 2), что и утверждалось ранее. Среди умножений имеются и тривиаль- ные умножения на 1. Это происходит всякий раз, когда в множи- теле регулировки целые числа i' или й" в показателе обращаются в нуль. При желании алгоритм можно перестроить так, чтобы выкинуть эти умножения; тогда число комплексных умножений станет равным 1) (и" = (и М, (и} = и (и' + и") + (и' 1) = 1} (и' + и") + (и + 1). Внешнее и внутреннее преобразования Фурье в свою очередь могут быть вычислены с помощью быстрых алгоритмов, не обя- зательно с помощью БПФ-алгоритма Кули Тычки. Тогда для числа комплексных сложений и для числа комплексных умноже- ний, йходящих в БПФ-алгоритм Кули Тычки, получаем соот- ношения М,(n) = и'М,(и")+ и"М,(и')+ и, А, (n) = n'A, (и") + и "А, (и'), где новые члены, стоящие в правых частях равенств, обозначают числа комплексных умножений и комплексных сложений, входя- щих соответственно в n'-точечный и n"-точечный быстрые алго- ритмы преобразования Фурье. Конечно, если n' или и" опять яв- ляется составным числом, то меньшее преобразование о,пять 
132 Гл. 4. Быстрые алгоричмы дискретного преобразования Фурье Яыкоо Выл оо 5-точечного лреобразо8ания 5-точечного преобразодания Рис. 4.4. Разбиение БПФ-алгоритма Кули ‒ Тычки иа подпрограммы. Вход б/7~: 75' жажа дюкоо ОПФ: 75'пючж Вход 5-точечного лреобразо8ания В~ою бп@: гХ оч~~ Вь~код бйФ 25 о~очек 8ход 5-точечного иреобразодания 
4.2. алгоритм Кули ‒ Тычки по малому основанию можно вычислять с помощью БПФ-алгоритма Кули Тычки. На этом пути преобразование длины и = +n, может быть пред- ! ставлено в такой форме, в которой требуется выполнения n fn, 1 комплексных умножений. Ка рис. 4 3 показан один из многих способов разбиения 75-точечного преобразования Фурье. Каждый из узлов этого рисунка можно представлять себе как обращение к подпрограмме. Если вычисления реализуются с помощью такого разбиения на подпрограммы, то один из способов организации программного вычисления показан на рис. 4.4. На самом нижнем уровне вычислений находятся 3-точечное и 5-точечное преобразо- вания Фурье, выполняемые буквально. Позже мы построим малый БПФ-алгоритм Винограда, который можно использовать на этом уровне в качестве подпрограммы. Малые БПФ-алгоритмы Вино- града представляют собой сильно оптимизированные процедуры вычисления преобразования Фурье для длин, являющихся про- стым числом или степенью простого числа. 4.2. Алгоритм 3(ули Тьюки по малому основанию л/2 ‒ ! Va= Е f=p л/2 ‒ ! <a~~gg = )~ г=о л/2 ‒ ! ~~21йо + <вй f <в2ио г=о л/2 ‒ ! ,2И ~, а „2И,, 8=0 й = О, ..., а/2 ‒ 1, 1) Термин «по основанию два» относится к факту записи индексов по осио- ванию два. Компоненты данных могут быть представлены в любой системе счис- ления, в частности по основанию два. Во многих приложениях, в которых используется алгоритм Кули Тычки, длина преобразования равна степени двух или четырех. для построения БПФ-алгоритма длина 2~ преобразо- вания представляется в виде 2.2 ‒ ' или 2 ‒ '2. В этом случае говорят о БПФ-алгоритме Кули Тычки по основанию два '). Аналогично, длина 4'" преобразования разлагается в виде 4-4 ‒ ' или 4m ‒ ' 4, и тогда говорят о БПФ-алгоритме Кули Тычки по основанию четыре. Если в 2'"-точечном алгоритме Кули Тычки .по основанию два полагается и' = 2 и и" = 2 ‒ ', то он назы- вается БПФ-алгоритмом Кули Тычки по основаниюдва с проре- живанием по времени. Используя тот факт, что P = и"<2 = 1, в этом случае уравнения, задающие БПФ, можно записать в следу- ющем простом виде: 
134 Гл. 4. Быстрые алгоричмы дискретного преобразования Фурье л/2 ‒ 1 V2a = Z (ог+ vt-+п/2) + Г=О л/2 ‒ 1 V2k'+! ‒ Z (о6' ог'+л/2) ш ш 8'=О й' = О, ..., и/2 ‒ 1, Прореживание по частоте разбивает компоненты входного век- тора на два подмножества, содержащие соответственно первые и/2 компонент и вторые и/2 компонент. Компоненты выходного вектора разбиваются на подмножество компонент с четными ин- дексами и подмножество компонент с нечетными индексами. Алгоритм с прореживанием по времени и алгоритм с прорежи- ванием по частоте отличаются структурой и последовательностью вычислений, хотя имеют одно и то же число операций Характе- ристики алгоритмов совпадают, но пользователь может предпо- честь один из них из соображений реализации. Мы подробно рас- смотрим только характеристики алгоритма с прореживанием по времени. Алгоритм с прореживанием по времени сводит и-точечное пре- образование Фурье к двум (и/2)-точечным преобразованиям Фурье с некоторыми дополнительными сложениями и умножениями. Часть из умножений представляют собой умножения на единицу иФи + j. Они тривиальны и не требуют действительного вычисле- ния. Чтобы обойтись без тривиальных умножений в алгоритме, их следует обрабатывать отдельно. Иногда конструктор предпо- читает включить в процедуру вычисления все умножения, даже тривиальные. Алгоритм с прореживанием по времени работает рекурсивно, разбивая на каждом шаге и-точечное преобразование на два (и/2)-точечных преобразования, которые, в свою очередь, раз- биваются точно таким же образом. Из уравнений ясно видно, что число М, (и) комплексных умножений и-точечного БПФ удовле- творяет рекуррентному уравнению M, (n) = 2М, (n/2) + и/2, Прореживание по времени разбивает множество компонент вход- ного вектора на два подмножества: множество компонент с чет- ными индексами и множество компонент с нечетными индексами. Множество компонент выходного вектора разбивается при этом на множество первых и/2 компонент и множество вторых и/2 компонент. 2 -точечный БПФ-алгоритм Кули Тычки по основанию два, в котором и' = 2 ‒ ' и n" = 2, называется БПФ-алгоритмом Кули Тычки по основанию два с прорежцванием по частоте. Уравнения БПФ в згом случае преобразуются к виду 
4.2. Алгоритм Кули ‒ Тычки по малому основаиию а число А, (и} комплексных сложений удовлетворяет рекуррент- ному уравнению А, (и) = 2А, (и/2) + и, где и равно степени двойки. Решения этих уравнений даются равенствами М, (п) = (и/2) log п, А, (u) = п log u. Комплексные умножения можно реализовать алгоритмом с че- тырьмя вещественными умножениями и двумя вещественными сложениями. В этом случае характеристики БПФ по основанию два даются равенствами Мя (и} = 2n log, и, Ая (и) = 3n log, п. Альтернативный алгоритм выполнения комплексного умножения содержит три вещественных умножения и три вещественных сложения. В этом случае характеристики имеют вид MÄ (n) = (3/2) и log, и, А„(п) = (7/2) и log, и. Теперь предположим, что ма хотим построить алгоритм, в котором выброшены все тривиальные умножения. Тогда полу- ченные нами характеристики сложности алгоритма улучшатся. Тщательный анализ алгоритма показывает, что все умножения на самом внутреннем шаге алгоритма тривиальны и имеют вид умножений на ( 1}» для А = О, 1; все умножения на следующем шаге тривиальны и имеют вид умножений на j~ для k = О, 1, 2, 3; на последующих шагах число тривиальных умножений равно n/4, и/8, .... Следовательно. число комплексных умножений равно М, (n) = (и/2) ( 3 + log, n) + 2. Используя для реализации комплексного умножения алгоритм с четырьмя вещественными умножениями и двумя вещественными сложениями, для БПФ-алгоритма по основанию два получаем MR (и) = 2n ( 3 + log~ и} + 8, Ая (и} = 3n ( 1 + log» и) + 4. Используя для комплексного умножения алгоритм с тремя веще- ственными умножениями и тремя вещественными сложениями, получаем характеристики MÄ(n) = (3/2) п( 3+ log,и}+6, Ая (и) = (1/2) и ( 9 + 71og, и) + 6. Еще немного можно улучшить алгоритм, если воспользоваться свойством симметрии тригонометрических функций. Заметим, что щп/а (1 ‒ j)/~/2 
136 Гл. 4. Быстрые алгоритмы дискретного преобраэоваиия Фурье Умножение на эту комплексную константу требует всего двух вещественных умножений и двух вещественных сложений. Таких умножений на шагах 3, 4, ... алгоритм содержит соответственно и/4, и/8, .... Их можно реализовать с помощью специальной процедуры умножения. При этом в зависимости от выбранной реализации комплексного умножения характеристики алгоритма будут даваться равенствами M„(n) = n ( 7 + 2 1оц, и} + 12, A„(n) = Зп ( 1 + log, n) + 4 или л/2 ‒ 1 А ]~ ги,. г=о 1=0, ..., и/2 ‒ 1. Так как n/2 ‒ 1 А~,1 ‒ А„= g и~'"а; (m2~ ‒ 1) = с=о л/2 ‒ 1 л/2 ‒ 1 и'ци~а~2~з1ц(2яЕ/n) = g (>c ‒ й-1-д) >'> "~ с=о С=1 M Ä (n) = (1/2) п ( 10 + 3 log, и} + 8. А„(п} = (1/2) n ( 10 + 7 log, n) + 8. Как мы видим, число вариантов алгоритма Кули Тычки весьма велико, но мы еще не перечислили все возможности; имеются и другие возможности улучшения алгоритма. На рис. 4.5 приведены характеристики некоторых БПФ-алгоритмов Кули Тычки. В таблицу помимо обычной формы алгоритма Кули Тычки включен БПФ-алгоритм Рейдера Бреннера. Эгот БПФ- алгоритм является модификацией алгоритма Кули Тычки, осно- ванной на том, что с помощьк> переупорядочивания уравнений БПФ некоторые умножения на комплексные константы можно заменить умножением на вещественные константы. Алгоритм Рейдера Бреннера можно строить, исходя из урав- нений для алгоритма с прореживанием по времени, но мы пред- почитаем отталкиваться от уравнений для алгоритма с прорежи- ванием по частоте: л/2 ‒ 1 ~2й = f (Vl + оГ+и/2) K y Й=О, ..., и/2 ‒ 1, V2kyl = g (Dt Vl+n/2) > ш tw Определим рабочий вектор д, равенствами О, i =0, (о~ ‒ vq~~q)/[2/з1п (2nl/n)), 1 = 1, ..., и/2 ‒ 1, и положим 
к Л фф хх о> х ИЮ~ О Ш И'вg О t а арх д,йi g ©ха 4j х gg 3gp Цод р, М О м,' к ~Д Вф g L охх 0~ о х~~ 3 Ой~ х R6.Q р ~о Ям Ю. хИ ФЩ 3p® О~,й +ОK L' х Agх од Я Яйся х~а ~ C Pg Cgp ООХ ~М Ц фабр ~хи N д О ~'. 3 6g p~X gpO олаф i~i g К 3 ф охх Вэх vs~ ФЬф Q g Q о о g М Ц р 00 g ~ф,р ХД: рC 0 е аида Щ Я~1 чф~ К л ~~» ° Ц охх 3~ 4t O Р'~~ х й С~ Q ~1 ~ а ф LO Q ) ~-> -- ~ @Ь Ql CO W M C) ° Ю еч Щ 0Q QQ ЯЖ3-ЖЯРЖЗ LQ +3 ~) е~м щ 00 сф ~ cQ Ю Щ СМ ~ Ce О 00 Щ cO lA Ф ~0 я СЧ я я CO Я Я Б д~ @~ в@ чФ' С> <О ~Э В ао О СЕ а e e О Е Э' СЧ О~ Ю Ch О~ ~ аО йэ 4., ео ~ ~ o сч .э 3 со сп о ж в ° Э О) о0 Ю СЧ Я ~0 ЧР СЧ 'Ф ф ® СМ ~Э Я Ю к 8 ю х д к ( р И О р РЪ б д В:( 9 Я Зm й~ g x р д ~~ ~ Н йн Щ М ~ a 3t .f, [ и р М 3 д, о О 03 х ~к~ (." к ее ф Оа х и хх~ а х 3 Ю g V Е х о хк р, fJ 
138 Гл. 4. Быстрые алгорипкы дискретного преобразования Фурье f=О j (и +„‒ а )/[2sin (2и!/и)1 ю = 1, ..., n/2 ‒ 1 л/2-1 а~иМ~ k = О, ..., и/2 ‒ i l=O п/2-1 ~ ( + а,+ /2) < ' й = О, .... и/2 ‒ < Г=О = A>+< ‒ Аж+("о vÄ/z) k= О, ..., и/2 ‒ i ~и+-1 Рис. 4.6. БПФ-алгоритм Рейдера ‒ Бреннера. то величины V,z+ä и А„связаны равенствами ~и+) = ~ayi ‒ Аа+ (Vo ‒ ~и/2}. Таким образом, умножение на комплексные константы о~ уда- лось заменить на умножения на мнимые константы [2j sin (2Ы/и) 1 ', что уменьшает вычислительную сложность. Необходимо, однако, проследить, чтобы не произошло переполнение по длине слова потому, что когда и ввееллииккоо, а ~ мало, новые константы становятся весьма большими. Вкратце форма алгоритма показана на рис. 4.6. Каждое из двух (и/2)-точечных дискретных преобразований Фурье можно в свою очередь разбить точно таким же образом. На каждом шаге алгоритма требуется (n/2) 2 умножений комплексных чисел на мнимые, для чего в итоге используется и 4 веществен- ных умножений. (Мы предпочли избежать умножения на 1/2 при ~, равном и/4.) На каждом шаге алгоритма всего имеется 2п комплексных или 4п вещественных сложений. Характеристики алгоритма Рейдера Бреннера описываются рекуррентными урав- нениями М„(п) = и ‒ 4+ 2М„(п/2), AÄ(n) = 4n+2AÄ(n/2) при начальных условиях М„(4} = О, А„(4} = 16. Здесь Йе учтены имеющиеся на двух самых внутренних шагах умножения на (~1) и (~i) Вместе с другими формами БПФ-алгоритма Кули Тычки на рис. 4.5 приведены характеристики БПФ-алгоритма Рейдера Бреннера. Отметим, что полностью оптимизированные Б ПФ- алгоритмы по основанию 2 для малых длин содержат меньше сложений. Это позволяет предложить гибридный алгоритм: раз- бивать преобразование Фурье по алгоритму Рейдера Бреннера до тех пор, пока не достигнем длины 16, а затем переходить на полностью оптимизированный алгоритм. Использование на самом внутреннем этапе рассматриваемого в разд. 4.6 16-точечного БПФ-алгоритма Винограда позволяет еще больше улучшить 
4.2. Алгоритм Кули ‒ Тычки по малому основаиию 139 результаты. Характеристики гибридного алгоритма описываются теми же рекуррентными уравнениями, но с начальными условиями М„(16) = 20, А„(16) = 148. Очень популярны также БПФ-алгоритмы Кули Тычки по основанию 4. Они могут быть использованы в случаях, когда длина преобразования и ррааввнна а ссттееппеенни и 44, и получаются ее разло- жением в виде 4-4 ‒ ' или 4 ‒ ' 4. Мы рассмотрим БПФ-алгоритм Кули Тычки по основанию 4 с прореживанием по времени. Уравнения этой формы БПФ можно получить простой подста- новкой и' = 4 и и = и/4 в приведенные на рис. 4.1 общие урав- нения БПФ-алгоритма Кули Тычки. При k = О, ..., и/4 соответственно имеем а/4- ) и и» i=O 1 1 1 1 п/4- ) 4')")/4+) 1 ‒./ ‒ 1,у i-=0 n/4- ! 1 -1 1 ‒ 1 /0 v»„„„ и/4- ) 1 / ‒ 1 ‒ р )0 »4 i~O I'» 1 0 1 0 1 0 1 0 40 Ю У 41+ ! 0 1 0 ‒./ 1 0 ‒ 1 0 и/4- ) и %ч 4М 4и ~ Ы "4)+2 1 0 ‒ 1 0 ~»+n/2 0 1 0 1 л/4- ) 3» ~ 4й ~~~ру ~)»'4)+ 3 0 1 0 ./ 0 1 0 ‒ 1 ~»+ 3ë/4 Яля каждого из и/4 рассматриваемых значений индекса » такое матричное уравнение определяет четыре компоненты преобразо- вания. Этот метод позволяет и-точечное преобразование Фурье заменить четырьмя (и/4)-точечными преобразования Фурье и не- которыми дополнительными вычислениями. Из выписанного урав- нения следует, что для каждого й имеется только три различных комплексных умножения и 12 комплексных сложений. Самый внутренний шаг 4-точечное преобразование Фурье вообще не содержит умножений. Число сложений можно еще уменьшить. Яля этого перепишем последние уравнения для k = О, ..., и/4 ‒ 1 в виде 
140 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье для числа комплексных умножений и сложений соответственно. Если для вычисления комплексных умножений используется алгоритм с тремя вещественными умножениями и тремя веще- ственными сложениями. то характеристики описываются равен- ствами MÄ (n) = (9/8) n (log, и 2), AÄ (n) = (28/8} n log, и (9/4} и. Можно получить и лучшие результаты, если вложить в про- грамму способность выловить все умножения на (~1} и íà (~i) или на нечетные степени элемента (1/1/2) (1 j), поскольку они не требуют трех вещественных умножений, и убрать их из алго- ритма. Тогда характеристики будут даваться равенствами 9 43 16 Мн (п) = nlog,п ‒ ‒ п+ ‒, 12 25 43 16 Аа (n) = и log, n ‒ n +‒ Характеристики БПФ-алгоритма Кули Тычки подытожены на рис. 4.7. Основной алгоритм комплексного БПФ по основаиию 4 Полиостью оптимизированное ~ комплексное БПФ по основаиию 4 Число Число Число Число Длииа вещественных вещественных вещественных вещественных lL умножений сложений умножений сложений 4 16 64 256 1024 4096 0 36 288 1 728 9 216 46 080 0 20 208 1 392 7 856 40 642 16 164 1 128 5 824 29 696 144 384 16 148 976 5 488 28 336 138 928 ® Комплексное умножение с использованием 3 вещественных Умножений и 3 веществен- ных сложений. Тривиальные умножения иа ~1 или ~/ ие учитываются. Рис. 4.7. Характеристики некоторых БПФ-алгоритмов но основанию 4. Разложив исходную (4х4)-матрицу в произведение двух, мы полу- чили 8 сложений вместо 12. Это дает окончательную форму БПФ алгоритма Кули Тычки по основанию 4. Характеристики алго- ритма описываются равенствами М, (и} = (3/4} п (1од, и 1) = (3/8) и (log, n 2), А, (и} = 2n log~ и = и log, и 
4.3. Алгоритм Гуда ‒ Томаса быстрого преобразовання Фурье 4.3. Алгоритм Гуда Томаса быстрого преобразования Фурье Алгоритм Гуда Томаса с использованием простых делителей представляет собой БПФ-алгоритм второго типа. Концептуально он несколько сложнее алгоритма Кули Тычки, но в вычисли- тельном отношении несколько проще. Показанный на рис. 4.8 алгоритм Гуда Томаса представляет собой другой способ отобра- жения линейной последовательности. из и = и'и" целых чисел в (n' X и"}-таблицу, преобразующего одномерное преобразова- ние Фурье в двумерное преобразование Фурье. Лежащая в основе отображения идея сильно отличается от идеи алгоритма Кули Тычки. Теперь числа и' и и" должны быть взаимно простыми, а основой отображения линейной последовательности в таблицу служит китайская теорема об остатках. Обращаясь к рис. 4.9, мы видим, как переупорядочены входн~де данные. В двумерную таблицу они выписываются, начиная с верхнего левого угла, вдоль «расширенной диагонали». Поскольку число строк таб- лицы взаимно просто с числом ее столбцов, расширенная диаго- наль последовательно проходит через все элементы таблицы. После выполнения над этой таблицей двумерного преобразования Фурье компоненты преобразования оказываются записанными в двумерной таблице по иному правилу, чем были записаны ком- поненты преобразуемого вектора. Способ упорядочивания вход- ной и выходной таблиц будет описан ниже. БПФ-алгоритм Гуда ‒ Томаса (1960 ‒ 1963) и = n'è", где л' и и" взаимно просты Перестановка входных i' = t' (mod n') индексов: l = с'N'n + c A' n' (mod n), где N'n'+ N"n" = 1. г" = ю (mod n") Перестановка выходных индексов: А' = N"It, (mod и') A = и A.'+ n'k" (mod п), А = N'À (mod n") и' ‒ 1 n~ ‒ 1 Число умножений ~ n (n'+ n") Рис. 4.8. БПФ-алгоритм Гуда ‒ Томаса. 
142 Гл. 4. Быстрые алгоритмы днскретного преобразования Фурье ~ис~ексы ~~ ~иочек иа Bxpde ~иденсо~ l5 ~почек на ды~оДе 0 ~ ЩЩф l4 ИНдеяцу 21mcweu иа Выходе Йидегсы 2f точки на &оое 0 ! 2 0 I5 9 3 18 12 6 0 3 6 9 12 15 18 7 ! 16 !0 4 19 13 7 10 13 16 19 ! 4 14 8 2 17 11 5 20 !4 17 20 2 1 8 I! pmobparreeup 8bsqucneeu8 отобраиениг I 9 Рис. 4.9. Примеры переиндексации по методу Гуда ‒ ToMaca. Построение БПФ-алгоритма Гуда Томаса основано на китай- ской теореме об остатках для целых чисел. Входные индексы задаются вычетами по правилу i' = i (mod и'), i" = г (mod n"). Это правило представляет собой отображение индекса ~ на расши реннув диагональ двумерной таблицы, элементы которой зану- мерованы парами индексов (i', ~"}. Согласно китайской теореме об остатках, существуют такие целые числа N' и N", что выпол- няется равенство с = ГN"'n" + ю"N'и' (mod и), где N'и' + N"è" = 1. Выходные индексы определяются несколько иначе. Пусть k' = N"k (mod и'), k" = N'k (mod n"). Эти равенства можно переписать в эквивалентном виде Й' = ((N' mod и') k mod и'), lг" = ((N' mod и"} k mod n"}. Выходные индексы А вычисляются по правилу lг = и"/г' -1- и'lг" (mod и). Для проверки этого равенства выпишем; k = и" (N"Й -ф- Q,n') + и' (N'k + Q,n") (mod а'и") = = k (и"N" 1- и'N') (mod и) = k. 
4.3. Алгоритм Гуда ‒ Томаса быстрого преобразования Фурье 143 В этих новых индексных обозначениях формула V» Е (~ "о< С=О преобразуется к аиду ‒ 1 n' ‒ 1 У,„,~, „~' f (о(<»<" -(-<-и 1<к»'+и»">о~, „, С-=0 С =О Выполним умножения в показателе степени. Поскольку поря- док элемента со равен n'n", то члены с этим показателем пропа- дают. Тогда выписанное выше преобразование индексов для эле- ментов входной и выходной таблиц дает ‒ 1n" 1 (<», »„~~~ ~ <><Ч"(К')г <'»'<> N'(ë') ° <"»"V<, С'=0 C" — 0 ‒ 1 n" ‒ 1 p<'»'~<"»"(<, С'=0 l" — 0 где P = и»<"«'>' и у = и»<'("'>'. Элементы р и у являются про- стыми корнями из единицы степеней n' и n", задающими и'-точеч- ное преобразование Фурье и n"-точечное преобразование Фурье соответственно. Чтобы увидеть это, достаточно заметить, что p = (<ок)»<- ". Так как и"" = е ‒ »«~ и N"n" = ] по модулю и', то P = е-»«"'. Аналогичное утверждение справедливо и для элемента у. Уравнение теперь записано в форме двумерного (и' 'х n")- точечного преобразования Фурье. Число умножений и число сложений равно примерно и (и' + n"). Преобразование Фурье по строкам и по столбцам, если соответствующая размерность задается составным числом, можно в свою очередь упростить, применяя алгоритм БПФ. Таким образом, если длина и преоб- разования разлагается в произведение простых множителей д,, то описанная форма БПФ-алгоритма требует примерно и g n, ! умножений и столько же сложений. Яля вычисления преобразования Фурье можно пользоваться как БПФ-алгоритмом Кули Тычки, так и БПФ-алгоритмом Гуда Томаса. Можно даже строить алгоритмы, содержащие БПФ-алгоритм Кули Тычки и БИФ-алгоритм Гуда Томаса одновременно. Например, используя Б ПФ-алгоритм Гуда То- маса, можно 63-точечное преобразование Фурье разбить на 7-то- чечное и 9-точечное; используя далее БПФ-алгоритм Кули Тычки, 9-точечное преобразование можно разбить на два 3-точеч- ных преобразования. Вычисления при этом преобразуются форму, аналогичную трехмерному (3 х 3 х 7)-преобразованию 
144 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье 52 Рис. 4.10. Некоторые способм построения 1000-точечного преобразования Фурье. Фурье. На рис. 4.10 показано несколько способов разбиения 1000-точечного преобразования Фурье на преобразования мень- шего объема. Каждый из способов содержит 2-точечный модуль три раза и 5-точечный модуль три раза. Но все процедуры суще- ственно различны, так как малые модули используются в разной последовательности. Число умножений и сложений, чувствитель- ность алгоритма к погрешностям вычислений и легкость реализа- ции алгоритма различны. 4.4. Алгоритм Герцеля Значение одной компоненты преобразования Фурье можно вычислить по правилу Горнера, дающему один из способов вы- числения многочлена Q(X) = O~~Õ" + УддХ" + ° ° . + ОдХ+ Оо в некоторой точке р. Правило Горнера, записанное в виде (1) =(". (( 1+ .)1+о-.)1+".+ )1+о" требует и 1 сложений и и 1 умножений в поле элемента р. Если все различные степени элемента р вычислены заранее, 
4.4. Алгоритм Герцеля 145 то правило Горнера не дает никаких преимуществ по сравнению с прямым вычислением. Преимущество правила Горнера состоит в том, что оно не требует предварительного вычисления и запоми- нания этих степеней. Если P = и~, то правило Горнера вычисляет Й-ю компоненту преобразования Фурье посредством n ‒ 1 комплексных умноже- ний и и 1 комплексных сложений. Более эффективным для этого вычисления является алгоритм Герцеля. Алгоритм Герцеля нредставляет собой процедуру вычисления дискретного преобразования Фурье. Он позволяет уменьшить число необходимых умножений, но на очень малый множитель. Он не принадлежит к алгоритмам БПФ, так как его сложность по-прежнему пропорциональна и'. Алгоритм Герцеля полезен в тех случаях, когда требуется вычислить малое число компонент преобразования Фурье, как правило, не более чем Jog u из и компонент. Так как БПФ-алгоритмы вычисляют все ком- поненты преобразования, то в этих случаях приходится выбрасы- вать ненужные компоненты. Для вычисления одной компоненты преобразования Фурье n — I ~„= g ии'о, рассмотрим многочлен р (х) = (х и~) (х и-~). 1=0 Он представляет собой многочлен наименьшей степени с веще- ственными коэффициентами, для которого элемент и-а является корнем. Это минимальный многочлен элемента ь" над полем вещественных чисел, и он равен р (х) = х' ‒ 2 cos ( ‒" Й) х+ 1. Пусть v(x) = f v;x~ и запишем v (х) = р (х) Q (х) + r (х}. Многочлен-частное Q (х) и многочлен-остаток г (х) могут быть найдены с помощью алгоритма деления многочленов. Тогда вели- чина Vz может быть вычислена по остатку согласно равенству т"у, = о(в~) = I (m"), так как по построению величина р (и~) равна нулю. Ббльшая часть работы приходится на деление многочленов. Если коэффициенты многочлена v (х} являются комплексными, то для его деления на многочлен р (х) требуется 2 (и 2) вещественных умножений; если же коэффициенты многочлена о (х) являются вещественными, то требуется и 2 вещественных умножений. Аналогично, не- обходимое число сложений в комплексном случае равно 4 (и 2), а в вещественном 2 (и 2). 
146 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье Замечания: Входные данные вещественные или комплексные. 2л, ° А= 2cos k. П ° r (х) остается в регистре сдвига после завершения деления - Для каждого Vg, своя цепь деления. - ~a = + ra+ ~o- k Рис. 4. )1. Блок-схема алгоритма Герцеля. Так как степень многочлена r (х) равна единице, то для вы- числения r (и~} требуется только одно комплексное умножение и одно комплексное сложение. Таким образом, при комплексном входе для вычисления одной выходной компоненты алгоритму Герцеля требуется 2п 1 вещественных умножений и 4п 1 вещественных сложений. Блок-схема алгоритма Герцеля показана на рис. 4.11. Эта схема имеет форму авторегрессионного фильтра. Это является следствием того, что схема деления многочленов имеет форму авторегрессионного фильтра. После ввода многочлена v (х} цепь на рис. 4.1 I будет содержать остаток r (х) от деления 'многочлена v (х) на многочлен р (х). Частное Q (х) интереса не представляет и поэтому отбрасывается. 
4.5. Вычисление преобразования Фурье с помощью свертки 147 4.5. Вычисление преобразования Фурье С ПОМОЩЬЮ СВер;Ш И Одним из эффективных способов вычисления дискретного пре- образования Фурье где р равно квадратному корню из и. В этом варианте преобра- зования Фурье производятся следующие вычисления: П ‒ ) и ‒ 1 Чирп-алгоритм содержит и поточечных умножений v; на циклическую свертку с P' в КИОфильтре с и отводами и следую- щие за этим и поточечных умножений íà P-~*. Поэтому полное число операций по-прежнему имеет порядок п~~, так что чирп- алгоритм асимптотически не эффективнее прямого вычисления йреобразования Фурье. Однако в некоторых приложения х он допускает более простую аппаратурную реализацию. Кроме того, является сведение к вычислению свертки. Это может показаться странным, так как мы уже знаем, что хорошим методом вычисле- ния свертки является использование БПФ и теоремы о свертке. И на самом деле, возможно поэтому, многие годы рассматриваемые в данном разделе методы привлекали мало внимания. сейчас, однако, стало понятно, что иногда выгодно вычислять преобразо- вание Фурье сведением к вычислению свертки, а иногда, наобо- рот, выгоднее вычислять свертку через преобразование Фурье. Что еще удивительнее, иногда выгодно вычислять свертку через преобразование Фурье, реализуя при этом преобразование Фурье через алгоритм вычисления свертки, хотя и на длинс, отличной от исходной. Два различных способа перехода от преобразования Фурье к свертке дают чирп-алгоритм Блюстейна и алгоритм Рейдера для простых чисел (см. рис. 4.12). Алгоритм Блюстейна переводит и-точечное преобразование Фурье в и-точечную свертку и 2п дополнительных умножений. Алгоритм Рейдера переводит и- точечное преобразование Фурье в (и 1)-точечную свертку, но только для простых чисел и. Алгоритм Блюстейна менее полезен, но проще в описании, так что мы начнем с него. Он описывается равенством 
Чирп-алгоритм Блюсп~ейна СО Vupn Чорни Ллгоритм Рейдера с~ли простой длины Длина и преобразодония яблдется простым числом Исподьзодать 3C ‒ лримитидный элемент пору ОЕ(а) (!, 2, 3,..., д ‒ Ц = (к, у, у,..., ~г и-3 t-o mod n) ~0 ‒ ~i ck ~~к= up+ k=O,...,n ‒ 1 a=0 вЧа+~М> Рр+ И Ug с-т ° Vj, Рис. 4.12. Сведение преобразования Фурье к свертке. 148 Гл. 4. Быстрые алгоритмы дискретного преобразования фурье 
f49 4.5. Вычисление преобразования Фурье с помощью свертки прямое вычисление свертки можно заменить рассмотренными в гл. 3 алгоритмами быстрой свертки. Алгоритм Блюстейна содержит 2п умножений и свертку длины и. Более предпочтителен следующий алгоритм алго- ритм Рейдера, так как он не содержит 2п дополнительных умножений. Алгоритм Рейдера содержит только некоторые опе- рации по переиндексации входных данных и циклическую сверт- ку, длина которой теперь уже равна п 1. Алгоритм Рейдера можно использовать для вычисления пре- образования Фурье в любом поле F, если только длина преобразо- вания и является простым числом. Так как п простое число, то можно воспользоваться структурой поля GF (n) для переин- дексации компонент входного вектора. Поле GF (и) не следует путать с полем F, в котором вычисляется преобразование Фурье. Выберем примитивный элемент и простого поля GF (и). Тогда каждое не превосходящее п целое число можно однозначно запи- сать в виде степени элемента я. Преобразование Фурье А=О, ...,и ‒ 1, Пусть r (i) обозначает единственное для каждого i от 1 до и 1 целое число, такое что в поле GF(n) выполняется равенство st«~> = <. Функция r (i) является отображением множества «1, 2, ..., и 1} на множество «1, 2, ..., и 1}; она задает пе- рестановку на множестве «1, 2, ..., n 1}. Тогда Г„можно за- писать в следующем виде: Так как r (i) задает перестановку, то можно положить 1 = r (k) н / = и 1 r (i) и выбрать j в качестве индекса суммирова- ния; это дает можно переписать, заменив индексы 1 и k соответствующими степенями элемента я. Индексы г и k принимают и нулевые значе- ния; эти компоненты входного и выходного векторов удобнее рассматривать отдельно. Тогда 
150 Гл. 4. Быстрые алгоритмы дискретного преооразомния Фурье ИЛИ n ‒ 2 V~ = ~+ g и"' тот, /=0 где V~ ‒ ‒ V > и о~ ‒ ‒ 0„„) у соответственно переставленные компоненты последовательностей входных и выходных данных. Теперь мы получили уравнение для вычисления циклической свертки последовательностей }о~} и }и"I}. Таким образом, пере- ставляя индексы входных и выходных данных, мы записали пре- образование Фурье в виде свертки. Однако для того вида, в кото- ром эти формулы выписаны, необходимое число операций для вычисления свертки опять имеет порядок и'. В следующем раз- деле мы скомбинируем алгоритм Рейдера для простой длины с алгоритмом Винограда для свертки и получим малый ОПФ- алгоритм Винограда. Построим, используя алгоритм Рейдера, двоичное пятиточеч- ное преобразование Фурье, для которого 4 Vg = ~ и'~v;, k = 0, ..., 4, ~=ц где ь = е-»"~5. Сначала перепишем преобразование в виде 4 Vo= Z~r j~ 4 4 Vq=>o+ Еи'"ц=1/о+ К(и'" 1)о~, А=1, ..., 4, 1=1 j~) и будем заниматься только членами f (и'" 1) о;. Элемент 2 1=1 в поле GF (5) является примитивным, и, следовательно, в этом поле выполняются р авенства 2' = 1, 2' = 2, 2' = 4, 2' = 3, 2' = 1, 2 ' = 3, 2 ' = 4, 2-з 2 Таким образом, 3 f (и2 т 1) о'. /=() В этой сумме легко узнается 4-точечная циклическая свертка. Выделим постоянные члены и определим фильтр Рейдера, задавая его многочленом g (х) над полем комплексных чисел, где g (x) = (и' 1) ха+. (и' 1) х'+ (и' 1) х+ (и 1) (с коэффициентами g~ = и~' 1). Вход и выход фильтра описы- ваются многочленами, коэффициенты которых равны перестав- 
4.5. Вычислейие преобразования Фурье с помощью свертки 151 ленным компонентам векторов ч и V. Итоговая форма 5-точечного алгоритма Рейдера задается уравнениями: d (x) oâx + u4x' + oçx + u„ s (х) ‒ (Vs — V<>) х' + (V4 V ) х~ + (V V<>) х + (V, Vo} s (х} = g (х} d (х} (mod х4 1}. Многочлен g (х) фиксирован. Многочлен Н (х) образуется перестановкой коэффициентов многочлена о (х}. Многочлен V (х) получается обратной перестановкой коэффициентов многочлена s (х}. Схематически этот алгоритм представлен на рис. 4.13. Поучительно переписать алгоритм Рейдера в матричной фор- мулировке. Для 5-точечного преобразования Фурье такая фор- мулировка имеет вид Ui Ug 04 Отсюда получаем Vî = оо + о1 + oà + oç + р4 и 2 ‒ 1 ,„2 1,„3 1 в4 ‒ 1 са ‒ 1 I 1 1 4 UI И2 1 ИЗ ‒ 1 ю2 ‒ 1 U4 Правило перестановки алгоритма Рейдера приводит это равенство к эквивалентному равенству 2 1 са4 ‒ 1 1 &3 ‒ 1 1 си1 1 V, — У~~ ~ 2 О Я 1 4 1 cuI ‒ 1 1 ы2 ‒ 1 au'‒ 4 1 2 UI U3 Од 4 U4 v4 ‒ VÎ V3 VQ U2 в котором легко распознать матричную форму записи цикличе- ской свертки UI U4 U2 V0 V) 2 ~ гЗ ~4 V„- ~ V2 ‒ Vo V4 ‒ Vo ~3 Vo 1 1 ~д gy ((Д Cd ) ~~) ~) Cd Cd ~~) g04 Cd' 1 си gO g3 g2 gI gI 80 83 ~2 g2 gi g0 g3 g3 g2 gi gO 
152 Гл. 4. Быстрые алгоритмы дискретного преобразоваиия Фурье Вкод (~0~ >)e 921 РЯэ >g) Выход (У~, Vq V~ V~, V~~) Рис. 4.13. Алгоритм РеКдера вычисления 5-точечного преобразоваиия Фурье. 
153 4.5. Вычисление преобразования Фурье с помощью свертки ~ „,ип, 1=4) А О -, p 1, воспользуемся структурой кольца z/(p ) для того, чтобы пере- упорядочить компоненты векторов. Эта структура описывается теоремой 5.1.8. Если д равно степени простого нечеткого числа, то Z/(p ) содержит циклическую подгруппу порядка р-' (р 1}. Из (р'" х р'"}-матрицы W = [и'~[ просто выбросим все вызы- вающие трудности строки и столбцы так, чтобы к оставшейся матрице размерности р-' (p 1) была применима идея Рейдера. Выброшенные строки и столбць~ будем обрабатывать отдельно. Как мы увидим в следующем разделе, обработку даже этих вы- зывающих трудности столбцов и строк можно организовать как вычисление еще меньших циклических сверток. Таким образом, вычисление р'"-точечного преобразования Фурье, хотя и слишком нерегулярного для того, чтобы быть вы- числяемым как единое целое, можно реализовать в виде всего нескольких разумных фрагментов. Случай, когда длина преобразования равна степени двойки, является несколько более сложным и требует еще одного уровня вычислений. Это объясняется тем, что множество индексов, взаимно про- стых с 2~ множество нечетных индексов ‒ ке образует цикли- ческой группы по умножению. Как доказывается в теореме 5.1.8, это множество образует группу, изоморфную группе Zq Х ~„„z. Ядея организации процедуры вычислекий состоит в следующем. Из (2'" X 2'"}-матрицы W = [и'~1 выбрасываются все строки и столбцы с четными икдексами, так что остается матрица размер- ности 2 -1. Все оставшиеся индексы являются нечетными и по умножению образуют группу, изоморфную группе Zz X Z~ z. Этот изоморфизм используется для того, чтобы определить такую go = (o 1, g~ = (o ‒ 1, g~ = (o ‒ 1, g~ = o) 1. Идея алгоритма Рейдера перекосится на случай, когда длина и преобразования равка степени нечетного простого числа. В этом случае, подобно тому, как нулевые компоненты временного и ча- стотного векторов обрабатывались отдельно, еще некоторое коли- чество компонент временного и частотного векторов должны обра- батываться отдельно. Это объясняется тем, что в кольце Z/(pm) не существует элемента порядка р~ 1. Теорема 5.1.8 (которая будет доказана в гл. 5} гарантирует, однако, что для простого нечетного р в этрм кольце имеется элемент порядка pm-' (р 1), и мы этим воспользуемся. При вычислении 
154 Гл. 4. Быстрые алгоритмы дискретиого преобразюваиия Фурье перестановку строк и столбцов матрицы, когорая переводит ее в матрицу вида где W, и W, представляют собой (2 -г><2 -')-матрицы, каждая из которых задает структуру циклической свертки. Точнее, пусть д = 3 и о = 2'" 1. Тогда по модулю им™ ~2 ~ ~ . На самом деле группа нечетных целых чисел отно- сительно умножения по модулю 2 порождается элементами л и 0: каждый элемент группы может быть однозначно представлен в виде о'л'", где 1' = 0, 1 и l" = 0, ..., 2 -2. Следовательно, О ! 'л ! "Ог' ЛГ" и подходящей перестановкой строк и столб- цов матрица W приводится к виду где l" и r" соответственно индексы строк и столбцов в каждой из подматриц. Каждая из четырех подматриц задает циклическую свертку длины 2 ‒ ~. После выполнения перестановки рассматриваемое вычисление приводится к виду матричной 2-точечной циклической свертки один из способов вычисления которой дается формулой р (~ 1 + ~' 2) '] (:Н' Этим задача сводится к вычислению двух комплексных цикличе- ских сверток длины 2 ‒ 2; мы увидим, что вычисления можно организовать несколько лучше. В качестве примера рассмотрим две 4-точечные циклические свертки, образующие сердцевину 16-точечного преобразования Фурье. Пусть IS V„=pm'"а;, А=О, ..., 15, f-О 
4.5. Вычислеиие преобразования Фурье с помощью свертки 155 где а" = 1. Рассмотрим матрицу, образуемую в результате вы- брасывания всех четных индексов в рассматриваемом диапазоне значений ~ и й. Получим 1 3 S 7 9 I I )3 IS 3 9 IS S 11 1 7 13 S IS 9 3 )3 7 1 II S 3 1 IS 13 II 9 9 II 13 IS I 3 5 7 I 1 1 7 13 3 9 IS S US И9 И 7 ! !) 5 15 9 3 IS 13 l) 9 7 S 3 ) И)5 Чтобы кайти нужную перестановку, выпишем индексы в виде чисел 15'-3'" для 1 = О, 1 и "= О, 1, 2, 3. Степени тройки по модулю 16 имекгг вид 3О = 1, 31 = 3, 3' = 9, 3' = 11 3О = »1 13-1 ‒ 11 3-~ = 9 3-з 3 и соответственно 15 3' = 15, 15 3' = 13, 15.3' = 7, 15.3' = 5, 153'= 15, 153'= 5, 153'=7, 153э= 13. Выполним перестановку входных икдексов, записывая их в по- рядке )5-'.3-'" (mod )6), и перестановку выходных индексов, записывая их в порядке )6'.3'" (mod 16). Тогда 1 7 51 I !з 7 ' 1 )5 )31 1 1 1 IS1 И yI ~9 ~3 )з И) 15 !!3 9 1 1 з I 1 1 ! 1 5 1 40 Cd 1 )З 7 1 1 15 13,' 1 1 5 )51 Л 3 9 з 1) ) 9 < II ~')5 и,' ~7 I +I3 И!5 !) 13 Чтобы показать четыре образовавшиеся при этом циклические свертки, матрица разбита на блоки. Если преобразование Фурье вычисляется в поле комплексных чисел, то блоки связакы соот- yI 1 ~з и,' ~7 и,' и,', ~!3 <)S Г 1 3 1 Il I 14л) 1 ! 9 Il )И 1 3 9 )Ю 1 1 )5 И ! 5 15 1 1 „5 1 !з 1 9 I)1 1 1 1 3 9 1 1 1 ) 3 1 1 )! I 1 1 л Г )5 I I 5 1 1 7 )И 1 )з )И l r 1 1 фД 1 1 )) 1 9 I 1 1 )„З 1- 
156 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье ношением комплексной сопряженности. Чтобы наглядно выявить эту связь, перепишем матричное уравнение в виде U1 „3 г I ‒ l 1 -!! I I 1 ‒ 9 1 1 -3 1М Отметим, что четыре верхние строки комплексно сопр яжены с четырьмя нижними строками; выполнять надо только вычисле- йия, связанные с первыми четырьмя строками. Следовательно, дальнейшие вычисления можно организовать в виде пары цикли- ческих сверток Vox + Vgx + V11x+ V! ‒‒ = (и"х'+ и'х'+ и'х+ и)(о„х'+ о,х'+ u,õ+ u,) + + (и "х'+ й'х'+ и 'х + и ') (о,х'+ u,õ'+ о„х + о„) (mod х' ‒ 1). Для комплексного поля можно использовать и альтернативный способ, основанный на выписанной выше 2-точечной циклической свертке блоков: VI 1 1 2(WI+ Wz) где при 6 = 2п/!6 соз Зд cos 98 соз д cos 36 соз 116 cos д cos 96 cos 118 I 2(% + Wy) И j sin 6,/яп Зд /з~п118 /яп 8 /яп 9д /яп 116 ~sin 36 jяп96 /яп 96 /яп I18 ,/яп Зд /sin 96 /sin 6 /яп 36 jÿï 116 ./яп д I g(WI ‒ Wg) = и,' К! й V3 1 1 !! I I 9 1 3 I ~~! V ‒ 3 ‒ ! ‒ Il -9 cos д cos 116 cos 96 cos 36 -9 -3 ‒ ! ,‒ II II 1 1 9 3 1 1 ! 1 I ‒ I II ! ( 1 ‒ 9 ! 1 1 ‒ 3 1 I 1 ‒ 11 1 r -1 1 Ю 1 1 - II 1Ю 1 -9 -3 1 r 1~, е ~ ° I 1 !! 1 1 9 ) 1 „3 1- -9 ,„-3 -I ‒ ll соз 11 cos 96 cos 36 cos 6 ‒ 11 1 1 1 -9 ! 1 1 ‒ 11 1 1 ‒ 11 I I 1 11 1 I 1 9 1 1 „3 1 1 1 l 
157 4 ° 6. Алгоритм Винограда для быстрого преобразования Фурье Заметим, что теперь мы получили две циклические свертки, одка из которых ~исто вещественная, а другая чисто мнимая. Я,ля случая вещественного входного вектора необходимо вычис- лить только две вещественные свертки, s (х) = ]соя 36х' + cos 96х' + cos 116х + cos 8] d (х) (mod ха s' (х) = Ь!и 30х' + э1п 96х' + э1п 116х + а!и 8] d' (х) (mod х4 1). Используя китайскую теорему об остатках для разложекия х' ‒ 1 = (х' 1) (х' + 1), видим, что некоторые вычисления излишки, так как cos 30х' + cos 98mÐ + cos 116х + cos 8 = 0 (mod х' в!п 36~Р + э!и 96х'+ sin 110х + sin 0 = 0 (mod х' ‒ 1). Следовательно, умножения, связанные с модулем х' 1, не нужны. Вычеты по модулю х'+ 1 требуют трех умножений каж- дый. Следовательно, для вычисления двух циклических сверток необходимо в общем только шесть умножекий. Исходное 16-то- чечкое преобразование требует, таким образом, всего 10 нетри- виальных умножений. 4.6. Алгоритм Винограда для быстрого преобразования Фурье малой длины Этот БПФ-алгоритм Винограда предназначен для эффектив- ного вычисления дискретного преобразовакия Фурье малой длины. В основу алгоритма заложены две идеи. рассмотренный в предыдущем разделе алгоритм Рейдера для простых длин и рассмотренный в разд. 3.4 алгоритм Винограда для свертки. Рас- смотрению подлежат три случая: (1) длина равна простому числу; (2) длина равна степени простого нечетного числа и (3) длина равна степени двойки. Наиболее популярными длинами являются 2, 3, 4, 5, 7, 8, 9 и 16. Характеристики БПФ-алгоритма Винограда для этих длин приведены на рис. 4.14. (Сами алгоритмы выписаны в приложении В.) Число умножений на этом рисунке упоми- нается дважды: один раз приведеко число умкожений без учета тривиальных умножений, а другой раз полкое число умкоже- ний, включающее умножения на (~1) и (Я). Если БПФ-алго- ритм малой длины используется в качестве блока для гкездового алгоритма, который будет изложен в гл. 8, m умножекия ка (=Е1) и (+f) в малом алгоритме приводят к нетривиальным умно- 
158 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье Число нетривиаль- ных вещественных сложений Число вещестаенных умиоженнй ~ Длина 2 6 8 17 36 26 44 84 94 74 157 186 0 2 0 5 8 2 10 20 20 10 35 38 2 3 4 5 7 8 9 11 13 !6 17 19 2 3 4 6 9 8 11 21 21 18 36 39 Включая умножения на ~I или ~j. Рис. 4.14. Характеристики БПФ-алгоритмов Винограда малой длины. 4 V» = f co'"о;, k = 0, ..., 4, к=м жениям (и сложениям) в большем алгоритме. Поэтому мы выпи- сываем как полное число умножений, так и число умножений без учета тривиальных. В характеристики алгоритмов, приведенные ка рис. 4. I 4, включены также некоторые тривиальные сложения. Сюда отно- сятся чисто вещественные и чисто мнимые сложения, которые согласно принятым определениям не являются сложениями. Но при подсчетах сложности мы не будем различать тривиальные и нетривиальные сложения. Если заменить вещественный вектор комплексным, то все сложения становятся нетривиальными ком- плексными сложениями. Ялина преобразования равна простому числу. Первый шаг состоит в замене преобразования Фурье сверткой. Если и мало, то воспользуемся алгоритмом Рейдера для замены преобразования Фурье сверткой, которую вычислим затем, используя алгоритм Винограда для сверток малой длины. Длина и выбирается не слишком большой, так как необходимые уравнения выписываются вручную. Переход от преобразования Фурье к свертке с помощью алгоритма Рейдера осуществляется только перестановкой ин- дексов; этот шаг не содержит ни умножений, ни сложений. Струк- тура алгоритма свертки такова, что сначала выполняется некото- рое множество сложений, затем некоторое множество умножений, а затем опять некоторое множество сложений. Рассмотрим 5-точечный двоичный БПФ-алгоритм Винограда, вычисляющий 
4.6. Алгоритм Вииограда для быстрого преобразования Фурье 159 где в = е-<'~~. Скачала воспользуемся описанным в разд. 4.5 алгоритмом Рейдера, переводящим рассматриваемое преобразо- вание Фурье в циклическую свертку s (х) = g (х) d (х) (mod х' 1), где многочлен Рейдера g (x) = (и' 1) х' + (и' 1) х'+ (и' 1) х + (и 1) имеет фиксированные коэффициенты. Вход и выход фильтра опи- сываются соответственно многочленами d (х) = u,õ' + о,х' + о,х + u,, s(x) = (V, V,) х'+ (V, V,) х'+ (V, V,) х+ (V,— Vo). Коэффициенты многочлена d (х) получаются перестановкой коэф- фициентов входного многочлена о (х); коэффициенты многочлена V (х) на выходе алгоритма (с точностью до слагаемого V,) полу- чаются обратной перестановкой коэффициентов многочлена s (х) на выходе фильтра. 5-точечный БПФ-алгоритм Винограда получается, если про- изведение g (х) d (х) вычислять с помощью алгоритма Винограда для малой свертки. Воспользуемся приведенным на рис. 3.14 и содержащим пять умножений алгоритмом 4-точечной цикличе- ской свертки. Его можно приспособить для вычисления преобразо- вания Фурье, введя в матрицу свертки операции перестановок путем соответствующей перестановки ее строк и столбцов. Так как коэффициенты многочлена g(x) фиксированы, то вычисление произведекия вектора g на его матрицу также можно выполнить заранее. Если в алгоритме 4-точечной свертки произвести все эти изменения и внести в него члены оо и Vo, то и получится 5-точеч- ный БПФ-алгоритм Винограда, стандартная матричная форма которого показана на рис. 4.15. Эта стандартная форма окажется очень полезной при построении в гл. 8 гкездовых методов. Заме- тим, что в алгоритме на рис. 4.15 матрицы предсложений и пост- сложений не являются квадратными. 5-точечный входной вектор дополняется до 6-точечного вектора, к компонентам которого применяется умкожекие. Верхние две строки связующей матрииы не содержат умножений, так как связывают о, и V<>. Другие пять строк соответствуют алгоритму вычисления 4-точечной цикличе- ской свертки. Одна из кокстакт умкожекия оказалась равной единице, так что ка самом деле алгоритм содержит'только пять нетривиальных умножений и одно тривиальное. На рис. 4.15 видка также и другая важная деталь алгоритма. Хотя нет никаких причин ожидать этого, все диагональные эле- менты оказались чисто вещественными или чисто мнимыми '). 1) При желании множитель t можно переиести из диагональной матрицы в матрицу постсложений. Тогда элементы диагональной матрицы окажутся чисто веществениыми. 
160 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье i'= 0, .4 -j 2rlS и=Г v = wv = CBAv ! 0 0 0 0 0 ! ! 1 1 0 ‒ ! ! ! ‒ ! ! 1 0 ! 1 †! †! ‒ 1 0 ! ! 1 ‒ 1 0 ! 1 1 1 1 1 0 1 1 1 1 0 1 ‒ 1 ‒ 1 1 0 1 ‒ 1 ! ‒ 1 0 ! 0 0 ‒ 1 0 0 ‒ 1 1 0 В0 в, Вг вз в в г~в В,=1 2! (соя д + cos 26) ‒ 1 ! i (cos д ‒ cos 26) j sin 6 j ( ‒ sin д + sin 26) ./ (sin 6 + sin 28) ! ! ! 1 ! ‒ 1 ! ‒ 1 2 0 ‒ 2 0 2 2 2 ‒ 2 2 2 -2 ‒ 2 I 4 и д = 2т/5 Рис. 4.15. 5-точечный БПФ-алгоритм Винограда. gP ‒ ' ‒ 1 = (х<~ ‒ <)I> ‒ 1) (х<~<)I>+ 1). Делители многочлена х<' ‒ ' 1 делят один из множителей, стоя- щих справа в этом равенстве. Следовательно, когда алгоритм Ви- нограда для вычисления свертки разбивается на подзадачи, соот- ветствующие делителям мкогочлека хр»! 1, то ситуация опи- сывается следующей теоремой. Теорема 4.6.1. Пусть g (х) многочлен Рейдера, тогда для каждого нечетного р когффициенты многочлена g (х) (mod x<p <>~г 1) являются вещественными, а ковффициенты многочлена g (x) (mod х«' ‒ <>~2+ 1) являются мнимыми. Это существенно потому, что означает, что в случае вещественного входного вектора каждому умножению отвечает одно веществен- ное умножение, а в случае комплексного входного вектора каж- дому умножению отвечают два вещественных умножения. Это яв- ление оказывается довольно общим. Если р нечетко, то можно записать 
l61 4.6. Алгоритм Винограда для быстрого преобразования Фурье Яоказательство. Так как элемент я примитивен, то лР ‒ ' = 1 и я(р ‒ '>~2 = ‒ 1. Так как р ‒ 2 g(x) = f-(и" ‒ 1) х4, то коэффициенты многочлена g (х) (mod х<~ ‒ '>~2 ~ 1) даются ра- венствами (о~п~ 1) ~ ( л~+ (y ‒ >>/> 1) Утверждение теоремы вытекает теперь из того, ~0 ~(pg)]2 1. Мы показали, как строится БПФ-алгоритм Винограда малой длины для случая, когда длина преобразования и является про- стым числом. БПФ-алгоритм Винограда малой длины может быть построен и в случае, когда длина и преобразования равна степени простого числа. Эта конструкция также основана на аналогичной алгоритму Рейгера идее перехода от преобразования Фурье длины р, р простое, к свертке. Однако множество целых чисел по модулю р не образует поля, так что в этом случае отсутствует элемент л порядка р 1. Случаи р = 2 и нечетного простого р решаются двумя различ- ными методами. Сначала рассмотрим случай нечетного простого р. Длина преобразования равна степени простого нечетного числа. Конструкция несколько усложняется. Сначала для выде- ления циклической группы порядка р' ‒ ' (p 1} из множества (1, 2, ..., р' ‒ 1) всех индексов удаляются целые числа, крат- ные р. Эта циклическая группа приводит к свертке длины р '(р 1), которая образует ядро алгоритма вычисления пре- образования Фурье. Как и прежде, она вычисляется быстрым алго- ритмом свертки. Компоненты свертки нужно переставить по правилу, обратному перестановке входных компонент свертки, и подправить членами, учитывающими выброшенные р' ‒ ' строк и столбцов. Как мы увидим, эти поправочные члены можно вы- числить алгоритмами еще меньших сверток, так как они пред- ставимы в виде алгоритмов преобразования Фурье малой длины. Например, при N = 9 = 3' удаление номеров О, 3 и 6 из мно- жества всех индексов приводит к подмножеству {1, 2, 4, 5, 7, 8), образующему относительно умножения по модулю 9 циклическую группу, изоморфную аддитивной группе z< целых чисел {О, 1, 2, 3, 4, 5} относительно сложения по модулю 6. Мультипликатив- ная группа порождается степенями 2 по модулю 9, так как эти степени равны соответственно (1, 2, 4, 8, 7, 5}. Таким образом, 9-точечное преобразование Фурье содержит шесть строк, которые можно изолировать, переставить и вычислить в виде свертки. Нетрудно предвидеть, что остальные строки и столбцы (c индек- сами, равными О, 3 и 6} имеют структуру, близкую к 3-точечному 
162 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье преобразованию Фурье, так что некоторые из поправочных членов могут быть выражены в виде свертки малой длины. Построение 9-точечного БПФ-алгоритма Винограда пр оводится следующим образом. Выпишем матричное уравнение 1 2 3 4 ! 1 ! ! 5 6 7 8 Cd Cd Cd ' Cd 6 ! 3 6 Сд' Cd Cd Uo 2 4 6 8 3 6 ! 3 4 В 3 7 U2 U4 5 „„6 2 1 дб сд' 1 Cd' „3 8 „4 З ! 6 З В 6 4 2 иб 7 3 В 7 И' Ю' И' И U8 Посмотрев на эту матрицу, можно убедиться, что строки и столбцы с номерами О, 3 и 6 являются для нас новыми, так как содержат повторяющиеся элементы. Переставим строки и столбцы матрицы так, чтобы эти строки и столбцы оказались в новой матрице пер- выми, остальные строки расположились в порядке степеней двойки по модулю 9, т. е. в порядке 1. 2, 4, 8, 7, 5, а столбцы в порядке степеней 2 ' по модулю 9, т. е. в порядке 1, 5, 7, 8, 4, 2. Тогда вычисление преобразуется к виду 1 1 ! ! ! ! 1 з'о V3 г 1 1 I I 6 I Cd б ~д I I 3 Cd 5 б ~0 I 1 3 Cd в Cd Иб С0 1 2 Cd У7 4 Cd в Cd 7 Cd U8 И4 И2 Пунктирные разбиения, сделанные в матрице, показывают сформи- ровавшиеся циклические свертки. одну 6-точечную циклическую свертку и шесть 2-точечных циклических сверток. Те 2-точечные свертки, которые расположены во второй и третьей строках ма- трицы, содержат повтор яющиеся вычисления, что позволяет переписать входящие в эти две строки вычисления в виде ~2 V4 ve v„ V~ v„ v„ V2 V3 4 v„ 6 V7 ve ! ',ы~ I Cd 6 ! ',Cd 1~,) 3 ! 6 6( ( Ы' '(0 1 1 ! 31 1 2 Cd ( ( Cd I бч 6( 1 3( В Cd -! ( Cd 3 l 11 5 C0 ( Cd 3 I Cd 2 Cd 4 Cd в С0 07 f Cd 1 Cd М2 4 Cd Э б(( (~д ~д ! 1 1 1 6 31 ( Сд Сд 1 4 2 (д (0 1 1 8 4( Cd Я 1 I 7 В! ~д ~0 ! 1 71 Cd 10 1 ) з! ~д ~д 1 1 2 111 Cd Сд 11 
4.6. Алгоритм Вииограда для быстрого преобразования Фурье Таким обрайом, подходящим способом выполненные перестановки и разбиения входных данных и матрицы преобразования позво- лили представить рассматриваемое преобразование Фурье в виде одной 6-точечной циклической свертки и двух 2-точечных цикли- ческих сверток. Можно было бы ожидать, что так организованное вычисление потребует 12 комплексных умножений. Однако, как показывает следующая теорема, происходят две вещи: 1. Все умножения являются чисто вещественными или чисто мнимыми, так что 12 комплексных умножений превращаются в 12 вещественных умножений. 2. Число необходимых умножений уменьшается до 10, так как два коэффициента оказываются равными нулю. На самом деле мы выпишем алгоритм с 11 умножениями. Одно умножение на единицу необходимо добавить для того, чтобы строку с номером нуль записать в алгоритме в таком же виде, как и остальные строки. 1) являются 1) равны Доказательство. Яоказательство первых двух утверждений теоремы аналогично доказательству теоремы 4.6.1 Так как поря- док числа л равен b, а Ь четно, то л~ = 1 и яь~~ = ‒ 1. Тогда коэффициенты многочлена g (х) (mod хь~2 ~ 1) равны g„= и" ~ аР + ~. Так как ль~г = ‒ 1, то отсюда сразу вытекают пер- „И-+-Ь(г> вые два утверждения теоремы. Яля доказательства утверждения (й!) рассмотрим многочлен Ь ‒ 1 g'(õ) = g (x) (mod хьн' ‒ 1) = g и"~х~ (mod хь~р ‒ 1). Коэффициент ао равен сумме тех коэффициентов многочлена g (х), индекс k которых кратен числу Ь/р. Таких членов имеется р штук и р ‒ 1 go= Z~ ° к=о Теорема 4.6.2. Пусть т > 1 целое, а р простое нечетное число. Пусть Ь = (р 1) р '. Пусть g (х) ‒ обобщенный мно- Ь ‒ 1 гочлен Рейдера, g (х) = g и""х", где и корень иэ единицы cme- й=О пени р и я целое число порядка Ь относительно умножения по модулю р. Тогда: (i) Коэффициенты многочлена g (х) (то4 хь~' вещественными числами, (й) Коэффициенты многочлена g (х) (mod хь~' + 1) являются мнимыми числами. (И) Коэффициенты многочлена g (х) (то4 хь~р нулю. 
164 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье В общем случае коэффициент g,' дается равенством р ‒ 1 С ЛГ+СЬIР 't 8=0 г = О, ..., (Ь/р) ‒ 1. Требуется доказать, что g' равен нулю для всех таких f. Пере- пишем выражение для g„в виде р ‒ 1 ~~ ~[ з~]я~в~~ р ‒ 1 з где в' является корнем степени р из единицы. Следовательно, gp = О, и доказательство теоремы закончено. П Таким образом, мы умеем строить БПФ-алгоритм Винограда малых длин, равных степени нечетного простого числа. Матрица преобразования Фурье размера р X p разбивается на (p р ‒ ')-точечную циклическую свертку и р ' + 1 (р 1)- точечных циклических сверток. Согласно теореме 4.6.2, все э1и свертки вычисляются с помощью алгоритма Винограда для цикли- ческих сверток, содержащего только чисто вещественные и чисто мнимые умножения. Ялина преобразования равна ствпени двойки. Преобразование Фурье, длина которого равна степени двойки, приходится рас- сматривать отдельно, так как целые числа, не превосходящие 2, взаимно простые с 2, не образуют относительно операции умноже- ния по модулю 2 циклической группы (за исключением случаев т = 1 и т = 2). Эго множество чисел образует группу, изоморф- ную группе z> Х z~ z. По этой причине конструкция БПФ- алгоритма Винограда длины 2 содержит на один шаг больше. Прежде всего, отберем 2 ‒ ' строк и столбцов матрицы с нечет- ными индексами, подобно тому как это было сделано в разд. 4.5. Это подмножество элементов матрицы будет переупорядочено теперь не в одну, а в четыре циклические свертки. Строки и столбцы с четными индексами можно представить в виде преобразования Фурье длины 2 ' несколькими способами. Эта часть вычислений представляет собой 2 ‒ '-точечное преобра- зование Фурье. Так как аР' опять является корнем степени р из единицы, то утверждение достаточно доказать только для r, равного нулю, p ‒ 1 „ю т. е. для дв = g и, где n = пв~р представляет собой элемент c=o порядка р. Последнее равенство можно переписать в виде 
4.6. Алгоритм Винограда для быстрого преобразования Фурье Разбиение в некотором смысле аналогично одному шагу алго- ритма Кули Тычки по основанию 2. Предположим, что мы уже умеем строить 2 ‒ '-точечное быстрое преобразование Фурье. л ‒ 1 Для заданного V~ = ~,' и'го;, k = О, ..., п ‒ 1, компоненты с=О с четными значениями индекса й можно записать в виде л/2 ‒ 1 2СУИ Р V2k ° = g (0~ +ор+„д) ь), k = О, ..., n/2 ‒ 1. с-=о Это 2 ‒ '-точечное преобразование Фурье может быть вычислено уже известным алгоритмом. Компоненты с нечетными значениями индекса Й можно записать в виде л/г-1 л/2 ‒ 1 2С' (2k'+1) (гс -+-ц (» -+-ц ~гг'-+~ = Е огг+ . + a огс+1ь> с =0 с =о Так как в' является корнем из единицы степени 2 г, то неболь- шие вычисления позволяют первую сумму переписать в виде преобразования Фурье длины 2 ‒ г. Таким образом, л/4 ‒ 1 гс' гс.. ъ 4i'k' Ггй'+I = Z (+ U2i' + огГ+л/4/ + + c"=0 л/г ‒ I + ,'), 'ог,+~и~" +'1~ +'~, Й =О, ..., а/2 ‒ 1, с =о где первая сумма подлежит вычислению только для первых и/4 зна- чений индекса Й', Й = О, ..., и/4 1, так как потом эти значения суммы повторяются. Если входная последовательность данных является вещественной, то эта часть вычислений состоит из (п/2) 6 вещественных умножений и (п/4)-точечного преобразо- вания фурье, а если входная последовательность данных является комплексной, то к (п/4)-точечному преобразованию Фурье добав- ляется (3/4) п 8 вещественных умножений. Вторая сумма в уравнениях для V» +1 может быть вычислена рассмотренным в предыдущем разделе обобщенным алгоритмом Рейдера. Он сводится к вычислению двух циклических сверток длины 2 ‒ г. Следующая теорема показывает, что если эти цикли- ческие свертки вычисляются на основании китайской теоремы об остатках, то часть умножений является умножением на нуль и может быть выброшена. Теорема 4.6.3. Пусть т ) 2 есть целое число и g (», у) обобщенный двумерный многочлен Рейдера вида Л' ‒ 1 1 с cI g(». у)= Z )~и ' ху, с=о с =о где в является корнем степени 2" иэ единицы. 7огда 
166 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье 1 ! 1 1 4 б Р ! СО' l Cu4' 1 б и4,„2 и Vo V3 V4 ~б t Cd (Up ‒ иб) + Ю (и3 ‒ иб) V) ~3 V5 ~7 U1 05 07 Вторую часть сначала выпишем в следующем виде. I 3 7 4И Cd Ю Cal Cd Cd Э I 5 Cd Cd Cd 7 5 5 7 3 Cd 40 Cd 5 7 С0 3 Cd 1 07 05 (i) Коэффициенты многочлена g (х, у) (mod у 1) являются вещественными числами. (й) Коэффициенты многочлена g (х, у) (mod у + 1) являются мнимыми числами. (ш) Коэффициенты многочлена g (х, у) (mod х"'~~ 1) равны нулю. Яоказательсжво аналогично доказательству теоремы 4.6.2. П Согласно первой части теоремы циклическая свертка по мо- дулю х"~4 1 представляет собой две вещественные циклические свертки (точнее, одну чисто мнимую и одну чисто вещественную). Вторая часть теоремы утверждает, что вычисление циклической свертки сводится только к вычислениям, связанным с модулем х"~8 + 1, так как остальные вычеты обращаются в нуль. В силу неприводимости многочлена х"~~ + 1 на эти вычисления требуется 2 (п/8) вещественных умножений. Теперь мы получили разбиение преобразования Фурье на следующие фрагменты: (1) 2 '-точечное преобразование Фурье; (2) 2 '-точечное преобразование Фурье, которому предшествует 2 ‒ ' 1 комплексных умножений; (3) два произведения многочле- нов по модулю неприводимого многочлена х"~8 + 1. 8-точечное преобразование Фурье разбивается на две части, 4-точечное преобразование Фурье 
Задачи 167 Теперь преобразуем эти равенства несколько иначе, чем в общем случае, а именно, воспользуемся условием в4 = ‒ 1 и перепишем уравнения в виде И1 ИЗ т Cd ! С0 I 4а1 7 Cd Тогда Циклическую свертку можно вычислить по правилу ‒ 1 О /яп6 Описанный 8-точечный БПФ-алгоритм Винограда содержит всего два нетривиальных умножения; кроме того, имеется шесть тривиальных умножений. Если длина преобразования равна большой степени двух, то выписывать все необходимые для вычисления по БПФ-алго- ритму Винограда уравнения становится скучно. Лучше предста- вить этот алгоритм в рекуррентном виде. Мы отложим такое пред- ставление до гл. 10. В равд. 10.4 будет описан эффективный БПФ- алгоритм по основанию два, построенный на идее Винограда, выписанной в рекуррентной форме. Задачи 4.й. Пусть задано устройство вычисления и-точечного комплексного преобра- зования Фурье; описать, как это устройство можно использовать для одновременного вычислення двух веществениых и-точечных преобразова- ний фурье. 4 2. Пусть задано устройство вычисления и-точечного преобразования Фурье; описать, как это устройство можно использовать для вычисления и-точеч- ного обратного преобразования фурье. 4 З. Приведите блок-схему устройства вычисления 5-точечного преобразования Фурье, осиованного на чирп-алгоритме Блюстейна. 4 4. а.,Яоказать, что 2 является примитивным элементом поля GF (1)). б. Используя алгоритм Рейдера, записать 11-точечное преобразов ание ю Фурье иад нолем комплексных чисел Уа = f и~~в~ в виде свертки с=о 
Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье !68 4.5. 4.6. 4.7. 4.8. 4.9. 4. 10. 4.11. 5 2 2 2 5 2 Испольэовать всюду, где можно, алгоритм Гуда ‒ Томаса; в других слу- чаях нспользовать алгоритм Кули ‒ Тычки. Найти число умножений, включая тривиальные (на 31, ~f). б. Найти число умножений без учета тривиальных умножений на ~1, ~(. в. Теперь предположим, что имеется подпрограмма вычисления 2-точеч- иого преобразования Фурье без иетривиальиых умножений и подпрограмма 5-точечного преобразования Фурье с пятью (нетривиальиыми) умноже- ииями. Повторить и. б) задачи. 4. 12. Иэ того, что возникающие в алгоритме Рейдера свертки вычисляются оптимальными алгоритмами, еще не вытекает оптимальность БПФ-алго- ритма Винограда. Это следует и из того, что коэффициеиты фильтра Рей- дера не произвольные числа, а степени элемента в, которые, вообще говоря, могут оказаться зависимыми, и эта эависимосчь может быть использована для уменьшення числа умножений. А именно, мы видели, что комплексные умножения сводятся к вещественным и иногда коэффициенты оказываются равиыми нулю. Доказать, что 5-точечный БПФ-алгоритм Винограда опти- мален по критерию числа умиожений. 16-точечный БПФ-алгоритм Винограда содержит 18 умножений, 8 из кото- рых тривиальны, и 74 сложения. 4.13. s(x) = g (x) d (х), выписывая многочлены d (х), s(x) и g (х) через компо- иенты векторов v u V и элемент а. Показать, что использование для вычисления линейиой свертки двух последовательностей длины n/2 алгоритма Кука ‒ Тоома с и точками р; = (e "} приводит к тому же самому алгоритму, что и исиольаоваиие преобразоваиия Фурье и теоремы о свертке. Указап две различные причины того, что сочетание алгоритма Рейдера для простых чисел с алгоритмом Винограда вычисления свертки приводит к лучшему БПФ-алгоритму, чем сочетание алгоритма Блюстейна с алго- ритмом Винограда вычисления свертки. Можете ли Вы указа1ь третью причину? Найти простые целые числа и и л', такие что n(n', íî и-точечный БПФ-алгоритм Винограда содержит больше умножеиий, чем n'-точечиый БПФ-алгоритм Винограда. Сколько умножений содержит 25-точечный БПФ-алгоритм Винограда, если все составляющие свертки оптимальны? Как это соотносится с про- цедурой, осиованной на алгоритме Кули ‒ Тычки, сочетающем два 5-то- чечных БПФ-алгоритма Винограда? Показать, что связывая вход с выходом, любой БПФ-алгоритм можно использовать для вычисления обратного преобразования Фурье. В алгоритме Гуда ‒ Томаса вход и выход переиндексируются по-разному. Показать, -ne можно поменять местами схемы индексации входа и выхода без принципиальных изменений алгоритма. ,Паны вычисляемые непосредственно 2-точечное и 5-точечное преобра- зования Фурье (с 4 и 25 умножеииями соответственно). а. Найти число умножений, необходимых для вычисления 100-точечного преобразоваиия Фурье по каждой из,нижеследующих схем: 
Замечания 169 а. Постронть 256-точечный БПФ-алгоритм, используя для построения 16-точечный БПФ-алгоритм Винограда и алгоричм Кули ‒ Тычки. б. Сколько умножений потребуется, если входные данные вещественны? в. Сколько умножений потребуется, если входные данные комплексны? Замечания В цифровой обработке сигналов алгоритмы быстрого преобразования Фурье начали широко использоваться в результате рабслы Кули и Тычки [1] (1965) и близкой к ней работы Синглтона [2] (1969). Однако другие алгоричмы БПФ, осцованиые на китайской теореме об остатках, появились в более ранних работах Гуда [3] (1960) и Томаса [4] (1963). Различия в этих работах были описаны рудом [5] (1971). Эффективная организацня алгоритма Кули ‒ Тьюкн была предложена Рейдером и Бреннером [6 ] (1976) и модифицирована Преусом [7 ] (1982). Рейдер [8] (1968) и Блюстейн [9] (1970) описали метод сведения преобра- зоваиия Фурье к свертке. Целью работы Рейдера было вычисление дискретного преобразования Фурье, длина которого равна большому простому числу; но, по иронии судьбы, этот метод оказался наиболее важным для длин, равных малым простым числам. Обобщение алгоритма Рейдера на случай длин, равных степени простого числа, было сделано Виноградом [11] (1978). БПФ-алгоритм Винограда был анонсирован в работе [10] в 1976 г. и с по- дробностями опубликован в 1978 r. Наше изложение не отражает всей значи- мости оригинальной работы; развитие ее результатов включено в другие темы. Яы затабулировали те БПФ-модули для малых длин, которые представляются нам наиболее полезными. БПФ-модули для больших длин были построены Джон- соном и Баррасом [12] (1981). Другие методы вычисления преобразования Фурье изучались Герцелем [13] (1968) и Сервейтом [14] (1978). 
Глава 5 ТЕОРИЯ ЧИСЕЛ И АЛГЕБРАИЧЕСКАЯ ТЕОРИЯ ПОЛЕЙ В предыдущей главе при построении БПФ-алгоритмов мы уже пользовались некоторыми результатами теории чисел, которые, однако, доказаны не были. В настоящей главе, представляющей собой математическую интерлюдию, доказываются все использо- ванные ранее результаты, а также результаты, которые понадо- бятся в дальнейшем. Мы также вернемся к рассмотрению полей, поскольку нам понадобится более глубокое развитие идеи расширения полей. Алгебраическая структура поля будет играть важную роль в сле- дующей главе при построении теоретико-числовых преобразова- ний, а также в гл. 7 и 8 при построении многомерных алгоритмов свертки и преобразования Фурье. 5.1. Элементарная теория чисел В кольце целых чисел 2q по модулю q некоторые элементы взаимно просты с О, а некоторые делят д. Нам важно знать, сколько именно элементов относится к каждому типу. Определение 5.1.1 (Эйлер). Функция Эйлера, обозначаемая q (q), для q ) 1 определяется как число ненулевых элементов в уч, взаимно простых с q; q (q) = 1 для q = 1. Если д = р простое, то все ненулевые элементы кольца 2q взаимно просты с q, так что ~р (р) = р ‒ 1. Если q равно степени простого числа, q = р™, то не взаимно простыми с q являются только те элементы, которые кратны р. Следовательно, д (р ) = = р ‒ ' (p 1). Все остальные значения функции Эйлера можно получить, используя следующую теорему. Теорема 5.1.2. Если HOli (q', q") = 1, mo ~р (ч'q") = q (q') Ч (q ). доказаогельство. Занумеруем элементы кольца Z~ g индек- сом ~ для ~ = p, ..., qq 1, а затем выпишем их в видедвумерной таблицы, нумеруя каждый элемент кольца 2 ~ парой индексов по правилу i' = i (mod q'), i" = i (mod q"), 
171 5.1. Элементарная теория чисел так что t' и t' являются соответственно элементами колец и zit-. Так как КОД (q', q") = 1, то отображение индекса i в пару индексов (~', i") является взаимно однозначным, и для некоторых Q' и Q" выполняются равенства i = q'Q' + i', i = q"Q" + i". Предположим, что ~' не имеет общих делителей с q', а ~" не имеет общих делителей с q". Тогда ~ не имеет общих делителей ни с q', ни с q", и, следовательно, общих делителей с q'q". Следовательно, ч И4') > ч (ч') ч (ч")- Обратно, если t не имеет общих делителей с q'q", то t не имеет общих делителей ни с q', ни с q". Следовательно, ~' не имеет общих делителей с q', а ~" не имеет общих делителей с q". Таким образом, рр (qq } ~( ср (q') ср (q ), и теорема доказана. ~3 Следствие 5.1.3. Если разложение числа q на простые множи- С С С 'щели дается равенством q = р1'р~' ... р;, mo С,‒ 1 С~ ‒ 1 Сг Ч (q) = Р1 Рв . ° . Рг (вое ‒ 1) (p2 ‒ 1) (p ‒ 1). С3 Часто оказывается полезным другое важное свойство функции Эйлера. Предположим, что d делит q и обозначим через f (q) не- которую функцию от q. Под символом ff (d) будем понимать <Ie сумму значений f (d) для всех d, делящих q. Очевидно, что так как (q/d) делит q всякий раз, когда d делит q. Более удивитель- ной является следующая теорема. Теорема 5.1.4. Функция Эйлера удовлетворяет равенству Яоказательство. Для каждого d, делящего q, рассмотрим в Кд множество {i ( НОД (i, q) = d). Каждый элемент кольца Zq принадлежит точно одному такому множеству. Следовательно, суммируя числа элементов во всех этих множествах, мы должны получить q. Теперь рассмотрим эквивалентное определение этого же мно- жеетве, ~'(НОд (, Е ) = I). Э о мможеет о ооаер 
172 Гл. 5. Теория чисел и алгебраическая теория полей точно ~р (q/d) элементов. Суммируя по всем подмножествам, по- лучаем ( Ч diq откуда вытекает утверждение теоремы. Q Элементы кольца z' относительно сложения образуют группу. Относительно умножения ненулевые элементы кольца z также могут образовывать группу, хотя и не обязательно. Однако в zq всегда можно указать подмножество, образующее относительно умножения в кольце группу, и, следовательно, являющееся под- группой группы ненулевых элементов кольца Z в том случае, когда ненулевые элементы также образуют подгруппу относи- тельно умножения. Пусть а произвольный элемент кольца zq. Порождаемая элементом а циклическая группа равна множеству 1а, а', а', ... ..., а ‒ ', 1 }. Порядком элемента а называется число элементов в ци- клической подгруппе, порождаемой элементом а. Пусть Gq обо- значает множество положительных целых чисел, меньших q и взаимно простых с д. Относительно умножения по модулю q множество G образует группу с ~р (q) элементами. Следующая теорема дает информацию о порядке элементов из группы Gq. Теорема 5.1.5 (теорема Эйлера). Если КОД (а, q) = 1, то а~<в> = 1 (mod q), так что порядок элемента а делит у (а). Доказательство. Утверждение вытекает из теоремы 2.1.5, так как группа Gq содержит ~р (q) элементов. ~) Следствие 5.1.6 (теорема Ферма). Если р простое, то для каждого а выполняется равенство а~ ' = 1 (mod р), или, экви- валентно, ар = а (mod р). Доказательство является тривиальным следствием теоремы Эйлера, так как iр (р) = р 1 для любого простого р. Q Теорема Ферма является также простым следствием следующей теоремы. Теорема 5.1.7. Если р просто, то относительно умножения по модулю р ненулевые элементы кольца zf(p) образуют цикличе- скую группу, порождаемую примитивным элементом л. Доказательство сразу вытекает из теоремы 5.6.2, которую мы оставляем на конец главы. Q Согласно теореме Эйлера, если а и д взаимно просты, то по- рядок элемента а делит ~р (q) но не обязательно равен ~р (q) Сле- дующая теорема дает более подробную информацию об этом для 
5.1. Элементарная теория чисел 173 случая д, равного степени простого числа. Это весьма сложная теорема теории чисел, и ее доказательство занимает всю остав- шуюся часть настоящего раздела. Оно опирается на еще не дока- занную теорему 5.1.7, что, однако, не создает порочного круга, так как в доказательстве теоремы 5.1.7 не используется тео- рема 5.1.8. Прежде чем переходить к этой теореме, приведем два примера. Пусть q = 9; тогда G~ = (1, 2, 4, 5, 7, 8}. Легко проверить, что порядок элемента 2 равен б, так что его можно использовать в ка- честве образующей циклической группы G,,.. Пусть q = 16. Тогда G, 11, 3, 5, 7, 9, 11, 13, 15}. Пере- бирая все элементы, можно убедиться, что наибольший порядок всех элементов равен 4. (Таким элементом порядка 4 является элемент 3.) Следовательно, группа б„не является циклической. Так как в следующей теореме д равно степени простого числа р,д=р'", то ~р(р )=р р ‒ '=р ‒ '(р 1). Теорема 5.1.8. Пусть число р простое; тогда.' (i) Если р нечетно, то группа Gpm является ииклической и изоморфной группе Z m 1 <,>. (ii) Если р = 2 и р™ )~ 8, то группа G не является цикли- ческой и изоморфна группе Zq X Z p. (ш) Если р = 4, mo группа G изоморфна группе z,. % Доказательство. Утверждение п. (ш) теоремы тривиально, так как существует только одна группа с двумя элементами. Дока- зательство остальных утверждений теоремы разбивается на пять шагов. Шаг 1 и шаг 2 содержат доказательство и. (i). Ha шаге 1 доказывается, что для нечетного р найдется элемент порядка р ‒ ', на шаге 2 доказывается, что для нечетного р найдется элемент порядка р 1. Так как pm ‒ ' и (p 1) взаимно просты, то произ- ведение этих двух элементов является элементом порядка р ' (р 1), что и доказывает п. (i) теоремы. Доказательство и. (ii) теоремы дается шагами 3 и 4. На шаге 3 доказывается, что если р = 2, то порядок каждого элемента делит 2"' ‒ ~. Ha шаге 4 доказывается, что найдется элемент по- рядка 2 ‒ ~. Начнем с доказательства на шаге О одного полезного соот- ношения. Шаг О. Для всех целых чисел а и Ь и произвольной степени р простого числа р выполняется сравнение (а+ Ьр)Р = а~ (modp ). Доказательство этого шага проведем индукцией по т. Для т = 1 угверждение проверяется непосредственной проверкой. 
174 Гл. 5. Теория чисел и алгебраическая теория полей Предположим, что для некоторого m справедливо (а+ Ьр): ‒ а (modр ). Тогда для некоторого целого k (а+ ьр)~ = а~ +/гр Возведем это выражение в р-ю степень: а bp = а~ kp P (a+ Ьр)Р = аР + pkp à'P "Р ' + $ (~) k р' а~р (=г Второй член справа, так же как и все члены суммы, делится на р'"+', следовательно, (а+ Ьр)Р = аР (mod р +'), так что утверждение справедливо при переходе от m к m + 1, что и завершает индукцию. Шаг 1. Положим в утверждении шага О числа а и Ь равными 1. Тогда Непосредственно проверяется справедливость утверждения для m = 2. Предположим, что оно выполняется для некоторого m. Тогда для некоторого k выполняется равенство (1+p) =1+p '+kp". Следовательно, p ‒ 1 (1+ )'" =1+ р(р -'+kp")+~~ (',.) (р--'+kp )'+ (=2 +(p '+kp )'. Р Р P Если Р нечетно, то каждое из чисел,, ..., де- 2 ' 3 '"' р 1 лится на р. Каждый член в сумме делится по меньшей мере на р2( ‒ 1}+1, и, следовательно, делится на р+' при m))~ 2. По- (1+ р)~: ‒ 1 (modp ), так что порядок элемента (1+ р) делит р ‒ '. Покажемтеперь, что при нечетном р порядок этого элемента в точности равен р ‒ ', для чего докажем, что этот порядок не делит числа р ‒ 2. А именно, для завершения доказательства шага! докажем, что если m + 1, то (1+р)Р: ‒ 1+p ' (modр ). 
175 5.1. Элементарная теория чисел следний член в правой части равенства делится на р~' ", и, следовательно, при р )~ 3 и и ) 2 делится на р~+'. (Заметим, что доказательство не проходит при р = 2.} Следовательно, по- рядок элемента (1 + р} (mod р} не делит р ‒ ~. Это завершает до- казательство того, что порядок элемента (1 + р) равен p ‒ '. lllaa 2. Так как группа 6 содержит р ‒ ' (р 1) элементов, то порядок каждого ее элемента делит р ‒ ' (р 1). Чтобы найти элемент группы порядка (р 1) (mod р}, выберем и равным примитивному элементу кольца z/(р). Тогда порядок и равен (p 1) (mod р). Покажем, что a = п~ ' представляет собой искомый элемент порядка (р 1} (mod р}. Так как пР = 1, то порядок элемента и должен делить р 1; поэтому надо только показать, что порядок элемента а не меньше, чем р 1. Так как п примитивен в кольце z/(р), то р ‒ 1 степеней и' для с = О, ..., р 2, могут быть записаны в виде целых чисел n' = а; + Ь;р, где а; пробегает все различные ненулевые целые чиыа, не превосходящие р 1. Следовательно, используя шаг О, имеем (л')~ = (а~+ Ь(p)Р = af (той р ), клк ~Ь~ (modp ), то отсюда следует, что порядок элемента и больше, чем р 2. т ‒ 1 Но ар = а для любого элемента кольца Z/(р), так что аР = а (mod р). Счедовательно, если а~ = Ь (modр ), то, конечно, аР = bP (mod p), и, таким образом, а = Ь (modр), что противоречит предположению о том, что а и Ь различные не превосходящие р 1 целые числа. Следовательно, порядок эле- мента а равен р 1 и п. (i) теоремы доказан. Шаг 8. Порядок каждого элемента группы 6~ делит 2 ‒ ~. Чтобы доказать это, сначала докажем, что для любых целых а и Ь выполняется сравнение (а+ 4Ь)' а (mod 2 ). а =ар (то~1р ), где а~ пробегает все различные ненулевые целые числа, не превос- ходящие р 1. Следовательно, если мы докажем, что для любых двух целых чисел а и Ь, не превосходящих р 1, выполняется соотношение 
176 Гл. 5. Теория чисел и алгебраическая теория полей Поскольку элементами группы 6~ являются только нечетные числа, то, полагая а = -~» 1 и варьируя Ь, сразу получаем из этого сравнения нужное утверждение. Сравнение доказывается индукцией. Для т = 2 оно прове- ряется непосредственно. Предположим, что оно справедливо для некоторого положительного целого m. Тогда для некоторого целого Й (а+ 4Ь) = а~ +k2 и, следовательно, Ъ (a+4b)~ =(а +k2 ) =а +ka 2 + +k2 Таким образом, (а+ 4Ь) = а (mod2 +'). Шаг 4. Нам осталось найти элемент порядка 2 -~ при m >~ 3. ~ ‒ з Покажем, что 3 фи 1 (mod 2), так что 3 должно быть эле- ментом порядка 2 ‒ ~. При m = 3 это утверждение проверяется непосредственно. Доказательство утверждения при m )~ 4 со- состоит в доказательстве сравнения (1+2) =‒ 1+2 ' (mod2 ). Это сравнение просто проверяется для т = 4. Предположим, что оно справедливо для некоторого m ~ 4. Тогда для некоторого А (1+2) = 1+2 '+k2 . Следовательно, (1-+2)~ ' =(1+-2--' -)-а-)' = =1+2 +2" "+12 +'+k2 +k2 и, таким образом, так как т больше трех, (1+ 2)2‒ : 1+ 2 (mod 2 + ). Следовательно, при всех m + 3 выполняется сравнение (1+2) = 1+2 ' (mod 2 ). Таким образом, порядок 3 (mod 2) не делит 2 ‒ з, н, следова- тельно, он равен 2 ‒ ~, что и завершает доказательство.~ 5.2.,Конечные поля, основанные на кольце целых чисел Имеется очень важная конструкция, позволяющая по задан- ному кольцу построить новое кольцо, называемое его фактор- кольцом. В случае произвольного кольца построение его фактор- 
5.2. Конечиые поля, основанные на кольце целых чисел 177 кольца опирается на смежные классы. В случае кольца целых чисел факторкольцо строится просто: оно представляет собой кольцо целых чисел по модулю д, с которым мы уже встречались ранее, и обозначается через Z/(q) (или, более кратко, уч}; в этом случае его называют кольцом вычетов. Пусть д положительное целое число. Кольцом вычетов z/(q) называется множество «О, 1, ..., q 1} с операциями сложения и умножения, определяемыми равенствами а + b = = Rq [а+ Ь], а Ь = Rq [аЬ]. Элементы, обозначенные через [О, 1, ..., q 1{, принадлежат как Z, так и Z/(q). Элементы кольца Z/(q) названы так же, как и первые д элементов кольца Z. Яело вкуса, подразумевать ли под ними те же самые математические объекты или некоторые другие объекты с теми же именами. Два элемента а и Ь кольца Z, отображаемые в один и тот же элемент кольца Z/(q), называются сравнимыми по модулю q, и а = Ь+ тд для некоторого целого т. Теорема 5.2.1. Кольцо вычетов Z/(q) является кольцом. Доказательство. Непосредственная проверка выполнения свойств кольца. Q Теорема 5.2.2. Ненулевой элемент s rconsqa Z/(q) обратим относительно умножения тогда и только тогда, когда s и у взаимно просты. Доказательство. Пусть s ‒ такой ненулевой элемент кольца, что s и д взаимно просты. Тогда согласно следствию 2.6.4 най- дутся целые числа а и Ь, такие, что 1 = aq+ bs. По модулю д соответственно имеем 1 = R~ [1] = R~ [aq+ bs] = R, {R, [aq]+ R~ [bs]} = = Rä[bs] = Яц(Яд[Ь] Яд[в]} = Яч {R~[b].s]. Следовательно, относительно умножения по модулю д мультипли- кативный обратный к s равен Rq[b]. Пусть теперь s такой элемент кольца, что s и д не взаимно просты. Сначала рассмотрим случай, когда s делит д: д = s-r. Пусть у элемента s есть обратный s '. Тогда r = Pq [r] = Rq fs '-я г] = Pq [s '-д] = О. Но r + О (mod q), так что получаем противоречие. Таким образом, если s является делителем д, то он не имеет обратного. Теперь рассмотрим случай, когда s и д не взаимно просты, но s не делит q. Пусть d = HOg [s, q]. Тогда s = ds' для неко- торого s, взаимно простого с д, и делителя d числа д. Если эле- мент sобратим, ,то и элемент dтакже обратим. :d ' = s 'я', что 
178 Гл. 5. Теория чисел и алгебраическая теория полей противоречит только что доказанному утверждению. Следова- тельно, s не может быть обратимым, и теорема доказана.П Поскольку обращение в кольце Z/(q) возможно не всегда, то в общем случае ненулевые элементы кольца Z/(q) группы по умножению не образуют. Однако в z/(q) можно найти подмно- жества, образующие подгруппы. Выберем в кольце Z/(q) ненуле. вой элемент р и сформируем подмножество (P, P', ..., P' = 1}, остановив процесс, как только получим единичный элемент. Мы уже видели, что единичный элемент всегда достижим и что конструкция приводит к циклической группе. Она является под группой кольца Z/(q), и целое число r называется порядком эле мента р в ~/(q). Мы уже видели в примерах равд. 2.3, что арифметика полей GF (2) и GF (3) может быть задана как сложение и умножение по модулю 2 и 3 соответственно, но арифметика поля GF (4) так описана уже быть не может. В символической записи GF (2) = = Z/(2), GF (3) = Z/(3), GF (4) ~ь Z/(4). Общий результат опи- сывается следующей теоремой. 1 Теорема 5.2.3. Кольцо вычетов Z/(q) является полем тогда и только тогда, когда д равно простому числу. Доказательство. Предположим, что д просто. Тогда каждый элемент кольца у/(q) взаимно прост с д и, следовательно (по теореме 5.2.2), обратим относительно умножения. Предположим теперь, что д составное число. Тогда д = r.s и согласно теореме 5.2.2, r u s не могут иметь обратных элемен- тов. Ц Если кольцо вычетов Z/(q) является полем, то чтобы подчерк- нуть этот факт, оно обозначается через GF (q). Конечные поля, построенные как кольца вычетов целых чисел, не исчерпывают всего множества полей, но конечные поля с простым числом эле- ментов всегда могут быть построены как кольца вычетов. Если поле GF (о) не содержит квадратного корня из 1, то его можно расширить до GF (р') точно таким же способом, как поле вещественных чисел расширяется до поля комплексных чи- сел. Например, в поле GF (7) выполняется равенство 6 = 1, но, как легко проверить, поле не содержит элемента, квадрат которого равен 6. Следовательно, поле GF (49) можно задать множеством элементов вида GF(49) = (a+jb:а, Ь6GF (7)}, определив на нем операции сложения и умножения так же, как для комплексных чисел: (a + jb) + (с + jd) = (a + с) + j (Ь + d), (а + jb) (с+ jd) = (ac bd) + j (ab + cd), 
5.2. Конечные поля, основанные на кольце целых чисел 179 где во всех скобках справа операции обозначают сложение и ум- ножение в поле GF (7). При таком определении множество GF (49) является полем. Целыми поля GF (49) являются элементы поля GF (7), так что характеристика поля GF (49) равна 7. Теорема 5.2.4. Каждое поле содержит однозначно определяе- мое наименьшее подполе, которое либо изоморфно полю рациональ ных чисел, либо содержит конечное число элементов. Следовательно, характеристика каждого поля Галуа либо бесконечна, либо равна простому числу. Доказательство. Каждое поле содержит 0 и 1. Для построения подполя рассмотрим подмножество 6 = 10, 1, 1 + 1, 1 + 1 + + 1, ...}, обозначая его элементы соответственно «О, 1, 2, 3, ...}. Это подмножество содержит либо бесконечное множество эле- ментов, либо конечное множество, скажем р. Мы покажем, что если это число конечно, то оно просто и 6 = GF (р). Так как 6 является циклической группой, то сложением в нем служит сло- жение по модулю р. В силу наличия в поле дистрибутивного за- кона умножение в 6 также является умножением по модулю р, так как а . P = (1 + 1 + ... + 1) P = P + P + ... + P В поле Галуа GF (q) всегда можно найти простое подполе GF (р). В частности, если то q, с которого мы начинаем, само яв- ляется простым числом, то это простое подполе можно интерпре- тировать как поле вычетов целых чисел по модулю д. Следова- тельно, на самом деле имеется только одно поле с заданным числом элементов, которое, конечно, допускает много различных пред- ставленийй. где сумма содержит а копий элемента р и сложение выполняется как сложение по модулю р. Следовательно, умножение также яв ляется умножением по модулю р. Относительно умножения каж- дый ненулевой элемент р имеет обратный, так как последователь ность р, 2р, Зр, ... образует в 6 циклическую подгруппу. Поскольку а.P + 0 для любых ненулевых а и р из исходного поля, то ар + 0 по модулю р для всех целых поля, и, следова тельно, р должно быть простым. Таким образом, подмножество 6 образует в точности простое поле, описываемое теоремой 5.2.3. Альтернативным является случай, когда множество 6 беско- нечно. В этом случае оно изоморфно кольцу целых чисел. Наимень шее содержащее 6 подполе F изоморфно наименьшему полю, содержащему кольцо целых чисел, каковым является поле рацио- нальных чисел. Q 
180 Гл. 5. Теория чисел и алгебраическая теория полей 5.3. Иоля, основанные на кольцах многочленов Поля можно строить, отталкиваясь от колец многочленов, та- ким же образом, как были построены конечные поля из кольца целых чисел. Такая конструкция приводит как к конечным, так и к бесконечным полям в зависимости от того, было ли исходное кольцо многочленов определено над конечным или бесконечным полем. Эти расширения оказались полезными в нескольких ,направлениях дискретной обработки сигналов. Они были ис- пользованы для построения теоретико-числовых преобразований, рассматриваемых в гл. б, и для построения алгоритмов много- мерной свертки, рассматриваемых в гл. 7. Пусть имеется кольцо многочленов F fx J над полем F. Так же как для кольца Z б~~ы~л~и H п~оOс~тTр~о~енH~ы ~ кKоoл~ь~ц~а ~ вB~ы~ч~еeтTоOвB, можно по- строить и для кольца F hl его факторкольцо. Выбирая из F [х] произвольный многочлен р (х), можно определить такое кольцо, используя р (х) в качестве модуля для задания арифметики этого кольца. Мы ограничим рассмотрение только приведенными много- членами, так как это ограничение снимает ненужную неопреде- ленность построения. Определение 5.3.1. Для произвольного приведенного много- члена р (х) ненулевой степени над полем F кольцом многочленов по модулю р (х} называется множество всех многочленов над F, степень которых не превосходит степени многочлена р (х}, с опе- рациями сложения и умножения многочленов по модулю р (х). Это кольцо принято обозначать через F [х]/(р (х)). Произвольный многочлен r (х) из F [х] можно отобразить в F [х]/(р (х)), отображая r (х) в Я~<„> [г (х) ]. Два сравнимых по модулю р (х) элемента а (х) и Ь (х) из F (х} отображаются в один и тот же многочлен из F [х]/(р (х}}. Теорема 5.3.2. Кольцо многочленов по модулю р (х) является кольцом. ,[[оказательство. Доказательство проводится прямой провер- кой выполнения свойств кольца. В качестве примера рассмотрим кольцо многочленов над GF (2}, выбирая модуль равным р (х} = xÐ + 1. Тогда кольцо многочленов по модулю р (х} равно GF (2) [x]/(õ' + 1}. Оно состоит из эле- ментов 10, 1, х, х + 1, х', х~ + 1, х' + х, х' + х + 1, j и умно- жение в этом кольце выполняется, например, следующим образом. (х'+ 1) . (х') = R»ç+, [(х'+ 1) х'] = R»â+i [х(х' + 1) + х'+ х] = = х~4-х, где использована редукция по правилу х4 = х (х~ + 1} + х. 
5.3. Поля, основанные на кольцах многочленов 181 В качестве другого примера рассмотрим кольцо многочленов над полем рациональных чисел»,>, выбирая р (х = х'+ 1. Тогда кольцо многочленов по модулю р (х} есть Q х]/(х'+ 1) Оно содержит многочлены вида а + хЬ, где а и b рациональные числа. Умножение выполняется по правилу (а + хЬ) (с + xd) = (ас bd) + х (ad + Ьс). Умножение имеет ту же структуру, что и комплексное умножение; на самом деле рассматриваемое кольцо является полем. Это вы- текает из следующей общей теоремы. Теорема 5.3.3. Кольцо многочленов по модулю приведенного многочлена р (х) является полем тогда и только тогда, когда много- @лен р (х} r>poem '}. ~) Напомним что простой многочлен является одновременно приведенным и неприводимым. Для построения поля достаточно только неприводимости р (z), ио мы условились рассматривать только приведенные многочлены, так что даль- нейшие результаты носят менее общий характер. Доказательство. Пусть многочлен р (х} прост. Чтобы доказать, что рассматриваемое кольцо образует поле, достаточно показать, что каждый ненулевой элемент имеет мультипликативный обрат- ный. Пусть s (х} некоторый ненулевой элемент кольца. Тогда deg s (х) ( deg р (х). Так как многочлен р (х} прост, то НОД fs (х}, р (х}] = 1. Согласно следствию 2.7.7, 1 = а (х) р (х) + Ь (х) s (х) для некоторых многочленов а (х) и Ь (х). Следовательно, 1 = Rp <„> [1] = Rp <„> [а (х) р (х) + Ь (х) s (х)] = Rp <„.> [b (x)]- Rp <,,> [s (x)] = R <„> [Ь (x)] s (x). Таким образом, в кольце многочленов по модулю многочлена р (х) многочлен R <„> [Ь (х)] является мультипликативным об. ратным к s (х). Теперь предположим, что многочлен р (х не прост. Тогда р (х} = r (х} s (х} для некоторых r (х) и s (х}. Если кольцо явля- ется полем, то многочлен r (х) имеет обратный г' (х}, и поэтому s (x) = Rp (~> [s (x)] = Я>~ ~~> [г ' (х).r (X) 's (X)] = R <„> [г '(х).р(х)] = О. Но s (х) + О, и мы получаем противоречие. Следовательно, такое кольцо не может быть полем. [] Теорема описывает один из способов построения поля комплекс ных чисел С как расширения поля вещественных чисел р. Так как многочлен х' + 1 является простым над полем вещественных 
182 Гл. 5. Теория чисел и алгебраическая теория полей чисел, то р можно расширить до множества 1а + Ьх}, где а и Ь вещественны, задавая сложение и умножение по модулю х'+ 1. Тогда (а + Ьх) (с + dx) = (ас bd) + (ad + Ьс) х, (а + Ьх) + (с + dx) = (а + с) + (Ь + d) х. Эти формулы будут более привычны, если вместо х поставить 1: (а + !Ь) + (с + jd} = (а + с) + i (Ь + d}, (а+ jb) (с+ jd) = (ac bd) + 1(ad + Ьс). Эта же самая конструкция может быть использована для расшире ния любого поля, над которым многочлен х' + 1 простой. Таким полем является, например, GF (7}, и его можно расширить до поля GF (49) точно так же, как поле вещественных чисел до поля комплексных чисел, что и было формально проделано перед до- казательством последней теоремы. С другой стороны, многочлен х' + 1 не является простым мно гочленом над полем GF (5} и не может быть использован для его расширения. Чтобы построить расширение GF (25) поля GF (5), надо воспользоваться многочленом х' + х + 1, который является простым над GF (5). При этом модуле правило умножения прио- бретает вид (а+ хЬ) (с+ xd) = (ас bd) + x (ad+ Ьс bd). Умножение в этом поле отлично от умножения в комплексном поле. Умножение'всегда будет задаваться этим правилом, если поле GF(p'} получается как расширение поля GF (p) с помощью многочлена х' + х + 1, и такое расширение всегда возможно, если х' + х + 1 является простым над GF (p). В частности, этот многочлен можно использовать при расширении GF (2) до GF (4). 5.4. Минимальные многочлены и сопряжения Элемент некоторого поля может быть корнем многочлена, ко- эффициенты которого принадлежат некоторому меньшему полю. Если элемент является корнем хотя бы одного такого многочлена, то с ним оказывается связанным один специальный многочлен, представляющий особый интерес. Определение 5.4.1. Пусть F некоторое поле, а элемент принадлежит некоторому расширению поля F. Минимальным мноаочленом f (х) элемента р над полем F называется ненулевой приведенный многочлен наименьшей степени, такой что коэффи- циенты его принадлежат основному полю F, а элемент р является корнем. 
5.4. Минимальные многочлены и сопряжения 183 Минимальный многочлен над полем F существует не для вся- кого элемента расширения элементы вещественного поля, не имеющие минимальных многочленов с рациональными коэффи- циентами, называются траясцендентными числами но если для данного элемента минимальный многочлен существует, то он единственен. Действительно, если f«> (х) и f<'> (х) оба являются минимальными многочленами элемента р, то они оба приведенные, имеют одну и ту же степень и р является их корнем. Тогда мно- гочлен f (х) = f<'> (х) f<'> (х) имеет меньшую степень и р яв- ляется его корнем. Следовательно, f (х) = 0 и /«> (х) равен f<'> (х). Теорема 5.4.2. Каждый минимамный многочлен является единственным и простым. Если f (х) минимальный многочлен влемента р, а g (х) некоторый многочлен, для которого р яв- ляется корнем, то f (х) делит g (х). Доказательство. Единственность минимального многочлена мы уже доказали. По определению многочлен f (х) является при- веденным. Предположим, что f (х) разлагается в произведение двух многочленов, f (х) = а (х) Ь (х). Тогда f (P) = а y) Ь y) = О, так что хотя бы один из многочленов а (х) и Ь (х) имеет степень, мень- шую чем степень f (х), и элемент р служит его корнем. Следова- тельно, минимальный многочлен является простым. Для доказательства второй части теоремы запишем g (х) = f (х) h (х) + s (х). Степень многочлена s (х) меньше степени f (х), так что s (х) не может иметь элемент р своим корнем. Но 0 = g (р) = f (р) и (р) + в (р) = в (р) так что многочлен s (х) равен нулю, и теорема доказана. ~) Каждый элемент р поля F имеет над F минимальный много- член первой степени, равный f (х) = х ‒ P. Если элемент не принадлежит полю F, то степень его минимального многочлена равна двум или больше. Следовательно, минимальный многочлен может иметь и другие корни. Но тогда минимальный многочлен элемента р является минимальным многочленом и для других, отличных от р, элементов. Определение 5.4.3. Два элемента некоторого расширения поля F, имеющие общий минимальный многочлен над F, называются сопряженными (относительно F). В общем случае один элемент может иметь более одного сопря- женного элемента, на самом деле столько, какова степень его ми- нимального многочлена. Подчеркнем, что отношение сопряжен- 
184 Гл. 5. Теория чисел и алгебраическая теория полей ности двух элементов зависит от основного поля. Два элемента комплексного поля могут быть сопряженными относительно поля рациональных чисел, но не быть сопряженными относительно поля вещественных чисел. Например, минимальный многочлен над (;) комплексного числа j~2 равен х' 2, а над R равен х' + у~2. ! Множество сопряженных с / ф 2 элементов, содержащее этот элемент, относительно поля Q равно (1~2, ~2, j ф% j~2I а относительно поля р равно (д/ 2, /1~ 2). 5.5. 3(руговые многочлены Над произвольным полем F можно выписать разложение мно- гочлена х" 1 в произведение его простых делителей: х" 1 = р,(х) р,(х) ...рк(х). Если F поле рациональных чисел, то простые делители нахо- дятся сравнительно легко. Они представляют собой многочлены, которые дак~гся следующим определением. Определение 5.5.1. Над произвольным полем F для каждого и круговой многочлен определяется равенством Q„(x) = П (х ‒ и'„), нодо. щ=з где и„равно корню ') степени и иэ единицы в некотором расши- рении поля F. Главным образом нас будут интересовать круговые многочлены над полем рациональных чисел Q В этом случае и„= е-~~"~" принадлежит полю комплексных чисел, а для п(105 коэффи- циентами круговых многочленов являются 1, О или +1. В достаточно большом расширении поля F для поля рацио- нальных чисел таковым является комплексное поле многочлен х" 1 может быть разложен в виде л ‒ 1 х ‒ 1= П (х и„'), 8=Ф где а„корень степени и из единицы. Следовательно, каждый круговой многочлен можно выразить в виде произведения неко- торых из этих линейных множителей. Определение кругового многочлена специально построено так, чтобы все его коэффици- енты были рациональными. 1) Имеется в виду, конечно, первообразный корень степени и из единицы.‒ Прим перев. 
5.5. Круговые многочлены 185 При малых и круговые многочлены можно легко вычислить, разлагая многочлен х" 1. Очевидно, что Q> (х) = х 1. Лля выяснения общей ситуации найдем несколько начальных много- членов. Пусть n = 2. Тогда х' 1=(х 1)(х+1) =Q,(x)Q,(х). Пусть и = 3. Тогда х' 1 = (х Пусть и = 4. Тогда х' 1 = (х 1) (х' + х + 1) = Q, (х) Q, (х). 1) (х + 1} (х' + 1) = Q, (х) Q, (х) Q, (х). Отметим, что на каждом шаге появляется только один новый множитель. Пусть n = 5. Тогда х' 1 = (х 1) (х' + xÐ + х' + х + 1) = Q, (х) Q, (х). Пусть n = 6. Тогда х' 1 =(х 1)(х+ 1)(х'+х+ 1)(х' х+ 1) = = Qi (х) Q. (х) Q. (х) q, (х). Пусть n = 7. Тогда х' 1 = (х 1) (х' + х' + х' + x' + õ' + х + 1) = =Q, (х) Q, (х). Пусть и = 8. Тогда хг 1 = (х 1) (х + 1) (х'+ 1) (х4+ 1) = (Х) Qà (Х) (~4 (Х) Qg (Х) Пусть n = 9. Тогда х' 1 = (х 1) (х' + х + 1) (х' + xÐ + 1) = = q, (х) Q, (х) q, (х). Общий случай описывается следующей теоремой. Теорема 5.5.2. Для каждого и дед qÄ (x) = q> (и), где q> (n) функция Эйлера. Теорема 5.5.3. Яля каждого п х" ‒ 1 = П Q„(x). A)n Доказапмластво. q> (и) определяется как число целых чисел, меньших и и взаимно простых с и, и это в точности совпадает с числом линейных множителей, входящих в определение Q- (х}. П 
186 Гл. 5. Теория чисел и алгебраическая теория полей Доказательство. Непосредственные вычисления дают: х" ‒ 1 = Г1(х ‒ и.'} = П П (x ‒ и„') = 2=1 цл Код (с, л)=л/й = 11 Я„(х). Цл Теорема 5.5.4. Над произеольным полем коэффициенты кру гового многочлена всегда являются целыми этого поля. Доказательство. Воспользуемся индукцией по п. Коэффици- енты многочлена Q, (х) = х 1 являются целыми. Согласно теореме 5.5.3, Деление приведенного многочлена с целыми коэффициентами на приведенный многочлен с целыми коэффициентами дает в виде частного приведенный многочлен с целыми коэффициентами. Следовательно, утверждение теоремы верно для любого и, если оно верно для всех меньших положительных целых и. Р Теорема 5.5.5. Над полем рациональных чисел все круговые многочлены являются простыми и, следовательно, минимальными многочленами для соответствующих корней из единицы. Доказательство. Приведенность круговых многочленов оче видна. Яоказать надо только неприводимость круговых многочле- нов над полем рациональных чисел. Пусть f (х) обозначает мини- мальный многочлен элемента co„над полем рациональных чисел. Пусть hпроизвольное целое число, ,взаимно простое с и, и пусть g (х) минимальный многочлен элемента и„над полем рациональных чисел. Предположим, что g (х) = f (х) для каж- дого такого h. Тогда многочлен f (х) должен быть кратным много- члену Q„(x), и так как Q„(x) приведен и имеет рациональные коэффициенты, f (х) = Q„(x). Тогда наша задача сводится к до- казательству того, что для каждого взаимно простого с и числа h минимальный многочлен g (х) элемента и„равен многочлену f (х). Й7аг 1. Л;окажем сначала это утверждение для случая, когда h равно простому числу р, не являющемуся делителем и. Пусть g (x) минимальный многочлен элемента и и предположим, что он не равен многочлену f (х). Тогда х" 1= f(х)g(х) t(х), для некоторого многочлена t (х), коэффициенты которого целые числа, так как оба многочлена f (х) и g (х) являются делителями 
5.6. Примитивные элементы 187 многочлена х" 1 и имеют целые коэффициенты. Так как эле- мент и„является корнем многочлена д (х~), то многочлен g (х«') кратен многочлену f (х): g (хр) = f (х) k (х) для некоторого многочлена k (х) с целыми коэффициентами. 3а- меним теперь оба равенства вычетами по модулю р. х" 1 = f (x) g (x) t (x) (mod р), g (х«') = f (х) /г (х) (mod р). Согласно теореме 2.2.4, второе равенство записывается в виде (g (х))р = f (х) Й (х) (m««d р). Рассмотрим разложение этого уравнения над полем GF (р). Каж- дый простой делитель р (х) многочлена f (х) должен быть простым делителем многочлена (g (x))>, и, следовательно, многочлена g (х). Следовательно, (х" 1) должен делиться на (р (х))'. Но тогда формальная производная nx ' от многочлена (х" 1) делится над GF (р) на р (х). По предположению р не делит и, à х не может быть делителем f (x)(mod р), так как f (х) делит х" 1. Полу- ченное противоречие показывает, что g (х) не может быть не рав- «ь«м f (х). Шаг 2. Теперь докажем утверждение для произвольного h, взаимно простого с и. Запишем разложение h на простые множи- тели: h Р1Р2 ' p$ ,° Каждый из'этих множителей взаимно прост с и, так как h взаимно просто с и. Согласно утверждению шага 1, если в„корень многочлена f (х), то и~' также является корнем этого многочлена. Теперь опять воспользуемся шагом 1: если в„' корень много- члена f (x), то и и~'~' является корнем этого многочлена. Исполь- зуя индукцию, получаем, что и и является корнем f (х).~ h 5.6. Примитивные элементы Согласно данному в разд. 2.3 определению, примитивным эле- ментом поля Галуа называется такой элемент а, что каждый не- нулевой элемент поля можно однозначно записать в виде степени этого элемента. Например, в поле GF (7) выполняются равенства 3'=3,3 =2,3 =6,34 =4,3'=5,3'= 1,такчтоЗявляется примитивным элементом поля GF (7). Примитивные элементы полезны при построении полей, так как, коль скоро один из них найден, то, перемножая степени этого примитивного элемента, можно построить таблицу умножения в этом аоле. В полях Галуа 
188 Гл. 5 Теория чисел и алгебраическая теория полей примитивные элементы играют роль основания логарифмов. В данном разделе будет доказано, что каждое конечное поле со- держит примитивный элемент. Конечное поле образует абелеву группу двояким способом. Множество всех элементов поля образует абелеву группу по сло- жению, и множество всех элементов поля, исключая нуль, обра- зует абелеву группу по умножению. Мы будем работать с группой по умножению. Согласно теореме 2.1.5, порядок этой группы де- лится на порядок каждого ее элемента. Теорема 5.6.1. Пусть P„P„..., Pq, ненулевые элементы поля GF (q); тогда: Доказательство. Множество ненулевых элементов поля GF (q) образует конечную группу по умножению. Пусть р какой- либо элемент из GF (q), и пусть h мультипликативный порядок этого элемента. Тогда, согласно теореме 2.1.5, h делит д ‒ 1. Следовательно, ~q ‒ t (PR)(q ‒ I)/R 1(q ‒ ()/h 1 так что р является корнем многочлена х~ ‒ ' Теорема 5.6.2. Группа ненулевых элементов поля GF (q) no умножению является циклической. Доказательство. Если число q 1 простое, то теорема триви- альна, ибо порядок всех элементов, за исключением нуля и еди- ницы, равен д 1, так что каждый такой элемент примитивен. Доказывать теорему надо только для составного числа Ч 1. Рассмотрим разложение числа д 1 на и ростые множители. Так как GF (q) поле, то среди его q 1 ненулевых элементов должен найтись хотя бы один, не являющийся корнем многочлена (Р ‒ 1)/Р- '/Р ‒ 1, поскольку этот многочлен может иметь не более (q 1)/р; корней. Следовательно, для каждого ! можно найти (e †>)/u~ (а ‒ () /р,' такойэлемента, поля GF (q), чтоа( '~1. Пустьb( = а( S и пусть b = П b;. Покажем, что порядок b равен q ‒ 1, и, ю=i следовательно, группа является циклической. Шаг 1. Порядок элемента b( равен р('. Докаэа/пельство. 
189 Задачи V~ Р~ Vf Очевидно, что Ь~' ‒ ‒ 1, так что порядок Ь~ делит pc . Он ра- рVC ‒ ' Ля l вен числу вида р~ . Если п~ меньше ч~, то Ь~ v< ‒ 1 (q — >)/Ð~ bi ‒ ‒ <c =ф» 1, и, следовательно, порядок элемента bt Vg равен pi . Шаг 2. Порядок элемента Ь равен q 1. Доказательство. Предположим, что Ь" = 1. Покажем сначала, что из этого вы- V) текает равенство и = 0 (mod p> ) для всех ! = 1, ..., s. Для каждого i можно записать = 1. Но (л П p~l) S М~ Pg Заменив b на Ц b> и используя равенство b>' = 1, находим К=1 Таким образом, и П p>> = 0 (mod р> >). )~t Поскольку р; представляют собой различные простые числа, то и = 0 (mod p>') для каждого !. Следовательно, и =0 (mod q 1}. Теорема доказана. ~] До>шза>иельство. Так как ненулевые элементы поля GF (q) образуют циклическую группу, то среди них имеется элемент порядка д 1. Этот элемент является примитивным. Задачи а. Приводим ли иад полем рациональных чисел многочлен р (х) = х4+ + 2хз+ х~ ‒ 2? Если приводим, то разложить его. б. Приводим ли иад полем вещественных чисел миогочлеи р (х) = х4+ + 2хз+ х~ ‒ 27 Если приводим, то разложить его. s, Приводим ли миогочлеи р (х) = ха+ 2х~+ z~ ‒ 2 над полем комплекс- ных чисел? Если приводим, то разложить его. Над полем рациональных чисел пусть рд(z) = х8+ 1, р (z) = ха+ х8+ х+ 1. Теорема 5.6.3. В каждом поле Галуа имеется примшпивный элемент. 
Гл. 5. Теория чисел и алгебраическая теория полей 6.3. 6.4. 6.5. 6.В. 6.7. 6.8. 6.9. 6.10. 6.11. 6.12. 5.13. 5.14. 6.16. а. Найти НОД 'fp> (х), р~ (х)]. б. Найти НОК [рд (х), р~ (х)]. в. Найти миогочлены А (х) и В (х), удовлетворяющие равенству НОД [рд (х), рз (х)] = А (х) рд (х)+ В (х) р2 (х). Пусть тд (х) = хз+ х+ 1, тз (х) = х~+ 1, m (х) = х~ ‒ 1. Пусть даны сд (х) = с (х) (mod тд (х)), с, (х) = с (х) (mod т, (х)), с~ (х) = с (х) (mod т~ (х)), где степень многочлеиа с (х) не превосходит 5. Найти все многочлены, необ- ходимые для вычисления многочлена с (х) по этим вычетам. Сколько круговых многочлеиов делят хд~ ‒ 1? Найти их. 59 Пусть р (х) = f х~. Ислользуя соотиошеиие С=О H~ ‒ I = (х ‒ ]) р (х), найти R < > 1хд~+ х~~+ ха~]. Доказать, что для формальной производной многочлеиа выполняется равенство fr (х) s (х) ]' = r' (х) s (х) + r (х) s" (х), и что если а~ (х) делит r (х), то а (х) делит r' (х). Доказать, что в кольце 7/(15) целых чисел по модулю 15 многочлеи р (х) = = х2 ‒ 1 имеет более двух корней: Этот же миогочлен над полем имеет только два корня. В каком месте в случае кольца ие проходит доказатель- ство теоремы? Яногочлеи р (х) = ха+ хз+ ха+ х+ 1 неприводим над полем 6Р (2) Следовательно, кольцо миогочленов по модулю р (х) является полем GF (16). а. Доказать, что в этой конструкции элемент поля, соответствующий миогочлену х, не является примитивным. 6. Показать, что многочлеиу х+ 1 соответствует примитивный миого- члеи в. Найти минимальный миогочлен элемента х+ 1. Над полем GF (16): а. Сколько имеется различных приведенных многочлеиов второй степени вида х'+ ах+ Ь, Ь =фО? 6. Сколько имеется различных многочленов вида (х ‒ P) (х ‒ у), р, у =ф= =ф= О? в. Доказывает ли это существование неприводимых многочленов второй степени? Сколько простых многочлеиов второй степеии имеется над по- лем GF (16)? а. Построить расширение поля вещественных чисел R, используя простой миогочлеи х4+ 1. Объясиить, почему это расширение является полем ком- плексных чисел С, которое можно построить также, используя простой многочлеи х~+ 1. б. Построить расширеиие поля рациональных чисел Q, используя простой миогочлен ха+ !. Объяснидь, почему это расширение отличается от рас- ширения поля рациоиальиых чисел с помощью простого миогочлеиа ха+ 1- Построить поле GF (7), задавая его таблицами сложения и умножения. Вычислить 32~ (mod 7). Доказать, что кольцо вычетов Z< является кольцом. Найти элементы порядка р~ 1 (p ‒ 1) в каждом из следующих полей: GF (9), GF (25), GF (27), QF (49). Доказать, что многочлеи хе+ х + ! иеприводим иод полем рациональных чисел. 
Замечания 191 Замечая яя Материал данной главы обычен для математической литературы. Хорошее изложение теории чисел можно найти у Оре [1] (1948) и Харди и Райта [2] (1960). Свойства полей Галуа описываются во многих книгах по абстрактной алгебре, например, в книгах Биркгофа и Маклейна [3] (1941), а также Ван дер Вардена [4] (1949). В большинстве материала, однако, это стандартное изложение является формальным, уделяет основное внимание абстрактным свойствам и содержит мало примеров и прнложений. Большее внимание вычислительным аспектам полей Галуа уделил Берлекэмп [5] (1968). Более детальное изложение колец многочленов и крутовых многочленов можно найти в книге Маклеллана и Рейдера [6] (1979). 
Глава б ВЬ!ЧИСЛЕНИЯ В СУРРОГАТНЫХ ПОЛЯХ Часто задачу вычисления в заданном поле можно вложить s другое поле, произвести там необходимые вычисления, а затем ответ вернуть в заданное поле. Целесообразность такого перехода может мотивироваться различными причинами. Может оказаться, что в новом поле необходимые вычисления выполнить легче, и это уменьшает объем работ или упрощает реализацию вычислений. Иногда электронные компоненты для вычислений в некотором поле доступнее, чем для заданного поля, и тогда, если требуемые вы- числения допускают подходящую переформулировку, резоннее перейти в это поле. Возможны ситуации, когда желательно раз- работать стандартный вычислительный модуль обработки боль- ших массивов данных и использовать его при решении разнооб- разнь~х задач для обработки дискретных сигналов. Подгонка одного типа вычислений к другому может осуществляться тогда с целью стандартизации. Другой важной причиной использования суррогатных полей является улучшение точности вычислений. Вычисления в полях Галуа не содержат погрешностей округления и поэтому всегда точны. Если задачу вычисления в поле вещественных или комп- лексных чисел удастся погрузить в поле Галуа, то это может при- вести к увеличению точности результата. В большинстве задач обработки дискретных сигналов можно ограничиться вычисле- ниями с фиксированной запятой; обычно оказывается достаточной 16-битовая арифметика с фиксированной запятой. Если поле Галуа достаточно велико, чтобы содержать 16-битовые целые числа, то в его пределах можно правильно осуществлять многие целочисленные операции, если только результаты не выходят за пределы )6-битовых целых чисел. 6.1. Свертка s суррогатных полях Свертка в поле вещественных чисел часто может быть заме- нена сверткой в подходящем поле Галуа. В реальных задачах вещественные числа записываются в виде конечного числа де- сятичных или двоичных знаков; в цифровой обработке сигналов 
6.1 Свертка в суррогатньш полях 193 обычно используется запись с фиксированной запятой. Двоич- ное представление с конечным числом знаков может ограничива- '.ться 12 или 16 битами. При вычислениях можно предполагать, что двоичная точка находится справа все числа являются целыми- Сдвиг двоичной точки во входных данных с целью вклю- чения остальных случаев является очень простым делом- Итак, линейную свертку s (х) = g (х) d (х) 8 поле вещественных чисел мы заменяем сверткой в кольце целых чисел. Для этого нужно только входные данные интерпретировать как целые числа. Внешний вид уравнения, описывающего свертку, не меняется, но операции приобретают смысл стандартной цело- численной арифметики. Затем уравнение в кольце целых чисел можно погрузить в подходящее поле Галуа, скажем, простое поле Галуа, GF (р), если простое число р достаточно велико. Если все входящие в свертку целые числа положительны, то задающее про- стое поле GF (р) простое число р должно быть столь большим, чтобы выходные коэффициенты свертки не превосходили р ‒ 1. Ч'огда выполняется сравнение s (х) = g (х) d(х) (mod p), и условие вычислений по модулю р излишне. Если s< могут при- нимать и отрицательные значения, то задающее простое поле GF (р) пробое число р надо выбирать так, чтобы s< попадали в диапазон (р 1)/2 ( s~ < (р 1)/2. Тогда отрицательные целые числа могут быть представлены положительными целыми числами в ин- тервале от (p+ 1)/2 до р l. Свертка в поле Галуа может быть вычислена любым из при- годных в данном поле методов. Некоторые прямые методы рас- сматриваются в следующем разделе. Можно также воспользо- ваться преобразованием Фурье в данном поле и теоремой о свертке. На рис. 6.1 приводится сравнение такого вычисления в поле Га- луа и в поле комплексных чисел. Мы видим, что на обеих сторо- нах рисунка выписаны одинаковые уравнения, хотя, конечно, заложенные в них арифметики различны. Так как циклическая свертка в поле Галуа приводит к тому же самому ответу, что и циклическая свертка в кольце целых чисел, то использование преобразования Фурье данного поля Галуа также приводит к правильному ответу. Так как арифмети- кой поля GF (р) является арифметика по модулю р, то перепол- нения по модулю р в промежуточных вычислениях роли не играют, но могут оказаться существенными в выходных вычислениях; если р выбрано достаточно большим, то переполнения в выходных данных невозможны. 
194 Гл. 6. Вычисления в суррогатным полящ вычисление целочисленной с>ерт« у(м) = s(a)d(~) Лроцедрра Г Вложение цель~к чисел 8 бЕ(р), арисрметика поля б~(Р). Процедура / 8ложение целык чисел В ~; арифметика поля 4: Я(Х) 4)'(Х) Рис. 6.4. Сравнение двух процедур свертки. В качестве примера рассмотрим вычисление 5-точечной цикли- ческой свертки, s (х) = g (х) d (к) (mod х' 1). Выберем простое р равным 31 и будем работать в поле GF (31). Это поле подходит к рассматриваемой задаче постольку, поскольку нам известно, что коэффициенты свертки s (х) не превосходят 30. Для реально возникающих задач поле GF (31) слишком мало и мы его выбрали только для примера. Так как 5 делит р 1 = 30, то в данном поле существует преобразование Фурье длины 5. Ядром преобразования можно 
6.1. Свертка в суррогатных полях 195 выбрать элемент 2, так как его порядок равен 5. Пусть d,=2, d,— 6, +=4, Н,=4, d,=О, Ко Э, дд ‒ ‒ О, gq = 2, Кз = 1ю Д'д = 2. 5-точечное преобразование вектора d задается равенствами 4 Da ‒ Z2'"dt> é=О, ..., 4; ~=0 для вектора g имека место аналогичные соотношения. В матрич- ной записи соответственно имеем ~')о D, D, D, ~4 6 4 1 о Таким образом, компоненты векторов- преобразований даются равенствами Ро=16, Рд=О, Р2 ‒‒ 5, Рз=29, Р4=22, 6о=8, 6, =20, 6, =22, 6з=О, 64=27- Перемножая Р; и Q;, для S; получаем: ~о = 4, Яд = О, 8~ = 17, ~з = О, Я4 = 5- Так как 5.25 = 1 в поле GF (31), то 5 ' = 25. Следовательно, обратное преобразование Фурье задается равенством "o ! ! ! ! !6 Я 4 2 Я 2 !6 4 4 !6 2 Ь 2 4 Я !6 S0 "() 24 2Ь l8 $) 2с $p $3 $4 определяющим окончательный результат. Непосредственное вы- числение этой свертки в кольце целых чисел дает тот же результат. Если мы выберем большие входные компоненты, то некоторые ком- поненты свертки окажутся больше 30. В этом случае вычисление свертки в GF (31) приведет к переполнению выходных компонент и даст неправильный результат. Тогда нужно использовать большее поле; в практических приложениях полезны поля, содержащие по меньшей мере 2" элементов. Если длина слова слишком велика для поля желаемой мощно- em, то можно воспользоваться китайской теоремой об остатках и работать с вычетами целых чисел, разбивая таким образом длин- ные слова на короткие подслова. Это использование китайской тео- 
196 Гл. 6. Вычисления в суррогатных полях ремы об остатках отличается от ее предыдущего использования при построении переупорядочивания линейного потока данных в таблицу. Теперь она используется только для разбиения самих чисел, не затрагивая индексацию данных: данные следуют в своем естественном порядке. Новые свертки, конечно, можно вычислять, используя опять китайскую теорему об остатках, но на сей раз, в отличие or предыдущего, она будет использоваться для вновь сформированных многочленов и их индексов. Пусть я~ обозначает вычет >< (mod т~} для r взаимно простых (ц целых чисел т„т„..., т,. Тогда <и ‒ ' сп <к> i=0, ... ° ~+Л' ‒ 1 ° ~~, g;2Pq~ (mod т~), А=43 э ° ° ° э ~э где gf~'~ = gf (mod т~) и d~'~ = dg (mod т~). По китайской теореме об остатках величины s;- восстанавливаются по вычетам s;- (О Следовательно, вычисление свертки, содержащей большие це- лые числа, мы свели к вычислению r сверток, содержащих малые целые числа. Для вычисления этих составляющих сверток можно пользоваться уже описанными способами или быстрыми алгорит- мами вычисления сверток в кольце целых чисел. 6.2. Числовые преобразования Ферма Простейший вид алгоритмы вычисления преобразования Фурье имеют в полях Галуа вида GF (2~ + 1), которые действи- тельно являются полями, если р = 2 + 1 простое число. Известно, что число 2 + 1 не является простым, если m не равно степени двух. Однако обратное утверждение неверно, так как число 2" + 1 является составным. Но при т = 2, 4, 8 и 16 число 2 + 1 является простым, равным соответственно 5, 1(, 257 и 65 537. Это множество целых чисел известно под назва- нием простых чисел Ферма. Если q простое число Ферма, то в поле GF (q) число q 1 и любой его делитель равны некоторой степени двойки. Преобразование Фурье n ‒ ! Гх=~и'v;, k=O,..., и ‒ 1, 1=0 определено, если и делит 2 и существует элемент св порядка n '>. Таким образом, в поле GF (2" + 1) определены преобразования Фурье длин 2' 2'~, 2'4, ..., 2~~, 2. Используя алгоритм Кули‒ Тычки, преобразование Фурье в поле GF (2 + 1) можно пред- ') Такое преобразование Фурье называют часто числовым иреобразованаем Ферма. ‒ Прим. леев. 
6.2. Ч исловые преобразования Ферма 197 ставить в виде последовательности преобразований по основанию два, для реализации которой требуется всего лишь примерно (п/2) log, п умножений и (п/2) log, п сложений. Преобразования длины 32 и меньше в поле GF'(2" + 1) дела- ются на самом деле намного проще. Это обусловлено тем, что по- рядок элемента 2 в этом поле равен 32. Чтобы увидеть это, доста- точно заметить, что 2" + 1 = О в поле GF (2" + 1). Следовательно, 21' = 1 и 2" = 1. Преобразование Фурье записывается в виде 31 V» = ,"~', 2" о„k = О, ..., 31, 4=0 и умножение в данной арифметической системе сводится просто к циклическому сдвигу, так как представляет собой умножение на степени двойки. Такое преобразование вычисляется чрезвычайно просто, но длина 32 слишком мала для многих приложений. В общем случае простого числа Ферма 2'" + 1 порядок эле- мента 2 в поле GF (2 + 1) равен 2т, так что 2 может быть ис- пользовано в качестве ядра преобразования длины 2т. Для по- строения преобразования Фурье длины 4т можно воспользоваться ядром»'2. В этих полях, как легко проверить возведением в квад- рат и использованием соотношения 2 = ‒ 1, выполняется ра- венство 1~2 = 2 ~'(2 ~2 1). Поэтому каждая степень элемента V 2 имеет вид 2' + 2». Например, преобразование Фурье длины 61 в поле GF (2" + 1) записывается в виде V» ‒ ‒ ~(2' ‒ 2) vg, k =О, ..., 63. Если для этого вычисления воспользоваться БПФ-алгоритмом Кули Тычки по основанию два, то все умножения на константы будут умножениями на числа вида 2 -+ 2 и, следовательно, могут быть реализованы как пара циклических сдвигов и вычита- ние. В общем случае поля GF (2 + 1) преобразование Фурье длины большей чем 2 всегда содержит нетривиальные умноже- ния. Число этих умножений можно уменьшить сведением БПФ- алгоритма Кули Тычки в форму многомерного преобразования, в каждом из измерений которого используется не более чем 2т- точечное преобразование.. Например, рассмотрим 1024-точечное преобразование в поле Я (2~» + 1). ' югз V» ‒‒ ,~~ <~ v;, k=О, ..., 1023, 1=0 где св элемент порядка 1024, который можно полагать равным я~, где л, примитивный элемент поля. Элемент 3 в поле 
И8 Гл. 6. Вычисления в суррогатных полях 1024 52-точечный БПФ-алгоритм Нули- 7ьюни „de3 умножений " ~2-точечный ЕРФ-алгоритм Кули- Тыщи~ „оез умножений " ~ис. 6.2. Структура 1024-точечного БПФ-алгоритма в доле Я-" (2~~+ )) GF (2" + 1)' является примитивным, но, возможно, такой выбор не является лучшим. Мы хотим ~~ выбрать так, чтобы выполнялось равенство оР' = 2; следовательно, я надо выбрать так, чтобы л2О'~ = 2. БПФ-алгоритм Кули Тычки приводит преобразование к виду aI 3I V %3 sAr' f А" %1 ГА" „- +и= Ь2 и Ь2 и,+„- Е'=~~ ~)I1~ Для каждого значения i' внутренняя сумма является 32-точечным преобразованием Фурье, и для каждого k" внешняя сумма явля- ется 32-точечным преобразованием Фурье. Каждое 32-точечное преобразование фурье в свою очередь может быть разбито по БПФ-алгоритму Кули Тычки по основанию два и вычислено с помощью только циклических сдвигов и сложений. Умножения на св'а представляют 'собой нетривиальные умножеНия, но та- ких умножений имеется всего 1024, и все они являются целочис- ленными. На самом деле при ~' или k", равном нулю, эти умноже- ния тривиальны, и остается только 931 нетривиальных умноже- ний. Структура этого БПФ-алгоритма показана на рис. 6.2. Б общем случае преобразование Фурье в поле GF (2" + 1) может быть вычислено с помощью примерно п (f'log,2 ï~ 1) умноже- ний в поле GF (2" + 1), (1/2) п log, п сложений в этом поле и (1/2) и 10Я, ю циклических сдвиГОВ. Арифметикой поля GF (2" + 1) являются обычные целочис- ленные сложение и умножение с последующим приведением ре- зультата по модулю 2" + 1. Но так как 2" = ‒ 1, то 2'~+' = 2', так что биты порядка больше чем 16 переводятся в млад- шие р азряды и вычитаются. 6.3. Числовые преобразования Мерсенна Полями Галуа, в которых умножение выглядит наиболее естественным образом, являются поля вида GF (2 1), которые являются на самом деле полем только для простых т, так как 
6.3. Числовые преобразования Мерсенна если m число составное, то 2 ~ 1 делится на 2' 1. Про- стые числа вида 2 1 называются простыми числами Мерсенна. Наименьшие значения т, для которых число 2 1 является простым, равны 3, 5, 7, 13, 17, 19 и 31; соответствующие им простые числа Мерсенна равны 7, 31, 127, 8191, 131 071, 524 287 и 2 147483647. Арифметика поля GF (2 1) очень хорошо согласуется с представлением целых чисел в виде т-битовых чисел, так как в этом поле 2 = 1. Следовательно, арифметикой поля является обычная целочисленная арифметика, в которой биты переполнения переносятся слагаемыми в соответствующие низшие разряды. Это и есть арифметика 1-дополнений '). Поле GF (2~ 1) существует для всех простых чисел 2 l. В поле Галуа GF (q) преобразование Фурье существует для всех длин п,‒ êîòîðûå делят число q 1. Следовательно, в простом поле GF (2~ 1) преобразование Фурье существует для всех длин и, которые делят число 2 2. Эти преобразования иногда ,называют числовыми преобразованиями Мерсенна. Так как число (2 1) 1 не равно степени двух, то число- вые преобразования Мерсенна нельзя вычислять с помощью БПФ-алгоритма Кули Тычки IIo основанию два. Этим они су- щественно отличаются от числовых преобразований Ферма, для которых БПФ-алгоритм Кули Тычки оказался вполне подходя- щим. Яля вычисления числового преобразования Мерсенна мо- жно воспользоваться любым БПФ-алгоритмом по смешанному основанию. Например, поле GF (2" ‒ 1) можно рассматривать как поле, элементы которого заданы в виде 13-битовых представлений це- лых чисел. Свертка двух векторов, компоненты которых заданы 12-битовыми числами, может быть вычислена в этом поле, если только не происходит переполнения выходных коэффициентов свертки. Таким образом, линейная свертка s (х) = g (х) d (х), где коэффициентами многочленов g (х) и d (х) служат 12-битовые положительные целые числа (что эквивалентно 13-битовому пред- ставлению целых чисел в обратном коде), может быть выражена в виде s (х) = g (х) d (х) (mod 2~з 1), если известно, что коэффициенты многочлена s (х) меньше чем 2'з 1. Для длин п, которые делят число 2" ‒ 2, в поле GF (2~З 1) существует преобразование Фурье. В данном случае выбор воз- <) Напомним, что речь идет о двоичном представлении целых чисел в обрат- aîM коде, в котором взятое с обратным знаком число записывается в виде допол- нения ero двоичной записи. Например, при m =- 3 и р = 7 число 2 записывается в виде 010, а число ‒ 2 = 5 в виде 101. ‒ Прим. ëåðåâ. 
200 Гл. 6. Вычисления в суррогатных полям можной длины и преобразования дается разложением 213 2 = = 2-5-7-9-13. В качестве ядра преобразования Фурье можно выбрать элемент 2, так' как 2'3 1 = О (mod 2" 1), и, сле- довательно, порядок 2 равен 26. Таким образом, преобразование Фурье записывается в виде 25 V> = ~~~~( 2) v~, Й=О, ..., 25. с=о В этом преобразовании Фурье все умножения исчерпываются умножениями на степени двух, и, следовательно, вычисление мо- жно реализовать одними циклическими сдвигами, без умножений. С другой стороны, делители числа 26 не очень пригодны в качестве длин БПФ-алгоритмов; на этой конкретной длине трудно приду- мать что-то лучшее, чем вычислять преобразование Фурье как оно записано посредством 25' циклических сдвигов и 26.25 сло- жений. Для построения преобразований на других длинах приходится допустить наличие умножений. Алгоритм на большой длине, скажем 70, строится из алгоритмов малых длин, в данном случае 2, 5 и 7, подобно тому, как рассматриваемый в гл. 8 БПФ-ал- горитм Винограда большой длины для поля комплексных чисел строится из БПФ-алгоритмов Винограда малых длин. Эти алго- ритмы полностью аналогичны, за исключением того, что по-раз- ному определяются константы умножения, связанные с различ- ным определением ядра со. В качестве примера построим 5-точечный БПФ-алгоритм Винограда в поле GF (2'3 1). Непосредственной проверкой мо- жно установить, что 3 является примитивным элементом поля GF (2" 1); следовательно, порядок элемента 3'7 9'" (что равно 4 794) равен 5. Далее, порядок элемента 1904 также равен 5, так как 1904 = (4794)'. Тогда 5-точечное преобразование Фурье в поле GF (2" 1) имеет вид: 4 Уь ‒ ‒ g (1904) о;, lг =О, ..., 4. С ‒ 0 Сначала воспользуемся алгоритмом Рейдера для замены этого вычисления сверткой. Так как алгор итм Рейдера оперирует только с индексами компонент- данных, то эта конструкция пол- ностью повторяет конструкцию для поля комплексных чисел. Этим задача сводится к вычислению циклической свертки s (х) = = g (х) d (х) (mod х' 1), в которой многочлен Рейдера равен g (x) = (аР 1) ~Р+ (и' 1) х'+ (и' 1) х+ (и 1) = и = 3001xÐ 1511х' + 4793х + 1903 d (х) = п,х' + v,õ' + пах + vi, 
6.3. Числовые преооразования Мерсенна Vo) х'+ а (<) ()~в ~о) х + (Vo + (Vo Vo) ~ + (Vi ‒ Vo). Теперь воспользуемся быстрым алгоритмом вычисления 4-то- чечной циклической свертки. Так как разложение многочлена х4 1 в поле GF (2" 1) дается равенством х4 1 = (х 1) (х + 1) (х' + 1), То этот алгоритм циклической свертки имеет тот же самый вид, что и для полей комплексных и вещест- венных чисел. Это позволяет воспользоваться выписанным на рис. 4.13 алгоритмом, интерпретируя арифметические операции как операции в поле GF (2" 1). Итак, 4 4793 ~о G, G, 1 I 1 I 6!42 2245 8!! 26оз тл ! ‒ 1 I ‒ I 1 ‒ 2 ‒ 2 2 2 ‒ 2 ‒ 2 О ‒ 2 О и 5-точечный БПФ-алгоритм Винограда в поле QF (2'~ ‒ 1) записывается в виде о о о о о О-1 ‒ ‒ о О-1 о ! 1 1 1 1 1 1 I 1 †1 †! 1 О О-1 О-1 ! О ]-1 1-1 1 6142 2245 811 260з 17т ир G V) v, ))2 ))э ° э v„ В качестве второго примера рассмотрим поле GF (2" ‒ 1}, элементы которого записаны как 17-битовые представления це- лых чисел в обратном коде. Линейная свертка последовательно- стей 16-битовых целых чисел может быть вычислена как свертка в поле GF (2" 1}: здесь не происходит переполнения выходных компонент свертки. Для вычисления свертки можно воспользо- ваться БПФ-алгоритмами в поле GF (2" 1} и теоремой о свертке. Длины преобразования Фурье в поле GF (2' 1) исчерпы- ваются делителями числа 2" 2, которые полностью определя- ются разложением 2" 2 = 2.3.5-17.257. Можно выбрать, например, и = 510, и строить 510-точечное БПФ-преобразование из 2-точечного, З-точечного, 5-точечного и 17-точечного БПФ- алгоритмов. Модули для 2-точечного, 3-точечного и 5-точечного преобразований очень просты и даются малыми БПФ-алгорит- мами Винограда. Хотя эти малые алгоритмы рассматриваются над полем GF (2" 1}, записываются они точно так же, как и в слу- чае поля комплексных чисел. 17-точечное преобразование тоже представляет собой простой модуль, но строится он другим способом. А именно, элемент 2 
202 Гл. 6. Вычислеиня в суррогатных полях поля GF (2" 1) имеет порядок 17, так как 2" = 1. Следова- тельно, 17-точечное преобразование в этом поле задается равен- ствами k=0 ..., 16, и может быть вычислено с помощьюоднихциклических сдвигов и сложений. Умножения не нужны. Если необходимо вычислить свертку, длина которой больше 510, то надо использовать также множитель 257. 257-точечное преобразование Фурье с помощью алгоритма Рейдера сводится к 256-точечной циклической свертке, которая затем вычисляется с помощью БПФ-алгоритма Кули Тычки по основанию два и алгоритма свертки. 6.4. Алгоритмы свертки В КОНОЧНЫХ ПОЛЯХ В полях Галуа вместо того, чтобы пользоваться преобразова- нием Фурье и теоремой о свертке, можно строить прямые методы вычисления свертки. Для построения алгоритмов свертки приме- нимы все описанные в гл. 3 методы. Другой путь построения пря- мых алгоритмов свертки состоит в модификации уже построенных алгоритмов свертки для поля вещественных чисел. Для преобразования алгоритма свертки, построенного для поля вещественных чисел, в алгоритм свертки в поле Галуа ~~ (Ч) характеристики р начнем с алгоритма свертки, записанного в виде s = С [(Ag) ° (Bd)], где А, В и С . матрицы с рациональными элементами. Умно- жим обе части равенства на наименьшее целое число L, такое, чтобы ликвидировать все знаменатели во всех компонентах; жгда равенство перепишется в виде Ls = С [(A g) ° (В d)], где L целое число и А', В', С" целочисленные матрицы. Это равенство можно рассматривать как алгоритм вычисления целочисленной свертки; следовательно, его можно рассматривать и как уравнение по модулю p: Ls = С' [(А'g) ° (В'd)] (mod р). Если L + О (mod р), то, разделив обе части равенства Hà L no модулю р, получаем алгоритм свертки в GF (р), и, более того, алгоритм в любом расширении поля 6Р (р). 
6.4. Алгоритмы свертки в конечных поляз Если L сравнимо с нулем по модулю р, то алгоритм свертки для поля вещественных чисел не переносится в поле Галуа, и надо строить такой алгоритм прямо в самом поле Галуа. Эта задача возникает даже тогда, когда L не равно нулю по модулю р, так как может оказаться, что алгоритм свертки, построенный спе.- циально для данного поля Галуа, лучше алгоритма, перенесенного из другого поля. Для построения такого алгоритма можно поль- зоваться разработанными в гл. 3 методами, конечно, при этом требуется, чтобы разложение m (х) = m<О1 (х) ... m<~> (x) было разложением в том поле, в котором вычисляется свертка. В большей части данной главы мы будем интересоваться по- лями, характеристика р которых велика. Так как для таких по- лей L будет намного меньше р, то все алгоритмы свертки для поля рациональных чисел могут быть перенесены в GF (р) и будут выглядеть точно так же. В оставшейся части этого раздела мы займемся противоположным случаем случаем полей малой характеристики, или, еще конкретнее, случаем полей характери- стики два. Поля Галуа характеристики два играют важную роль в нескольких приложениях. Начнем с построения алгоритма 3-точечной циклической сверт- ки для полей характеристики два. В поле бесконечной характери- стики этот алгоритм записывается уравнением ! о ‒ 1 ‒ I ‒ 1 2 о з(4+ gs + 8р1 I I I о-! о ! l ‒ 2 (Ro ‒ Rz) <а, ‒ ю,) з (~о + 8ю 28г1 Ни один из знаменателей не кратен двум. Следовательно, алгоритм может быть перенесен в поля характеристики 2. Арифметикой целых чисел в полях характеристики два является арифметика по модулю два, так что все целые числа равны нулю или единице. Соответственно новый алгоритм записывается в виде 1 1 1 1 0 1 0 1 ! 1 1 0 1 1 0 1 1 1 1 0 1 0 ! 1 ~8о + gi + 82) ~~о + 8i~ (gg + Ыг) ~~о + ~» So 6) ~2 S( 
204 Гл. 6. Вычисления в суррогатных полях С другой стороны, алгоритм 2-точечной свертки содержит эле- (gp + а ) менты с четным знаменателем и, следовательно, не может быть перенесен в поля характеристики два, так как знаменатели обратятся в нуль. Лучший алгоритм 2-точечной циклической сверт- ки в полях характеристики два задается равенством n+Ri и содержит три умножения. Причина необходимости трех умно- жений кроется в том, что над полем GF (2) многочлен х' 1 не разлагается B произведение двух взаимно простых множителей, так как в полях характеристики два 1 = 1, и, следовательно, х' + 1 = (x + 1)'; следовательно, в конструкцию алгоритма в качестве модуля входит многочлен х' + 1 степени два. Такая ситуация, когда число умножений в конечном поле больше числа умножений в рациональном поле,.встречается для циклических сверток многих длин. Зто происходит потому, что несколько простых делителей многочлена х" 1 оказываются равными. С другой стороны, некоторые циклические свертки в по- лях конечной характеристики требуют меньше умножений, чем свертки тех же длин в рациональном поле. Это происходит потому, что круговые многочлены в конечных полях могут распадаться в произведение простых множителей. Например, над полем ра- циональных чисел разложение на неприводимые множители мно- гочлена х' ‒ 1 имеет вид х' 1 = (х 1) (х' + х' + х' + x' + х' + х + 1), а над полем характеристики два это разложение можно продол- жить: х' 1 = (х 1) (х' + х + 1) (х' + х'+ 1). Следовательно, согласно выписанной в разд. 3.8 общей границе, оптимальный (относительно числа умножений) алгоритм 7-то- чечной циклической свертки над полем рациональных чисел дол- жен содержать 12 умножений, а оптимальный алгоритм 7-точеч- ной циклической свертки над полем характеристики два долже~ содержать 11 умножений. Яля первого случая извесген хороший с практической точки зрения алгоритм, содержащий 16 умноже- ний, а для второго хороший алгоритм с 13 умножениями. 
6.4. Алгоритмы свертки в конечных полях Последний алгоритм строится методами главы 3 и задается равен- ством So Еп S2 g2 g e R4 Sg Rs S6 86 Такого сорта улучшения можно найти и в полях большей ха- рактеристики. Например, в поле GF (11) разложение на простые множители того же многочлена х' 1 имеет вид х' 1 = (х ‒ !) (х~ + 5х' + 4х 1) (х~ ‒ 4х' 5х ‒ 1). Следовательно, в полях характеристики одиннадцать алгоритм вычисления 7-точечной циклической свертки содержит 11 умно- жений. Таким алгоритмом является ! 4-1 0-4 1-5 3 0 2 ! ! ‒ 1 2 4 2 4-1 4-5 ‒ ! ‒ 5 I-5 4 ‒ 5 0 ‒ I 4 2 4 ‒ 2 ‒ 1 1 ! 3 0 ‒ 5 ‒ 5 ! ‒ I 0 S 4 I 0 1 ! 4 1 0 I I 4 1 I 0 I ‒ 1 2 0 0 I ‒ ! 2 0 I 1 1 ! 1 0 I ! I 1 0 $2 В алгоритм входит только 11 умножений общего вида, но умножений на малые фиксированные константы (~2, ~3, ~4, ~5) он содержит достаточно много. Каждое из таких умножений можно заменить несколькими сложениями, но тогда мы получим большое число сложений. Возможности улучшения этого алго- pHTlvIB и являются открытой задачей. Ее решение зависит оТ ~oHMQcTH сложений и умножений. В достаточно больших расши- рениях поля GF (11 ) умножения обходятся существенно дороже сложений, так что такой алгоритм может оказаться вполне при- годным. В простом поле GF (11), по-видимому, замена умножений сложениями не дает преимуществ. l 1 1 ! l 1 l О1ОО ОО111О О1ОО О 1ОО О О111 О О111О1О О! ! 1ОО О1О111О О О 1 О ОО1О О О1О 11 ОО1О l 1 l 1 l l l О111ОО О!1!О О ОО1О ОО1О О!О!1!О ОО1О О!1 ! О1О О1О О О1ОО О О111О ОООО ОО ! 11 О l ! I I ! I I I 0 0 1 †5 †! 4 1 I I 3 4 2 ‒ I I- I 1 О-S 4 0 I 2 4-$ 0 2-4 0 1 ‒ S ‒ I 4 I 0 0 I 4-1-5 1 1 I-I 2 4 3 I ‒ 1 ! 0 4 ‒ 5 0 l 2 4 S †2 †! 2 0 1 4 †1 в ! 1 1 1 1 1 1 1 О1 ! 1ОО О1О111О ОО1О О О1О ОО1О о о ! о О111О1О О О111О ОО111О О1О О О1О О1 О1ОО -3-3-3 ‒ 3-3-3-3 5 0 3 ! 5 ‒ 4 ! -4 ‒ 4 4 3-2 2 ! 3 ‒ 3 2 5-3 †3 в 0 0 I ‒ 5 ‒ I 4 I 0-5 2 ‒ I 3 2-! -5 0-3 5 5-2 0 -4-4 †! 5 0 2 2 -3 3 ‒ 2 4 ‒ 2-1 ! 0 0-1-4 I 5 †! 0 5 †1 †! ‒ 4 0 ди d, d2 d3 ~4 d d„ 
206 Гл. 6. Вь~числения в суррогатных полях 6.5. Комплексная свертка в суррогатных полях В последних двух разделах мы видели, как свертку в ве- щественном поле можно вложить в поле Галуа, где ее удобнее вычислять. Теперь мы займемся этой же задачей для свертки комплексных чисел. В зависимости от наличия в поле GF (р) элемента ~/ 1 здесь имеются два различных случая, которые приводят к совершенно разным действиям. Мы рассмотрим только два класса простых чисел: простые числа Мерсенна и простые числа Ферма. В случае простых чисел Мерсенна поле GF (р) не содержит элемента ~ 1; в случае простых чисел Ферма элемент 1 принадлежит полю GF (р). Мы будем рассматривать лишь эти два класса простых чисел, но к любому другому простому числу можно применить один из этих методов. Мы начнем с простых чисел Мерсенна, р = 2 1, где т нечетное простое число. Это поле не содержит элемента ~~ 1. Расширим поле GF (2 1) до поля GF ((2 1)') подобно тому, как поле вещественных чисел R расширяется до поля комп- лексных чисел С. Тогда преобразование Фурье в поле GF ((2 1)' ) можно использовать для вычисления свертки в поле комплексных чисел. В поле вещественных чисел многочлен х' + 1 не имеет корней. Обозначим через j некоторый новый элемент и присоединим его к полю вещественных чисел, образуя множество C = 1а + bj}, где а и b вещественные числа, а сложение и умножение за- даются правилами {а+ bi)'+ {с+ di) = {а+ с) + (b + d) /, {а + bj) (с + di) = (ас bd) + (ad + bc)' j. Легко проверить, что это множество образует поле. Аналогично, в поле Галуа GF (2 ‒ 1) многочлен x'+ 1 не имеет корней. Расширим это поле, присоединив к нему некоторый обозначаемый через / элемент и сформировав множество GF ((2~ 1)') = 1а ~- bj}, где а и Ь произвольные элементы поля GF (2 1). Сложение и умножение опять зададим правилами (а + Ь/) + (с + dj) = (а + с) + (0 + d) /, {а + by) (с + dj)' = (ас bd) + (ad + bc) /, где операции спр ава являкггся операциями в исходном поле GF (2~ 1). Легко проверить, что такое определение задает поле, содержащее (2 1)' элементов. Подытожим сказанное в виде двух теорем. 
207 6.5. Комплексная свертка в суррогатным ooJlHxi Теорема 6.5.1. Если 2 1 простое число Мерсенна, то ноле GF (2 1) не содержит среди своик элементов квадратного корня из 1~ следовательно, многочлен xÐ+ 1 не имеет в этом лоле корней. Доказательство отложим до конца раздела. Теорема 6.5.2. Относительно определенных выше оперсщий сло- жения и умножения множество GF ((2'" 1)') образует лоле. Яоказательство. Утверждение вытекает непосредственно из того, что многочлен х' + 1 прост. [] Теперь рассмотрим преобразование Фурье в поле GF ((2 1)'). Длина преобразования равна (2 1)' 1 или делит это число. Так как имеет место разложение (2 ‒ 1)' 1 = = 2 +' (2 ‒ ' 1), то возможной длиной преобразования Фурье в поле GF ((2 1)') является 2+', и тогда это преобразование можно вычислять с помощью БГ1Ф-алгоритма Кули Тычки по основанию два. Другие возможные длины преобразования Фурье задаются делителями числа 2 ' 1. Выберем, например, т = 17. Тогда (2" 1)' 1 = 2" Х X 3 5 17 257. В качестве длины преобразования можно взять любую степень двойки вплоть до 2", а большие длины получа- ются присоединением остальных делителей. Пусть и делит 2" и пусть k=0,..., п ‒ 1, где и ‒ элемент поля GF ((2'~ 1)')' порядка и. (В табл. 6.1 приведены найденные на ЭВМ соответствующие элементы в.) Так как п равно некоторой степени двух, то для вычисления преоб- разования Фурье можно воспользоваться ОПФ-алгоритмом Кули Тычки по основанию два. Возможности выбора длины преобразования Фурье в поле GF ((2" 1)') существенно шире, чем в поле GF (2" 1); в част- ности, это относится к длинам, равным степени двойки. Поэтому для вычисления циклической свертки в GF (2" 1) можно перейти в поле GF ((2" 1)'), рассматривая исходную свертку как свертку целых чисел поля GF ((2" 1)'). В случае, когда р является простым числом Ферма, у ‒ 1 явля- ется элементом простого поля, и построение расширения 6Р (р') с операцией умножения, аналогичной умножению в поле комплекс- ных чисел, невозможно. Действительно, для р = 2 + 1, где т равно степени двух, возведением в квадрат легко убедиться, что 
208 Гл. 6. Вычисления в суррогатньи полял Fv + 4 о ~Ч Фч о + cv 4+ Я гЧ '4 I О + ;Ч Ю О ~Ч + ~Ч + еч + 1 FЧ + + + + Ф ~Ч л М ~Ч ° ею' мщу \ + <Ч C ЕЧ ЕЧ + Р юл, р4 ~Ч + + ~Ч + ~Ч + ~Ч + 4 4 СЧ + +м лЧ + л Ь ~ ~Ч + + 1 ~Ч 4 + о л ~С~ СЧ + ~Ч ~Ч с + + ГЧ ЕЧ + ~Ч + h + + ОЧ 1 л к + л t4 й + о Й 1 + гв. ~Ч СЧ 1 1 О о ФЧ ~Ч + + лЧ I лч 1 4 ЕЧ 1 л ФЧ 1 ю 8 3 О г~л ~Ч 1 1 Ф еЧ Ъю' Fv ~в~ 4 + л Й 1 о + fv ЕЧ л + + л ~Ч ~Ч + е ЕЧ + л ФЧ + ~Ч 1 4 + O ЕЧ 1 ~Ч 1 О ~Ч + О СЧ + лЧ + ~Ч + + ОЧ + О ГЧ + л ~Ч + л ~Ч 1 О Fv 1 л ~Ч + л + + с- Ч 'Ч + ~Ч hl + ~ а CV ' я (Ч ~Ч л л ~Ч hl + a лЧ РЧ + g еч ('Ч + я ('Ч ЕЧ й фЧ 1 О Fv ~ 1 O л hi + а l4 F4 1 r л л а ~Ч СЧ + g и ~Ч 1 + + е 4 1 ° ° lV CV + i о СЧ СЧ 1 е л о ЕЧ ~Ч + л ° Fv л ъг hl + + ~ь ~Ч hl + ° ЕЧ ~Ч + ° л о ~Ч 1 ~Ч ~б +я ° e ~Ч 84 
6.5. Комплексная свертка в суррогатных полям ~/ 1 = 2"'~4 (2"'~~ 1)'. Для вычисления свертки я (х) = g (х) d (х), где д (х) = д„(х)+ igr (x) и d(x) = d„(x) + /dr (x), приходится вычислять четыре свертки g~ (х) d~ (х), g„(x) dr (х), gr (х) d~ (х) и д (x) dr (х) и пользоваться равенствами яв (х) = g„(x) d„(x) ‒ gr (х) dr (х), sr (х) = g„(x) dr (х) + gr (х) da (х) Лучшая процедура, содержащая вдвое меньше умножений, осно- вана на определении в кольце GF (р) [x]/(х" 1) многочленов а(х) = ‒ (д„(х) ‒ 2 ~~д (х))(dÄ(x) ‒ 2 ~ d,(х)), ~ (х} = ‒ (д„(х) + 2 ~ д~ (х)) (Н„(х) + 2 "dr (х)), для вычисления которых надо сделать только две свертки. Все вычисления проводятся в кольце бр (р) [х]/(х" 1), и свертка я (х) Вычисляется по правилу я„~ = (а (х) + Ь (х)), я~ (х)' = 2"'~з (а (х) Ь (х)). Для завершения раздела нам осталось провести доказательство mopier 6.5.1. Оно достаточно длинно и опирается на понятие квадратичного вычета. Те элементы простого поля GF (р}, для которых в этом поле существуют. квадратные корни, называются квадратичными вычетами (поскольку по модулю р они равны квад. ратам своих квадратных корней). Если р нечетко, то ровно поло» вина элементов поля GF (р) имеют квадратные корни. Чтобы это показать, заметим сначала, что каждая четная степень примитив- ного элемента и имеет квадратный корень. Сдругой стороны, каж- дый элемент, равный квадратному корню, может быть записан в виде а' для некоторого г, так что его квадрат равен а<<~'», где двойные скобки в показателе степени использованы для обозна- чения того, что вычисления проводятся по модулю р 1, так как мультипликативная группа поля является циклической по- рядка р 1. Но число р 1 четко, и, следовательно, ((21)) также четно. Таким образом, только четные степени элемента и могую иметь квадратный корень. Теорема 6.6.3. Яля нечетных р в поле GF (р) элемент r яв- ляется квадратичным вычетом тогда и только тогда, когда у (Р ‒ >)/2= Доказательство. Предположим, что r<> ‒ '>r~ 1. То.-дэ g г~ не может существовать в данном поле, так как в противном с.чучае 
210 Гл. 6. Вьччнсления в суррогатных полям должно бы было выполняться равенство (!/г)~ ~ = 1, которое не выполняется. Предположим, что r« ')/2= 1, и пусть а примитивный эле- мент поля GF (р). Очевидно, что все четные степени элемента и являются квадратичными вычетами, а все нечетные степени эле- мента а квадратичными вычетами не являются. Надо только по- казать, что r равно четной степени элемента и. Допустим против- ное: r = а2'+', тогда, так как порядок элемента а равен р 1, имеем (р ‒ 1)/2 / 22+1~(р ‒ 1)/2 Ю (р ‒ I) (р ‒ I)/2 (р ‒ 1)/2 ~ 1 r =~а у =а а Таким образом, из равенства r(p ‒ ')/2= 1 вытекает, что г равно четной степени элемента а и, следовательно, является квадратич- ным вычетом. Q Теперь у нас уже все готово для доказательства теоремы 6.5.1. Теорема 6.6.!. Элемент 1 поля GF (2 1), аде 2 1 простое число Мерсенна, не имеет в этом поле кваоратного дворня. Следовательно, щцогочлен х'+ 1 не имеет в этом поле корней. Яоказательство. Предположим, что 1 имеет квадратный ко- рЕНь, раВнЫй r. ТОгда r' = 1 И, СОгЛаСНО тЕОрЕмЕ 6.5.3, r(p ‒ ')/2= (2~~! ‒ 2)/2 2m ‒ 1 =1. Таккакр=2 1, то r ~ =1 или r r ‒ '=1. 2~~! ‒ 1 Но r' = ‒ 1 и т 1 четно. Следовательно, r = 1 и г-' = 1. Но тогда r не равно 1. Полученное противоречие показывает, что в данном поле не существует квадратного корня из 1. П 6.6. Преобразования в числовом кольце Если поле F содержит элемент порядка и, то в этом поле сущест- вует преобразование Фурье длины п. Если преобразование Фурье существует, то оно обЛадает всеми элементарными свойствами такого преобразования. Часто возможно также определить преобразование в кольце, но при этом ситуация не является столь простой. В настоящем разделе рассматриваются преобразования в кольце Z/(q) целых чисел по модулю д. Если д простое число, то Z/(q) является полем, и, как мы уже видели, в нем существует преобразование Фурье со всеми его основными свойствами. Поэтому надо рассмо- треть только случай составного числа д. Как мы увидим, даже для составных д можно дать осмысленное определение преобразования Фурье. Однако структура этих преобразований представляет со- бой точную копию преобразований Фурье для простых делителей числа д, так что переход к составному д прибавляет мало возмож- ностей. 
6.6. Преобразования в числовом кольце 211 Мы хотим определить в целочисленном кольце преобразование Й=О,..., и ‒ 1, вектора v над кольцом z/(q) так, чтобы существовало обратное преобразование f=O,..., и ‒ 1, и была справедлива теорема о свертке. Для того, чтобы такое опре- деление преобразования фурье было возможным, необходимо выполнение двух условий: (1) должен существовать элемент и порядка и; (2) элемент п в кольце Z/(q) должен быть обратимым. Нужна, конечно, еще и обратимость элемента ь, но из условия со" = 1 автоматически следует, что со ' = GP '. Итак, надо определить те значения и, для которых существует элемент со порядка и. Начнем с простейшего случая g, равного сте- пени простого нечетного числа р, q = р'". Кольцо Z/(ð'") не об- разует поля, так как его умножением является умножение по модулю р. Согласно теореме 5.1.8, в этом кольце имеются эле- менты порядка (р 1) р ', и согласно теореме 5.1.5 (теореме Эйлера), порядок каждого взаимно простого р элемента делит (р 1) р †'. Согласно этому условию, для каждого делителя п числа (р 1) р ' можно выбрать элемент и порядка п. Однако теорема 5.2.2 утверждает, что число и обратимо тогда и только тогда, когда и и р взаимно просты. Следовательно, и не может делиться на р. 'Гаким образом, в качестве со можно выбрать только элементы, порядок которых и делиг р 1. Следующая теорема показывает, что для каждого такого и существует соответствующее преобразование фурье. Однако длины такого преобразования в Z/(р'") в точности совпадают с теми длинами, которые допустимы для преобразования Фурье в поле GF (р). Изменения касаются только разрядности используемых чисел, которая увеличивается примерно с log> p до m log2 р. Но обычно разрядность является достаточно большой и для преобразований в поле GF (р), что еще больше уменьшает преимущества перехода к у /(р-) Ситуация для произвольного д аналогична и описывается следующей тоеремой. Теорема 6.6.1. Обратиаое преобразование Фурье длины и над кольцом Z/(q) существует тогда и только тогда, когда п делит р 1 для всех простых делителей р числа д. Яокаэательство. Сначала мы приведем доказательство для случая, когда д равно етепени простого числа. Затем используем 
212 Гл, 6. Вычисления в суррогатных полях китайскую теорему об остатках, чтобы связать этот случай со случаем произвольного числа д. Проще всего доказывается обратная часть теоремы. Длина и преобразования обратима, только если и и д взаимно просты, так как nn'= 1+Qq, t3 ‒ 1 t3 ‒ 1 Q) ~~, = Q) Q) ()~~ 1=0 г=о ф .и ll] I Если 1' = 1, то сумма по lг равна п. Для 1 ~ 1' имеем n ‒ 1 ‒ (t' t) n -(C'-C) ~ (<~ ) = > „-<к-к> a=o Так как оба индекса 1 и 1' меньше п н 1' i + О (то4 n), то вы- ражение справа равно нулю. Таким образом, ‒ и 1 й Va = ‒ us (Аг) = ut, и Г=О a=o что и требовалось доказать. ш m /и ТЕпЕрь ПрЕдПОЛОжИм, ЧтО д = p1 p> ... p, . ВОСпОЛьэуЕмСя китайской теоремой об остатках и алгоритмом' Гуда Томаса для и, следовательно, любой делитель чисел и и д должен быть и де- лителем единицы, так что он должен равняться единице. Далее, теорема 5.1.5 утверждает, что если порядок и элемента со вза- имно прост с q, то он делит q (q) = (р 1) р ‒ '. Следовательно, преобразование Фурье в кольце ~/(р) существует только на длинах и, которые делят р 1. Теперь докажем прямое утверждение теоремы. Полагать р равным 2 смысла нет, так как тогда и равно I и утверждение три- виально. Следовательно, р нечетное простое число и согласно теореме 5.1.8 существует элемент и порядка (р 1) р ‒ '. Для bpm ‒ 1 любого делителя b числа р 1 положим а = л; тогда по- рядок элемента и равен (р 1)/Ь. Таким образом, для любого делителя Ь числа р 1 имеется элемент о этого порядка, и остается доказать существование обратного преобразования Фурье. Для этого запишем 
6.7. Числовые преобразования Шевилла 213 отображения кольца z/(g) в прямое произведение z/(ð, ') х >< z/(~ã ) >< ... z z/(р, '). Условия существования преобразо- вания Фурье в кольце Z/(g) связаны с условиями существования преобразований Фурье в каждом из z/(o < '), так что условие де- лимости р; 1 Hà и должно выполняться для всех г. Q По-видимому, описываемое теоремой 6.6. 1 преобразование Фурье в целочисленном кольце z/(g) при составном g может иметь весьма ограниченные приложения. Тем не менее они могут в не- которых специальных случаях оказаться весьма подходящими. Рассмотрим, например, разложение 2" + 1 = (257) (4278255361) = р,р,. В кольце z/(2" + 1) существует преобразование Фурье длины 256, так как 256 делит и р, 1 и р, 1. Это преобразование при разрядности чисел в 41 бит обеспечивает точность вычисле- ний в 40 бит. Кольцо допускает БПФ-алгоритм Кули Тычки по основанию два. Арифметика переполнения легко учитывается равенством 24О = ‒ 1. Элемент 2 нельзя в этом случае использо- вать в качестве ядра преобразования, так как порядок 2 равен 80, а порядок ядра должен быть равен 256. Следовательно, умножения не могут быть реализованы в виде циклических сдвигов, а явля- ются умножением 40-битовых чисел общего вида. Таким образом, такая конструкция приводит к процедуре 256-точечной цикличе- ской свертки, содержащей примерно 256 + 2561og~ 256 умноже- ний общего типа для 40-разрядных двоичных чисел с точностью в 40 битовых разрядах. По сравнению с комплексным БПФ-ал- горитмом для 40-разрядных двоичных чисел эта процедура явля- ется и более точной и содержит меньшее число умножений. 6.7. Числовые преобразования Шевилла k=0,..., и ‒ 1, Числа Шевилла (как правило, простые, но не всегда) в нестро- гом определении задаются как числа д, для которых в кольце z/(g) существует преобразование Фурье по одному основанию для больших длин преобразования. Числа Шевилла связаны только с хорошими преобразованиями Фурье и не имеют специального теоретико-числового значения. Таблица этих чисел, построен- H»õ с помощью 3ВМ, приведена на рис. 6.3. Если элемент и кольца Z/(g) имеет порядок, равный степени малого простого числа, то преобразование Фурье 
214 Гл. 6. Вычисления в суррогатных полях в этом кольце удобно вычислять с помощью БПФ-алгоритма Ку- ли Тычки по одному основанию. В приведенной на рис. 6.3 таблице для каждого q' указан порядок, определяющий длину пре- образования и, равную степени малого простого числа. Максимальное ай~о бПФ по одному оснооанию У~иректийюе дпла спада Дпииа спо8а о Nna симажнае dnueo преоЮрозодЬал~ 10 750 768 882 918 928 100В 1372 1408 1458 1470 1600 1782 1950 1998 2016 12 2916 3328 3456 зввв 4000 4018 4048 4050 5346 7000 7546 7680 7840 7936 8100 8160 pic. 6.3. Таблица алгоритмов Шавилла. даи преобрааоваииа 163 193 197 24I 251 257 401 449 487 491 751 769 ввз 919 929 1009 1373 !409 !459 1471 !60! 1783 1951 1999 2017 2917 3329 3457 3889 4001 4019 4049 4051 5347 7001 7547 7681 7841 7937 8101 8161 73 76 76 79 80 80 86 88 89 89 96 96 98 98 99 100 10 4 10 5 10 5 10 5 10 6 I0 8 109 11 0 110 l l 5 l l 7 11 8 119 120 !го 12 0 120 124 12 8 129 129 12 9 !30 1Зо 1З0 162 192 196 240 250 256 400 448 486 490 81 64 49 16 125 256 25 64 24~ 49 125 256 49 27 зг 16 343 128 729 49 64 8I 25 27 32 729 256 128 243 32, 125 49 16 81, 25 243 125 З4З 512 49 256 81, 25 зг 
~.7. Числовые преобразования Шевилла Длина слоба Здирвктиднаю длина слаба Моксцмалаиая Моксцмалвнаю дюна длина 0/7Ф иреобрамВЫною по оймону оснобанию 14 15 16 8263 13751 14407 15361 16001 16073 16193 1630! 16363 16369 17497 18433 25601 28751 28813 30871 32077 32251 32257 32401 32537 32563 32609 32689 39367 40961 52489 61441 62501 63001 64153 64513 65089 65101 65171 65269 65281 65449 65521 Фурье по одному основанию. 13.0 13.7 13.8 13.9 14.0 14.0 14.0 14.0 14.0 14.0 14.1 14.2 14.6 14.8 14.8 14.9 15.0 15.0 15.0 15.0 15.0 15.0 15.0 15.0 15.3 15.3 15.7 15.9 15.9 ! 5.9 16.0 16.0 16.0 16.0 16.0 16.0 16.0 16.0 16.0 8262 13750 14406 15360 1 6000 16072 16192 16300 16362 16368 17496 18432 25600 28750 28812 30870 32076 32250 32256 32400 32536 32562 32608 48 39366 40960 52488 61440 62500 250 64152 645!2 65088 65100 65170 65268 96 65448 65520 243 625 2401 1024 128, 125 49 64 25 81 16 2187 2048 1024 625 2401 343 729 125 512 25 49 243 32 16 19683 8)92 6561 4096 15625 125 729 1024 64 25 343 49 32' 81 16 
216 Гл. 6. Вычисления в суррогатиых полях Для вычислений в кольце Z/(q) необходимо знать вычеты по модулю д, которые в общем случае вычисляются не столь просто, как в случае простых чисел Ферма или Мерсенна. Это является одним из основных недостатков числовых преобразований Ше- вилла; возможным выходом является предварительное вычисление и табулирование вычетов по модулю простых чисел. 6.8. Алгоритм Препараты Сервейта Так же как вычисления в поле комплексных чисел вкладыва- ются в поля Галуа, вычисления в полях Галуа можно вложить в поле комплексных чисел. Для вычисления свертки в GF (q) можно воспользоваться комплекснозначным БПф-алгоритмом. Предположим, что в поле GF (q), где q равно степени простою числа р, требуется вычислить произведение з (х) = g (х) d (х). Представим элементы поля 6Р (q) в виде многочленов; тогда произведение элементов поля в GF (q) можно интерпретировать как свертку многочленов по модулю неприводимого многочле- на р (х). Вычисление всех вычетов по модулю этого неприводи- мого многочлена можно отложить до тех пор, пока не будут вычислены все свертки. Исходная свертка при этом превращается в двумерную свертку. Запишем элементы g; и d~ поля GF (q)' над простым полем GF (p) в виде многочленов т=~ m ‒ f ~ч 1 Я,= ~~~~Я„2 и Й,= ~Ипата 1=0 l~ si ЕВАь= й=а л ‒ t m ‒ f ng ‒ g ~'.~ gudg~у pz + (шой p)(mod p (х))у ~о с-а ю'=а где р характеристика поля, а р (х) простой многочлен сте- пени т. Определим двумерную целочисленную свертку равенством л=I tn ‒ g sjp = Е Е gkk.d(t~>п~ » &=Я k' Ö E=O,..., и ‒ 1, k' =О, ..., 2т ‒ 1. где о = р, а g~~ и d;~ обозначают неотрицательные целые числа, не превосходящие р 1. Тогда линейная свертка векторов g и d равна 
217 Задачи Задачи 6-1. а. Построить логические схемы, реализующие операции умножения и сло- жения s поле Мерсенна GF (7). Позволяет ли представление О в двух видах получить какое-то преимущество? Каждый элемент такой двумерной таблицы представляет собой число между 0 и р 1. Тогда 2m ‒ 1 sg = Д'., з«z' (modр) (modp(x)). g г~) Вычисления вычетов делаются на последнем этапе вычислений, причем сначала вычисляются вычеты целых чисел по модулю р, 2m ‒ ! а затем вычеты многочленов sq (z) = f s«z' по модулю много- l'=0 члена р (х). Сложностью вычисления вычетов можно пренебречь по сравнению со сложностью вычисления двумерной свертки. Двумерную свертку можно вычислять в любом подходящем сурро- гатном поле, например в поле вещественных или поле комплекс- ных чисел. Вместо поля комплексных чисел можно использовать как сур- рогатное поле любое подходящее конечное поле, даже с харак- теристикой, отличной от характеристики исходного поля. На- пример, для свертки последовательностей над GF (2), длина п которых меньше, чем половина простого числа Ферма 2 + 1 (при rn = 2, 4, 8, 16 соответственно 2 + 1 = 5, 17, 257, 65537), можно использовать поле GF (2 + 1). Для этого доста- точно проинтерпретировать последовательность над GF (2) как последовательность целых чисел, которые принимают только зна- чения, равные 0 и 1. Длина линейной свертки таких целочисленных последовательностей, хотя и больше и, но не превосходит 2, и, следовательно, эту линейную свертку можно вычислять как цик- лическую свертку в поле GF (2 + 1) с последующим приведе- нием целых чисел по модулю 2. Для вычисления циклической свертки в поле GF (2 + 1) можно воспользоваться любым допустимым быстрым алгорит- мом. Так как в поле GF (2 + 1) существует преобразование Фурье длины и, равной любому делителю числа 2, то одной из возможных схем вычислений является использование преобразо- вания Фурье и теоремы о свертке. Преобразование фурье при этом можно вычислять по БПФ-алгоритму Кули Тычки, содер- жащему (п/2) log, п умножений и столько же сложений в поле GF (2 + 1). Далее, так как элементы поля CrF (2~ + 1) допу- скают запись в виде (т + 1)-разрядных двоичных чисел, то слож- ность такого алгоритма свертки сравнима со сложностью в поле комплексных чисел. 
218 Гл. 6. Вычисления в суррогатных полям 6.2. 6.3. 6.4. 6.6. 6.6. 6.7. 6.8. 6.9. 6.10. 6.11. б. Построи'пь логические схемы, реализующие операции умножения и сло- жения в поле ферма GF (5). Позволяет ли представление чисел О, 1 и 2 получить какие-то преимущества? l г~ а. Проверить, что если ядро преобразования Фурье в поле GF(2 + 1} равно 2, то все необходимые умножения на самом деле являкггся умноже- ниями на степени двойки и могут бысть заменены циклическими сдвигами. б. Элемент в = 8 в поле GF (193) имеет порядок, равный 32, и, следова- тельно, может быть выбран в качестве ядра 32-точечного преобразования Фурье в этом поле. Можно ли как-то осмысленно утверждать, что все умно- жения такого преобразования являются умножениями на степени двойки и могут быть заменены циклическими сдвигами? Порядок элемента 2 в кольце У/(15) равен четырем. Выписать (4Х4)-ма- трицы 4-точечного преобразования фурье и ему обратного преобразования. Показать, что эти матрицы не ведут себя стандартным для матриц преобра- зования фурье образом. Какие свойства оказываются неверными? Почему? а. Чему равен порядок элемента 2 в простом поле Ферма GF (17)? б. Описать 8-точечный БПФ-алгоритм Кули ‒ Тычки по основанию два для поля GF (17). Сколько умножений содержит этот алгоритм? в. Описать 4-точечный БПФ-azrropam Кули ‒ Тычки по основанию два, ядром которого является элемент 4. г. В поле бг (17) имеет место равенство 17 2 = 1l. Является ли 11 при- митивным элементом поля? Описать 16-точечиый БПФ-алгоритм Кули‒ Тычки для поля GF (17) с минимальным числом умножений. Пусть О= (28+ 1) (2'+ 1). Чему равен порядок элемента 2 в кольце z/(д)? Число 31 является простым числом Мерсенна. а~ Чему равен порядок элемента 2 в поле GF (31)? б. Выписать 5-точечный БПФ-алгоритм Винограда в поле GF (31). в. В поле GF (31) элемент ‒ 1 не имеет квадратного корня. Чему равен порядок элемента 1+ у в расширении GF (312) поля? г. Чему равна наибольшая допустимая длина преобразования Фурье в поле GF (31~)? д. Описать структуру 8-точечного БПФ в поле GF (312). Показать, что порядок элемента 1+ у в поле комплексных чисел Мер- сенна GF ((21~ ‒ 1)~) равен 136. Это означает, что в данном поле существует преобразование Фурье длины 136. Описать структуру быстрого алгоритма вычисления этого преобразования. Построить 5-точечный БПф-алгоритм Винограда для поля GF (41). (Ука- зание: чему равен порядок элемента 2 в поле GF (41)?) В поле GF ((2~> ‒ 1)в) существует 17-точечное преобразование Фурье. а. Описать алгоритм вычисления этого преобразования с помощью 16-то- чечного преобразования Фурье в поле комплексных чисел. Выписать блок- схему такого вычисления. б. Сколько потребуется веществеиных умножений и сложеиий, если 16-то- чечное преобразование Фурье в поле комплексньл чисел вычислять с по- мощью малого БПФ-алгоритма Винограда? в. Каковы должны быть разрядность и процедура округления для того, чтобы комплексные вычислеиия приводили к правильному ответу в поле GF ((21~ ‒ 1)2')? В поле комплексных чисел имеется 17-точечное преобразование Фурье. а. Описать, как это преобразоваиие может быть вычислено с помощью двух 16-точечных преобразований в поле комплексных чисел Мерсенна. б. Сколько умножений и сложений в суррогатном поле потребуется при таком вычислении? а. Показать, что многочлен хе2 ‒ 1 имеет в поле GF (2'+ 1) 32 различ- иыл корня. 
219 Замечаиия б. Сколько умножений обшего типа содержит 32-точечный алгоритм Вино- града вычисления циклической свертки в расширении QF ((2га + 1) ) поля GF (2~6+ 1)? в. Сколько умножений общего типа требуется для вычисления 32-точечной циклической свертки в QF ((21а + !)з) при использовании БПФ и теоремы о свертке? г. Объяснить взаимосвязь между и. (б) и (в) задачи. 6.12. Выпишите детально 16-точечный БПФ-алгоритм В инограда для поля GF (17) и его расширений. Сколько требуется нетривиальных умножений? Замечания Преобразования Фурье рассматривались в произвольных полях, но тот факт, что вещественную свертку можио вычислять, переходя в поле целых чисел по модулю простых чисел Мерсенна или простых чисел Ферма, впервые отметил Рейдер [1] (1972). Это погружение было разработано им в связи с приложением к цифровой обработке сигналов, как существенно упрощающее необходимые вычисления. Агарвал и Баррас [2] (!973) также описали применение числовых преобразований Ферма и разработали их структуру [3, 4] (1974, 1975). Ше- вилла [11] (1978) рассмотрел возможности использования других простых полей. Некоторые вопросы реализации этих числовых преобразований были рассмотрены Макклелланом [5] (1976) и Лейбовицем [6] (1976). Предложение использовать комплексные расширения полей Галуа для вычисления комплексных сверток сделали Рид и Труонг [7] (1975) и Нуссбаумер [8] (1976). Приведенная нами табл. 6.1 основана на работе Рида и Труонга. Алгоритмы свертки в полях Галуа малой характеристики могую отличаться от алгоритмов свертки в поле вещественных чисел Алгоритмы свертки в полях малой характеристики рассмотрел Райс [9] (1980), и мы воспользовались не- которыми ero примерами. Идея использования суррогатных полей принадлежит Препарате и Сервейту [10] (1977), которые вложили вычисление свертки в полях Галуа в поле комплексных чисел. Использование китайской теоремы об остатках для представления данных (в противоположность использованию для переупорядочивания индексов) хорошо известно; можно сослаться на учебник Сабо и Танаки [12] (1967) или более не- давнюю работу Дженкинса и Леона [13] (1977). 
Глава 7 БЫСТРЫЕ АЛГОРИТМЫ И МНОГОМЕРНЫЕ СВЕРТКИ Подобно тому, как определяется одномерная свертка, можно определить многомерную свертку. Для многомерных таблиц дан- ных можно дать полезные во многих отношениях определения линейной и циклической сверток для любого представляющего интерес поля вычислений. Многомерные таблицы данных и много- мерные свертки создаются чскусственным образом как часть алгоритмов обработки одномерных векторов данных. Многомер- ные таблицы данных возникают также естественным образом во многих задачах цифровой обработки сигналов, в частности, в задачах обработки изображений, например фотографий, полу- ченных со спутников, и медицинских изображений, в том числе рентгенограмм, в задачах сейсмографии и электронной микро- скопии. Глава начинается с гнездового метода построения быстрых алгоритмов вычисления многомерных сверток из быстрых алго- ритмов для одномерных сверток. Затем рассматривается способ построения быстрых алгоритмов вычисления одномерной свертки путем временного отображения в многомерную свертку, про- цедура, известная под названием алгоритм Агарвала Кули вы- числения свертки. Алгоритм Агарвала Кули для одномерной циклической свертки представляет собой мощное дополнение к развитым в гл. 3 методам, которые становятся чрезмерно гро- моздкими для длинных сверток. Он позволяет строить алгоритмы для длинных сверток из коротких сверток. Наконец, последняя половина главы содержит методы, развитые специально для вы- числения двумерных сверток. 7.1. Гнездовые алгоритмы свертки Двумерная свертка представляет собой операцию, задаваемую на паре двумерных таблиц. Ее можно представлять себе как опе- рацию фильтрации, в которой одна двумерная таблица представ- ляет собой двумерный фильтр, через который пропускается вто- рая двумерная таблица и на выходе которого формируется выход- ной двумерный сигнал. Такого сорта операции возникают в зада- чах обработки изображений. 
22l 7.l. Гнездовые алгорнтмы сверткн Заданную (N' x N")-таблицу й=(И~,-, i'=О,..., N' ‒ 1; i"=О, ..., N" ‒ 1) назовем таблицей данных, а (L' xL")-таблицу g=(gg.p, 1'=О, ..., L' ‒ 1; i"=О, ..., L" ‒ 1) 1) x(L" + назовем таблицей фильтра, и вычислим ((L' + N' + N" 1))-таблицу сигнала i' =О, ..., L'+N' ‒ 2, '"=О,..., L +N" ‒ 2 задавая правила вычисления ее элементов равенствами ‒ ‒ 1'=О, ..., L'+N' ‒ 2, Й', 1 = Z g gr ‒ Й'. e ‒ й'Ай'. Й" е П к а ютюсь 1ъ hi" ‒ 1 А (У) = Z А'. ю-У". Е"=о или как многочлен от двух переменных е'=о е"=о Аналогичные обозначения можно ввести для g и s: 1'" ‒ 1 L+h ‒ 2 f // %~ irr gg (ó) = Х gg'ë"ó ° sg.(y) = Ь s( l-y е"=о е"=о L' ‒ 1 L" ‒ 1 Еи it g (x, у) = ~, g g; ;-у .х , i. о е"=о L'+N' ‒ 2 L"+N" ‒ 2 Е- Е' з(х, у) = g g з~.<-у х . i' о е"=о 1) Так определенная двумерная свертка в дальнейшем часто называется (N'>< N")-сверткой; ее не следует путать с определенной в гл. 3 линейной (L X N)- сверткой. ‒ Прим. перев. Это определение можно непосредственно перенести и на свертки большей размерности. Однако мь1 ограничим рассмотрение в ос новном двумерными ') свертками, так как все идеи легко обоб- щаются на случай произвольной размерности. Двумсрная свертка может быть выписана в терминах много- членов; полиномиальные обозначения можно вводить как по лю- бому из измерений, так и по обоим измерениям одновременно. Таким образом, таблицу д можно записать или как вектор много- членов, 
222 Гл. 7. Быстрые алгоритмы и многомерные свертки Двумерная <;рертка в этих обозначениях может быть записана или как одномерная свертка многочленов, з~с (у) = Z a~ д (у) da~ (у) д'=О или как произведение многочленов or двух переменных, з (х, у) = у (х, у) d (х, у). Двумерная циклическая свертка также может быть выписана в терминах мноючленов, а именно, з(х, у) = g (>, у) d (х, у) (mod х" 1) (mod у"" 1}, где и' не обязательно равно и". Для двумерной циклической свертки выполняется теорема о свертке. Если 3Э и б обозначают двумерные преобразования Фурье таблиц d u g соответственно и Sk д- ‒ ‒ бд д-Dk, k-, то $ является двумерным преобразо- ванием Фурье таблицы s. Следовательно, для вычисления дку- мерной циклической свертки можно пользоваться двуь ерным БПФ-алгоритмом. Можно, конечно, пользоваться и прямыми мь тодами вычисления двумерных сверток. Имеется много способов прямого вычисления двумерной ли- нейной или циклической свертки. Простейший путь состоит в том, чтобы попытаться вычислить ее как последовательность одномер- ных сверток сначала по строкам, а затем по столбцам. Заметим, однако, что в формуле ~ч" ‒ у л- ‒ i gvв = Х Хй» ~«йа] k' 0 k" 0 выделенная в квадратные скобки линейная свертка по k" должна быть вычислена для всех i' и k'. Понять двумерную свертку легче, если выписать ее в виде свертки многочленов, Pf Ó sg (у) = f д „.(y)dä (у) 1' =О, ..., L'+N' ‒ 2. k 0 Из этой формулы ясно видна реализация двумерной свертки как L'jV' произведений многочленов, каждое из которых, в свою очередь, является сверткой, требующей ЫЧ" умножений. Всего, таким образом, получаем L'L"N'N' умножений, что, конечно, недопустимо для больших задач, так что нужны быстрые алго- ритмы. Хотя рассмотренные в гл. 3 алгоритмы свертки строились над полями, они на самом деле выполнимы и в некоторых кольцах, в частности, в кольце многочленов. Следовательно, свертка много- 
7.1. Гнездовые алгоритмы свертки членов может быть вычислена любым из этих быстрых алгоритмов. Сложение в этих алгоритмах становится сложением многочленов, а умножение умножением многочленов. Эти последние умно- жения, в свою очередь, являются свертками и могут быть вы- числены с помощью быстрых алгоритмов свертки. Таким образом, мы получаем способ вычисления двумерной свертки, состоящий во включении одного быстрого алгоритма одномерной свертки в другой быстрый алгоритм одномерной свертки. Все сказанное здесь относительно линейной свертки, конечно, относится и к циклической свертке и к вычислению произведения многочленов по модулю многочлена т (х). Например, для вычисления двумерной циклической (4X4) свертки воспользуемся алгоритмом 4-точечной циклической сверт- ки в виде, представленном на рис. 3.14: s = С [(Bg) (Ad) l. Эгот алгоритм содержит пять умножений и 15 сложений. Следова- тельно, применение его для циклической свертки многочленов потребует пяти умножений многочленов и 15 сложений много- членов. Каждое умножение многочленов само является сверткой, и, следовательно, для его вычисления по этому алгоритму потре- буется пять вещественных умножений и 15 вещественных сложь ний. Таким образом, для вычисления двумерной циклической (4X4)-свертки потребуется в данном алгоритме 25 вещественных умножений и 135 вещественных сложений. Эта процедура пред- ставлена на рис. 7.1 для вычисления циклической (и' х и")-свертки. Как показано на рисунке, подпрограмма должна знать индекс k" и иметь доступ к заранее вычисленной таблице бд ~". Используя последовательные операции над двумерными таб- лицами, этот составной алгоритм можно представить в виде еди- ного алгоритма. Сначала умножим строку таблицы d на ма- трицу A", а каждую строку таблицы g на матрицу В". Затем умно- жим каждый столбец первой новой таблицы на А' и каждый стол- бец второй новой таблицы на В'. Это даст нам две таблицы раз- мера M (п') XM (n'). Перемножим покомпонентно эти таблицы. Полученную таким образом (М (и') х М (n"))-таблицу преобразуем к нужной выходной таблице s размера и'хп", умножив сначала каждый ее столбец на С', а затем каждую строку полученной таблицы на С . Яа рис. 7.2 для сравнения выписаны эта процедура и про- цедура, основанная на двумерном преобразовании Фурье и теореме о свертке. Ясно, что рассматриваемая процедура является обобщь нием процедуры, основанной на двумерном преобразовании Фурье. Теперь «преобразование» состоит только из сложений, но размер промежуточной таблицы равен не и' 'к и", à M (п') х XM (n ). Гнездовой алгоритм является более общим и в другом отно- шении.. 0H позволяет вычислять двумерное произведение много- 
224 Гл. 7. Быстрые алгоритмы и многомерные свертки Ввод вектора d коэффициентов многочлена d(~) = >~(~) Ввод вектора многочленов 4<» Вьюход Рис. 7.1 ° Алгоритм двумерной циклической свертки. членов по модулю любых многочленов т' (х) и т" (у), а метод, основанный на преобразовании Фурье, позволяет вычислять про- изведение только по модулю х"' 1 и у"" 1. Характеристики гнездового алгоритма задаются числом M (и' Х X и") необходимых умножений и числом А (n'хп") необходимых сложений. Легко видеть, что полное число умножений равно M (и' xn") = M (п') M (n"). Аналогично, из рис. 7.1 легко увидеть, что А (n' xn") = и'А (и") + М (n") А (n'). Полное число умножений не зависит от того, какой из делите- лей назван и', а какой и . Но число сложений зависит от такого выбора, и поэтому необходимо просматривать оба варианта. На- 
7.l. Гнездовые алгоритмы свертки Вьыод Выход eepmaa(mod х ‒ 1) Свертка(тод т~~Я (mod y" ‒ 1) (33gd т."( y)) Рис. 7.2. Сравнение способов вычисления двумерной свертки. нример, двумерную циклическую (7 х 9)-свертку можно вычислять с помощью одномерных алгоритмов с характеристиками М (7) = 16, А (7) = 70, M (9) = 19, А (9) = 74. Полное число умножений при этом равно 304, а полное число сложений равно 1848 или 1814 в зависимости от того, чему вы- ~рано равным и'. Вход в двумерную свертку в частовной области Вход в гнездовой алгорцшм свертки Винограда 
226 Гл. 7. Быстрые алгоритмы и многомерные свертки 7.2. Алгоритм Агарвала 1(ули вычисления свертки Алгоритм Агарвала Кули представляет собой метод преоб- разования и'и"-точечной одномерной циклической свертки в дву- мерную циклическую (и' Х и")-свертку прн условии, что числа и' и и" взаимно просты. Его можно использовать для того, чтобы скомбинировать алгоритм Винограда вычисления и'-точечной цик- лической свертки, содержащий M (n') умножений, с алгоритмом Винограда вычисления и"-точечной циклической свертки, содер- жащим М (n') умножений, и построить алгоритм вычисления п'и"-точечной циклической свертки, содержащий N (п') N (n") умножений. В основе алгоритма Агарвала Кули преобразования одно- мерной циклической свертки в многомерную циклическую свертку лежит китайская теорема об остатках для целых чисел. Этим алго- ритм отличается от алгоритма Винограда, в котором исполь- зуется китайская теорема об остатках для многочленов. Он не обеспечивает столь сильного уменьшения числа умножений, как алгоритм Винограда вычисления свертки, но, с другой стороны, он не имеет и тенденции к чрезмерному росту с ростом и числа сложений, как в алгоритме Винограда. Кроме того, он лучше структурирован. Если и велико, то алгоритм Агарвала Кули более управляем, так как может быгь разбит на подпрограммы. Для построения хороших алгоритмов свертки надо использовать алгоритм Агарвала Кули разбиения длинной свертки на корот- кие циклические свертки, для вычисления которых использовать затем эффективные алгоритмы Винограда вычисления коротких циклических сверток. Алгоритм Агарвала Кули строится на'трех идеях. Сначала одномерная циклическая свертка с помощью китайской теоремы об остатках (К. Т. 0.) для целых чисел преобразуется в много- мерную циклическую свертку; затем вдоль каждой координаты используется алгоритм Винограда вычисления короткой свертки; и, наконец, для сборки вместе полученных преобразований ис- пользуется теорема о кронекеровском произведении для матриц. Пусть заданы d; и g~ для ~ = О, ..., и 1, и нам надо по- строить компоненты циклической свертки 1=0,..., и ‒ 1, где двойные скобки в индексах обозначают вычисление по мо- дулю и. Мы хотим преобразовать одномерную свертку в двумерную. Для этого воспользуемся китайской теоремой об остатках, позво- 
7.2. Алгоритм Агарвала ‒ Кули вычислення свертки Явумерная вникли геская О свертка l(T. о Рис. 7.3. Иллюстрацня алгоритма Агарвала ‒ Кули. ляющей отобразить одномерный вектор входных данных в дву- мерную таблицу и выходную двумерную таблицу п одномерный вектор. Заменим индексы i и Й парами индексов (i', )") и (Й', й") по правилу i' = i (mod и'), i" = i (п)оД и'~, Й' = k (mod n'), Й' = Й (mod n"). Занимаясь китайской теоремой об остатках, мы уже видели, что старые индексы восстанавливаются по новым согласно формулам ! i = N"и"i' + N'и')" (mod и), )' = О, ..., n' ‒ 1, i"=О, ..., n" 1, Й = И"и"И + N'n'Ê (mod n), Й' = О, ..., n' 1, k"=О,...,n 1, где целые числа N' и N" определяются равенством N'n' + N"n" = 1. Это то же самое соответствие между компонентами вектора и ком- понентами двумерной таблицы, которое было использовано в алго- ритме Гуда Томаса. Описанное отображение иллюстрируется рис. 7.3. Свертку n ‒ 1 можно записать в виде n' ‒ 1 n" ‒ 1 аи"и~)'+лГ'и'й" = f ~.~ gN"è" (l' ‒ )а')+N'è' <й ‒ и)г1И"и"3а'+N'è'~ фУ О ЯювО 
228 Гл. 7. Быстрые алгоритмы и многомерные свертки Число Число Число вещесвенных вещественных вещественных умножении умножений сложений на точку М(п) A(и) М(л)/л Число вещественщог сложений на точку Д(п)/л Длино л Рис. 7.4. Характеристики алгоритма Агарвала ‒ Кули вычисления свертки. Двойное суммирование по Й' и Й" эквивалентно одинарному сум- мированию по k, так как затрагивает одни и те же члены. Опреде- лим двумерные переменные, которые назовем также d, g и з, задавая их равенствами d у/ kФ ',kþ dNÂýnèkВ'+N эnУ'kè к ‒ 0, ... , и' ‒ 1, k" =0, k' =0, k" =0, k' =0, , и" ‒ 1, gk â kþi ‒ ЯД!юnþkã+ N ~ n~ k â °, и' ‒ 1, , и" ‒ 1, . ° ., и' ‒ 1, Sk k" = SAi"~k.+N пт, k" =0, ..., и" ‒ 1. В новых переменных свертка записывается в виде n ‒ 1 n" ‒ 1 Й . к- = Е Е Кцк ‒ a'>>. цк- a"»À I-, k' 0 k" 0 где первые и вторые индексы вычисляются соответственно по мо- дулю и' и и". Теперь это двумерная циклическая свертка. Тем не менее, мы пока не получили никакого уменьшения сложности вычислений. Для каждой пары индексов (i', ~") каждое число dk- д- на что-то умножается, так что пока полное число умно- жений равно (п'n")~. Для того, чтобы сделать алгоритм эффективным, надо восполь- зоваться развитыми в предыдущем разделе методами быстрого 18 20 24 30 36 48 60 72 84 120 180 210 240 360 420 504 840 1008 1260 2520 38 50 80 95 132 200 266 320 560 950 1280 1056 2280 3200 3648 7680 10032 12160 29184 184 230 272 418 505 900 1! 20 1450 2100 Ю96 5470 7958 10176 14748 20420 26304 52788 71265 95744 241680 2 I I 2 50 2 33 2 67 2 64 275 3 33 3 69 3 81 4 67 5 28 6 10 4 40 633 7 62 7 24 9 14 9 95 965 11.58 !О 22 I l 50 !! ~З I3 93 14 03 !8 75 IS 67 20 14 25 00 25 80 30 39 37 90 42 40 40 97 48 62 52 19 62 84 70 70 75 99 95 90 
7.2. Алгоритм Агарвала ‒ Кули вычнсления свертки вычисления двумерной свертки. Алгоритм Агарвала Кули вы- числения свертки состоит в переходе от одномерных векторов к двумерным таблицам, в применении быстрых алгоритмов дву- мерной свертки и в обратном переходе от двумерной таблицы к одномерному выходному вектору. Характеристики и-точечного алгоритма Агарвала Кули поды- тожены в таблице на рис. 7.4. Полное число сложений и умноже- ний определяется гнездовым методом построения алгоритмов дву- мерной циклической свертки из эффективных одномерных алго- ритмов составляющих длин и' и и" по формулам А (п) = и'А (п') + М (п") А (п'), M (п) = М (п') М (п'). Из этих формул видно, что число умножений в малых алго ритмах играет существенно более важную роль, чем число сло- жений. Например, предположим, что алгоритм 504-точечной цик- лической свертки строится из 7-, 9- и 8-точечных циклических сверток с М (7) = 16, А (7) =- 70, М (9) = !9, А (9) = 74, М (8) = 14, А (8) = 46 или М (8) = 12, А (8) = 72. Может показаться, что алгоритм 8-точечной циклической свертки с 14 умножениями лучше, так как он содержит всего на два умно- жения больше, но зато на 26 сложений меньше. Однако включе- ние его в алгоритм 504-точечной свертки приводит к удивитель- ным результатам: М (504) = 4256, М (504) = 3648, А (504) = 28 240 А (504) = 26 304. или Таким образом, использование в 504-точечном алгоритме 8-точеч ного алгоритма с 12 умножениями приводит к уменьшению и числа умножений, и числа сложений. Выполнять вычисления надо следующим образом. Сначала каждый столбец двумерной таблицы умножается на матрицу А". Затем начинается вычисление произведений многочленов. Эгот процесс начинается умножением каждой строки двумерной таб- лицы на матрицу А'. Затем каждая строка покомпонентно умно- жается на вектор констант, так что и вся двумерная таблица умножается покомпонентно на таблицу констант. Умножение многочленов завершается умножением каждого столбца на ма- трицу С', а затем каждой строки на матрицу С". 
230 Гл. 7. Быстрые алгоритмы и многомерные свертки Эта последовательность вычислений может быть представлена в более компактном виде, если собрать воедино два алгоритма циклических сверток. Запишем входную двумер ную таблицу в виде стека по столбцам, представив ее одномерным входным массивом. Аналогично запишем и выходную двумерную таблицу, вытянув ее в выходной одномерный массив. Тогда алгоритм примет вид s = ((С х С') (G' x С") (A' х А")) d. Аналогично, можно выходную двумерную таблицу записывать в виде одномерного массива, считывая ее по строкам. Тогда алго- ритм запишется даже в более симметричной форме s = ((С' х С") (б' х С") (А' х А")) Й, где компоненты вектора s выписаны в другом порядке, хотя и остаются неизменными. В любом из случаев, вводя очевидные обозначения для матриц, можно записать s = CGAd. Есть еще одна последняя деталь, о которой надо позаботиться. компоненты векторов s u d выписаны не в своем естественном порядке. Сначала они выписывались в двумерную матрицу вдоль главной диагонали, а затем в виде стека столбцов (или строк). Для того, чтобьг вернуть компоненты на их естественное место, надо переставить столбцы матрицы А и строки матрицы С. В качестве примера построим алгоритм 12-точечной циклично ской свертки. Воспользуемся следующим 3-точечным алгоритмом циклической свертки: Gll 0 ! О ‒ 1 ‒ ‒ г о где 1 Э Э о 1 ‒ 1 g0 gi l Э 3 
7.2. Алгоритм Агарвала ‒ Кули вычисления свертки и следующим алгоритмом 4-точечной циклической свертки 1 t t 0 ‒ l t ‒ 1 1 ‒ t 0 t 1 ‒ 1 0 t G2 G( S2 1 0 ‒ t 0 0 1 0 ‒ 1 1 ‒ 1 ‒ 1 1 0 где I 4 О l К2 1 l 2 2 Gj I 1 2 2 I 2 G4 Сначала выпишем !2 коэффициентов фильтра в виде двумерной (3X4)-таблицы, располагая их вдоль главной диагонали, и вытя- гивая затем их в стек по столбцам: go go g4 gl g2 gs g9 gl go g9 ga 82 g4 g l g lO g2 «1О gS 85 82 g» g3 gll glI Тогда диагональная (20x20) матрица С в терминах кронекеров- ского произведения записывается равенством g0 g4 О -1 g9 ° О Gl gII G0 Gl ~2 ! ! ! 4 4 4 ! ! I 4 4 о ‒ о l I ! l 2 2 2 ! ! 1 2 2 2 1 l l 1 1 ‒ l 1 ‒ 1 I 1 ‒ 1 ‒ 1 g$ Яе Яю g2 ~о dl d2 д! 
232 Гл. 7. Быстрые алгоритмы и многомерные сверткн Ту же самую конструкцию надо применить к !2 компонентам входного вектора данных; выпишем кронекеровскую матрицу А' х А" полностью: о. D, 0) Рд 1 I 1 о о I ‒ 2 ! 1 1 о 1 I ) -г I ! ‒ 1 1 1 1 о I -I 1 -2 о -2 1 1 1 I — I †) О -1 -1 0 О ! ‒ ) 0 ‒ 1 ‒ 1 1 1 ! 1 О о 1 -2 ‒ ! ‒ 1 ‒ ) о о 1 I ‒ 2 ‒ 1 ‒ ) ‒ 1 -1 2 1 -1 -1 -1 -1 -1 ‒ 1 о о ‒ ‒ о ‒ о ‒ 2 ‒ 1 ‒ ! 2 ‒ 1 -) 2 О ‒ 1 ‒ 1 ‒ 1 О ‒ I О 1 О О ‒ 1 I Π†) -I 2 О О О О О О о о о о о о — I -1 †) ‒ I О 1 О ‒ 1 I ‒ 1 ‒ I 2 О 0 О О О О О. О % о, Р) D) D) I I 1 О ‒ I о dg dg ~]~1 О ‒ 1 0 1 ‒ 2 1 1 1 ‒ 1 ) ‒ 1 †) О ‒ 1 О ) 1 1 ‒ 2 I ‒ I 1 I О -1 о 1 ‒ I d) dg -2 ‒ ) ‒ I ‒ 1 I ‒ 1 — I ‒ 1 0 ‒ 1 †) О ‒ 1 †! ‒ 2 — I ‒ 1 ‒ 2 I ‒ 1 I О 2 ‒ ! о 1 О 1 О 2 0 О О ‒ 1 0 О 0 ‒ ) 0 -I О О ‒ I О О О О О -1 О 1 О ‒ ) ‒ 1 О 0 ‒ 1 О