Текст
                    Fast Algorithms
for Digital Signal Processing
Richard E. Blahut
Addison-Wesley Publishing Company
Reading, Massachusetts Menlo Park, California
Wokingham, Berkshire Amsterdam Don Mills, Ontario Sydney

Е Блейхут БЫСТРЫЕ АЛГОРИТМЫ ЦИФРОВОЙ ОБРАБОТКИ СИГНАЛОВ Перевод с английского И. h\ Грушко Москва «Мир» 1989'
ББК 32.811 Б 68 УДК 519.725 Блейхут Р. Б68 Быстрые алгоритмы цифровой обработки сигналов: Пер. с англ.—М.: Мир, 1989. — 448 с., ил. ISBN 5-09-001009-2 Книга американского специалиста, посвященная актуальным при- кладным задачам построения быстрых алгоритмов цифровой обработки сигналов (автор известен по его «Теории и практике кодов, контролирую- щих ошибки» (М.: Мир, 1986)). Для ускорения типичных для таких задач вычислений используется организация данных в виде конечных алгебраи- ческих структур (групп, колец, полей), что позволяет применить структур- ные теоремы алгебры и теории чисел. В двух из двенадцати глав книги содержится краткое, но строгое и систематическое изложение соответ- , ствующих разделов математики, как правило, недостаточно известных инженерам-прикладникам. Для математиков-прикладников, программистов, инженеров— раз- работчиков систем обработки дискретных сигналов, студентов и аспиран- тов университетов. 1402030000—130 Б 041 (01)-89 2“89 ББК 32.811 Редакция литературы по математическим наукам ISBN 5-09-001009-2 (русск.) ISBN 0-201-10155-6 (англ.) Copyright © 1985 by Addison-Wesley Pub- lishing Company, Inc. © перевод на русский язык, «Мир», 1989
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ Предлагаемая читателю книга известного американского спе- циалиста в области теории информации и ее приложений Р. Блей- хута посвящена построению быстрых алгоритмов цифровой об- работки сигналов •— вычислительных алгоритмов, повсеместно возникающих в таких приложениях, как все виды связи, радио- локация, радиоастрономия, цифровая голография, медицинская электроника и т. п. Отсутствие подобной книги остро ощущалось многими специалистами в перечисленных областях — конструк- торами информационных систем различного назначения. В част- ности, Р. Блейхут указывает, что он почувствовал ее необходимость во время работы над своей предыдущей книгой «Теория и практика кодов, контролирующих ошибки», в которую ему пришлось вклю- чить несколько специальных глав с описанием алгоритмов бы- строго вычисления преобразования Фурье, которые, конечно, никак не зависят от данного конкретного приложения. (Книга была переведена в 1985 г. на русский язык и быстро разошлась.) Хотя в настоящую книгу вошли и алгоритмы решения тепли- цевых систем уравнений (возникающих в таких приложениях, как линейное предсказание, построение авторегрессионных фильт- ров, теория кодирования и др.), и алгоритмы быстрого поиска по древовидному графу (возникающие, например, при декодировании сверточных кодов), сердцевиной книги являются быстрые ал- горитмы преобразования Фурье и вычисления цифровой свертки (линейной и циклической). В основе таких быстрых алгоритмов лежит специальная орга- низация массивов данных в виде конечных алгебраических струк- тур (групп, колец, полей), что создает предпосылки для приме- нения структурных теорем алгебры и теории чисел. Это позволяет строить практически приемлемые алгоритмы, обеспечивающие работу цифровых процессоров в реальном масштабе времени. К настоящему времени накопился широкий ассортимент различ- ных по своей архитектуре и теоретическим предпосылкам алго- ритмов, но пока инженеры-разработчики и программисты не зна- комы с их теоретическим обоснованием, вопрос о широком ис- пользовании этих алгоритмов остается открытым. Данная книга весьма' удачно ликвидирует образовавшийся разрыв. С одной стороны, в ней в двух из 12 глав дается краткое, но строгое и систематическое изложение необходимых разделов алгебры и элементарной теории чисел, как правило, недостаточно известных инженерам-прикладникам. С другой стороны, в ос- тальных 10 главах дается систематическое и исчерпывающее опи- сание накопленных к настоящему времени быстрых алгоритмов преобразования Фурье, вычисления цифровых сверток и решения
6 Предисловие к русскому изданию систем теплицевых уравнений не только для привычных в ин- женерной практике полей комплексных и вещественных чисел, но и для полей Галуа. Книга несомненно будет полезна широкому кругу читателей — математикам-прикладникам, программистам, инженерам-раз- работчикам систем обработки данных, — а также может быть ре- комендована для включения в программу преподавания матема- тики будущим инженерам-конструкторам систем обработки ди- скретной информации. В. И. Сифоров
ОТ АВТОРА Подобно тому как дети перерастают своих родителей, книги могут выйти за рамки возможностей их авторов. Предлагаемый перевод книги «Быстрые алгоритмы цифровой обработки сигна- лов» является второй моей книгой, вышедшей из умелых рук Инны Грушко, которой я очень благодарен, как и за перевод первой моей книги «Теория и практика кодов, контролирующих ошибки». Мне известно, что не существует «быстрых алгоритмов» переводов, и поэтому я очень ценю тщательную работу над пере- водом и исправление опечаток, допущенных в английском из- дании. Я полагаю, что русские читатели найдут здесь много интерес- ного. Предмет книги, алгебраический по существу, тем не менее ближе к цифровой обработке сигналов, чем к математике. Я на- деюсь, что меня простят за почти полное незнание работ совет- ских авторов в данной области. Р. Э. Блейхут
ПРЕДИСЛОВИЕ В настоящее время цифровая обработка сигналов переживает взрыв. Ее используют повсюду, включая радиолокацию, сейсмо- графию, связь, радиоастрономию и медицинскую электронику. Активно разрабатываются и находят рыночный спрос цифровые процессоры — специализированные цифровые компьютеры для обработки сигналов. Такое широкое использование порождает еще более широкий спрос на цифровые процессоры, применяемые в некоторых случаях в массовых масштабах. Одним из путей удовлетворения этих потребностей является выбор разумно построенных алгоритмов. Вместо того чтобы повы- шать быстродействие процессора от одного миллиона умножений в секунду до пяти миллионов умножений в секунду, можно для некоторых задач попытаться так организовать вычисления, чтобы быстродействия в один миллион умножений в секунду оказалось достаточно. К настоящему моменту имеется хорошо разработанная теория, позволяющая подойти к решению задач с этих позиций. Она хорошо известна теоретикам, специалистам в данной области, но на практике инженеры-конструкторы часто пренебрегают ей, поскольку она пока недоступна в виде цельного учебного курса. Инженер-конструктор должен хорошо знать предмет, чтобы выб- рать алгоритм, нужный в данном конкретном приложении, среди смущающего разнообразия известных быстрых алгоритмов свертки или быстрого преобразования Фурье. Данная книга является результатом курса, прочитанного автором в Корнеллском университете и корпорации ИБМ под названием «Быстрые алгоритмы цифровой обработки сигналов». Курс был построен с расчетом на стажирующихся инженеров- электриков и аспирантов первого года обучения; его целью было воспитание инженеров, которые свободно владеют предметом. Эта же цель является первой в данной книге. Второй целью является формирование широкого взгляда на состояние работ в области быстрых алгоритмов цифровой обра- ботки сигналов, который сможет стимулировать новые работы в будущем. Если собрать воедино все нити, то многое становится более очевидным. Например, перенесение БПФ-алгоритмов Кули—Тьюки, Гуда—Томаса и Винограда в произвольное поле облегчило понимание взаимосвязи между многими последующими идеями. Я думаю, что важно различать быстрый алгоритм, функцию, которую ой вычисляет, и приложение, в котором он используется. Это разные элементы, и, когда их смешивают, они могут терять свою ясность. Таким образом, я настаиваю на том, чтобы отли- чать дискретное преобразование Фурье от быстрого преобразования
Предисловие 9 Фурье. Первое из них является преобразованием, а второе— алгоритмом для вычисления первого. Подобно этому, алгоритм, Витерби не является методом вычисления последовательности максимального правдоподобия; он представляет собой алгоритм вычисления кратчайшего пути на решетке — пути, который в не- которых приложениях будет путем максимального правдоподо- бия, но не обязан быть им. Но и тогда, когда кратчайший путь действительно является путем максимального правдоподобия, не следует смешивать определение максимального правдоподобия с алгоритмом вычисления его пути. В соответствии с этим подхо- дом в данной книге мало обсуждаются возможные приложения; после постановки задачи все внимание уделяется построению хорошего алгоритма ее решения. Обсуждение возможных при- ложений цифровой обработки сигналов следует искать в других источниках. [Тдея написания этой книги возникла во время работы над более ранней книгой «Теория и практика кодов, контролирующих ошибки». Во многих главах этой книги приходилось рассматри- вать быстрые алгоритмы вычислений в конечных полях, хотя по существу- алгоритмы не зависели от выбранного поля. Я почувст- вовал, что стоило бы поместить эти алгоритмы в отдельную книгу, описать их независимо от использования и дополнить многими другими важными в цифровой обработке сигналов алгоритмами. Изложение затрагивает многие области теории вычислений и тео- рии алгоритмов. Однако в первую очередь нас интересуют инже- нерные задачи нахождения лучших алгоритмов цифровой обра- ботки сигналов; асимптотический анализ играет второстепенную роль. В настоящей книге используются разделы математики, которые могут быть незнакомы типичному читателю с инженерным обра- зованием. Поэтому в книгу включен весь необходимый математи- ческий аппарат и строго доказываются все теоремы. Мне представ- ляется, что если этому предмету предстоит стать самостоятельной и зрелой дисциплиной, то вся необходимая математика должна быть частью этой книги; ссылки на другие источники не могут быть адекватной заменой. Инженер не может уверенно овладеть предметом, если ему часто предлагается принять утверждение на веру или обратиться к своей математической библиотеке. Необходимая для построения быстрых алгоритмов математика содержится в гл. 2 и 5. Эти главы можно сначала прочитать бегло, но к ним следует возвращаться по мере необходимости. Одним из недостатков, которые некоторые читатели заметят в книге, является недостаточность рекомендаций по практиче- скому использованию алгоритмов. Такие темы, как длина машин- ного слова, погрешность округления и время работы алгоритма А на компьютере В, вообще не рассматриваются. Это сознательное
10 Предисловие решение вызвано тем, что я не столь мудр, чтобы делать широкие обобщения по этим вопросам. В немногих встречавшихся мне исследованиях на эти темы всегда рассматривались узко сформу- лированные задачи, и я не доверяю любому общему выводу, сде- ланному на основе имеющихся данных. Мне кажется, что конструк- тору следует решать эти вопросы в контексте конкретной задачи и непосредственно изучать литературу, чтобы узнать, как посту- пают в аналогичных случаях другие конструкторы. Среди рассматриваемых в настоящей книге алгоритмов многие уже широко используются в практической деятельности. Другие станут важны в будущих приложениях, когда цифровая обработка сигналов будет более- разнообразной и широко применяемой. Некоторая часть, возможно, никогда не станет полезной. Я стре- мился дать широкий обзор; какие из методов окажутся практи- чески важными, предстоит решить инженерам-конструкторам в следующие несколько десятилетий. Сердцевиной книги являются описываемые в гл. 3 и 7 алго- ритмы циклической свертки и описываемые в гл. 4 и 8 алгоритмы быстрого преобразования Фурье. В гл. 7 и 8 описываются много- мерные аналоги алгоритмов гл. 3 и 4 соответственно, и при же- лании их можно читать сразу после этих глав. Изучение одномер- ных алгоритмов свертки и преобразования Фурье завершается лишь в контексте многомерных задач. Главы 2 и 5 представляют собой математические введения; некоторые читатели, возможно, предпочтут пользоваться ими как приложением, обращаясь к ним лишь по мере надобности. Главы 6 и 9 следует читать отдельно, следом за гл. 3 и 4. Главы 10, 11 и 12 в основном независимы; каждую из них вполне можно читать независимо от остального материала .книги.
БЛАГОДАРНОСТИ Тем, что я написал данную книгу, я больше всего обязан Шмуэлю ВиИЪграду. Без его существенного вклада в рассматривае- мую область она была бы бесформенной и намного более короткой. Он щедро уделял мне время, проясняя многие моменты и просмат- ривая первоначальные наброски. Статьи Винограда, а также книга Нуссбаумера являются источниками большей части материала, обсуждаемого в этой книге. Книга не достигла бы своего нынешнего уровня без неодно- кратных рецензирований и критики. Я особенно признателен профессору Б. В. Диксону за несколько чрезвычайно подробных рецензий, которые сильно улучшили ее качество. Я также при- знателен профессору Тоби Бергеру, профессору К. С. Баррасу, профессору Дж. Гибсону, профессору Дж. Г. Проакису, про- фессору Т. Б. Парксу, доктору Б. Райсу, профессору И. Суги- яме, доктору В. Вандеркулку и профессору Дж. Вергезе за по- лезную критику. Книга не была бы написана без поддержки ком- пании «Интернейшнал Бизнес Машинз». Я глубоко благодарен ИБМ за эту поддержку, а также Корнеллскому университету за предоставленную возможность апробации первого варианта рукописи с помощью курса лекций. Самую важную поддержку мне оказала моя жена Барбара, без помощи которой эта книга никогда не была бы написана.
Глава 1 ВВЕДЕНИЕ Вычислительные алгоритмы встречаются повсеместно, и эф- фективные варианты таких алгоритмов весьма высоко ценятся теми, кто ими пользуется. Мы рассматриваем в основном только некоторые типы вычислений, а именно те, которые связаны с циф- ровой обработкой сигналов и включают такие задачи, как цифро- вая фильтрация, дискретное преобразование Фурье, корреляция и спектральный анализ. Наша основная цель состоит в описании современных методов цифровой реализации этих вычислений, причем нас интересует не построение весовых множителей в от- водах цифрового фильтра, а организация способа их вычисления при реализации фильтра. Нас также не интересует, зачем кому-то нужно, скажем, дискретное преобразование Фурье; нас заботит только то, как можно вычислить это преобразование эффективно. Удивительно, что для решения столь узко специального вопроса разработана столь глубоко развитая теория. 1.1. Введение в быстрые алгоритмы Любой алгоритм, подобно большинству инженерных устройств, можно описывать либо через соотношение между входом и вы- ходом, либо детально объясняя его внутреннюю структуру. При- меняя к некоторой новой задаче методы цифровой обработки сигна- лов, мы сталкиваемся с заданием алгоритмов через соотношение вход-выход. При заданном сигнале или записанных некоторым образом данных основное внимание сосредоточивается на том, что надо с этими данными сделать, т. е. каков должен быть выход алгоритма, если на его вход подаются те или иные данные. При- мерами такого выхода служат профильтрованная версия входа или его преобразование Фурье. Такая связь входа с выходом в ал- горитме математически может быть записана без детального вы- писывания всех шагов, необходимых для выполнения вычислений. С этой, опирающейся на вход-выход точки зрения, сама задача построения хороших алгоритмов обработки информации может быть трудной и тонкой, но в данной книге она не рассматрива- ется. Мы предполагаем что уже задан алгоритм типа вход-выход,
1.1. Введение в быстрые алгоритмы 13 описанный в терминах фильтров, преобразований Фурье, интер- поляций, прореживаний, корреляций, модуляций, гистограмм, матричных операций и им подобных. Все такие алгоритмы могут быть записаны математической формулой, и, следовательно, вы- числены в прямом соответствии с этой записью. Такую реализа- цию алгоритма вычислений будем называть прямой. Кто-то может быть вполне удовлетворен прямой реализацией алгоритма; в течение многих лет большинство пользователей счи- тали такие реализации удовлетворительными, и даже сейчас некотороые из них так считают. Но с тех пор, как люди начали решать подобные задачи, другие люди начали искать более эф- фективные пути их решения. Именно эту историю мы хотим рас- сказать — историю быстрых алгоритмов. Под быстрыми алгорит- мами мы понимаем детальное описание вычислительной процедуры, которая не является очевидным способом вычисления выхода по данному входу. Как правило, быстрый алгоритм жертвует кон- цептуальной ясностью вычислений в пользу их эффективности. Допустим, что требуется вычислить число А, равное А — ас + ad -|- bo + bd. В том виде, как оно записано, это вычисление содержит четыре умножения и три сложения. Если число А надо вычислять много раз для различных множеств данных, то мы быстро заметим, что А = (а + Ь) (с + d) представляет собой эквивалентную форму, требующую лить одного умножения и двух сложений, так что она предпочтительнее исходной. Этот простенький пример весьма тривиален, но он на самом деле иллюстрирует большинство тем, о которых нам пред- стоит рассуждать. Все, что мы делаем, можно представлять себе как хитроумную расстановку скобок в вычислениях. Но для боль- ших задач быстрые алгоритмы не удается найти простым про- смотром вычислений; их построение потребует весьма развитой теории. Нетривиальным, хотя все еще простым примером служит бы- стрый алгоритм вычисления произведения комплексных чисел. Произведение комплексных чисел (е + if) = (а + ib)- (с + id) можно записать через умножения и сложения вещественных чисел: е = ас — bd, f = ad -|- be. 1 Эти формулы содержат четыре вещественных умножения и два вещественных сложения. Если умножение более трудоемкая one-
14 Гл. 1. Введение рация, чем сложение, то более «эффективный» алгоритм дае*^ равенствами е = (а — b) d 4- а (с — d), f = (а — b) d + b (с + d). В такой, форме алгоритм содержит три вещественных умножения и пять вещественных сложений. Если в серии умножений комп- лексных чисел величины с и d суть константы, то члены с -j- d ис — d также являются константами, и их можно вычислить заранее, независимо от процесса умножения. Тогда для вычисле- ния одного произведения комплексных чисел нам понадобится три вещественных умножения и три вещественных- сложения. Мы обменяли одно умножение на одно сложение. Это может быть целесообразно, только если в конструкции процессора уда- стся воспользоваться этим преимуществом. Некоторые процес- соры сконструированы в расчете на использование четырех ве- щественных умножений для вычисления произведения комплекс- ных чисел; в этом случае преимущества улучшенного алгоритма теряются. Предваряя дальнейшие рассмотрения, задержимся на этом при- мере подольше. Рассмотренное выше умножение комплексных чисел можно представить в виде Г е ] Г с — d I Г a I [J = [d cJLbj’ где вектор la, &]г представляет комплексное число а 4- jb, Гс -dl матрица К I представляет комплексное число с 4- jd и век- тор [a, представляет комплексное число е 4- //. Такое матрич- но-векторное произведение является одной из форм записи про- изведения комплексных чисел. Другой алгорим дается матричным равенством которое можно рассматривать как необычную форму разложения матрицы: сокращенной записи алгоритм дается равенством В Г е 1 Г а 1 Ь j=bdaLj’
1.1. Введение в быстрые алгоритмы 15 где А — матрица размера 3x2, которую мы назовем матрицей предложений; D — диагональная матрица размера 3x3, которая включает в себя все общие умножения алгоритма, и В — матрица размера 2x3, которую мы назовем матрицей постсложений. Мы увидим, что многие из лучших процедур вычисления сверт- ки и дискретного преобразования Фурье могут быть приведены к такому же матричному виду, в котором центральная матрица является диагональной, а стоящие по ее бокам матрицы содержат в качестве своих элементов только 0 и ±1. Структура таких бы- стрых алгоритмов сводится к серии сложений, за которой следует серия умножений, за которой следует другая серия сложений. В качестве последнего примера этого вводного раздела рас- смотрим быстрый алгоритм умножения матрицы. Пусть С = АВ, где А и В — матрицы размеров (/Хп) и (пхт) соответственно. Стандартное правило вычисления матрицы С дается правилами п Си = Е athbu, i = l,/ = 1............. m, ' А=1 и содержит в соответствии с этой записью nlm умножений и (п — — 1) 1т сложений. Мы построим алгоритм, который почти в два раза уменьшает число умножений, но увеличивает число сложений, так что общее число операций слегка возрастет. Воспользуемся применительно к элементам матриц А и В тождеством ^1^1 4“ ^2^2 = (^1 “Ь (^2 “1“ ^1) ^1^2 - 61&2. Предположим, что п четно (в противном случае можно, не меняя произведения С, дополнить матрицу А нулевыми строками, а матрицу В нулевыми столбцами). Применяя выписанное тож- дество к парам строк матрицы Айк парам столбцов матрицы В, запишем ' п/2 CiJ = S (ai, 2А—1 Н" ^2А, j) (ai, 2А + bafc-l, j) — n/2 nff i = I, — S al,2k-iai,2k— Zj b2fe_i, J, . . a=i / = !,..., m. Такая форма вычислений экономит умножения, поскольку второй член зависит только от i и его не надо перевычислять для каждого /, а третий член зависит только от j и его не надо пере- вычислять для каждого i. Полное число умножений, необходи- мых для такого вычисления матрицы С, равно (1/2) nlm 4- 4- (1/2) и {I 4- т), а полное число сложений равно (3/2) nlm + 4~ 1т 4- (л/2 — 1) (/ 4~ т)- Для матриц большого размера это
16 Гл. I. Введение Алгоритм Умножений на точку Сложений на точку Прямое вычисление дискретного преобразования Фурье 1000Х 1000 8000 4000 БПФ-алгоритм Кули—Тьюки 1024X1024 Гибридный БПФ-алгоритм 40 60 Кули—Т ьюки/Винограда 1000X1000 40 72.8 БПФ-алгоритм Винограда 1008X1008 6.2 91.6 БПФ-алгоритм Нуссбаумера—Квендалла 1008X1008 4.1 79 Рис. 1.1. Сравнение характеристик некоторых двумерных алгоритмов преобра- зования Фурье. составляет примерно половину числа умножений, необходимых в прямом алгоритме. Последний пример является хорошим поводом для предосте- режения относительно точности вычислений. Несмотря на то что число умножений уменьшается, описанный алгоритм более чувствителен к погрешностям округления, если не позаботиться об этом специально. Однако можно получить почти такую же точ- ность, как и в прямом алгоритме, если на промежуточных шагах вычислений ввести соответствующие масштабные множители. Вопрос о точности вычислений практически всегда встает при оцен- ке быстрого алгоритма, хотя мы обычно будем им пренебрегать. Иногда при уменьшении числа операций уменьшается и погреш- ность вычислений, поскольку уменьшается число источников этих помех. В других алгоритмах, хотя число источников помех вычисления уменьшается, ответ может быть столь чувствительным к одному или нескольким из них, что общая погрешность вычисле- ний увеличивается. Большая часть книги посвящена рассмотрению всего несколь- ких задач: задачам вычисления линейной свертки, циклической свертки, многомерных линейной и циклической сверток, дискрет- ного преобразования Фурье, многомерного дискретного преобра- зования Фурье, решению теплицевых систем уравнений и нахожде- нию пути на решетке. Некоторые из рассматриваемых методов заслуживают более широкого применения; особенно хороши алго- ритмы многомерного преобразования Фурье, если взять на себя труд разобраться в наиболее эффективных из них. Для примера на рис. 1.1 приведено сравнение некоторых алгоритмов вычисле- ния двумерного преобразования Фурье. При приближении к концу списка повышение эффективности алгоритмов замедляется. Умень- шение числа умножений на одну точку вычислительной сетки на
1.2. Использование быстрых алгоритмов 17 выходе от шести до четырех может показаться не очень сущест- венным после того, как уже получено уменьшение от сорока до шести. Но это недальновидная т*очка зрения. Это дальнейшее улу- чшение может вполне окупить затраты времени на разработку Алгоритма при построении больших систем. Рис. 1.1 содержит другой важный урок. Вход таблицы, обозна- ченный как гибридный БПФ-алгоритм Кули—Тьюки/Винограда, соответствует алгоритму вычисления двумерного (1000X1000)- точечного преобразования Фурье, в котором на каждую точку сетки на выходе требуется 40 вещественных умножений. Этот пример может помочь развеять злополучный миф о том, что дис- кретное преобразование Фурье применимо только тогда, когда длина блока равна степени двух. На самом деле возможность циф- ровой обработки сигналов не ограничивается только такими дли- нами блоков; для многих значений длин блоков имеются хорошие алгоритмы. 1.2. Использование быстрых алгоритмов Сверхбольшие интегральные схемы, называемые чипами, те- перь стали доступными. Чип может содержать порядка 100 000 логических элементов, -и поэтому неудивительно, что теорию алгоритмов часто рассматривают как способ эффективной органи- зации этих элементов. Иногда выбор алгоритма позволяет су- щественно улучшить характеристики чипа. Конечно, их можно также улучшить, увеличив размер чипа или повысив его быстро- действие; эти возможности более широко известны. Предположим, что некто придумал алгоритм вычисления пре- образования Фурье, содержащий только пятую часть от числа опе- раций, входящих в другой алгоритм вычисления преобразования Фурье. Тогда, используя этот алгоритм, можно реализовать та- кое же улучшение характеристик чипа, которое получается при увеличении в пять раз его размера или его быстродействия. Для реализации улучшения конструктор чипа должен, однако, перенести архитектуру алгоритма в архитектуру чипа. Непроду- манная конструкция может свести на нет это преимущество, уве- личивая, например, сложность индексации или поток вход-вы- ход. Разработка оптимальных конструкций в эпоху больших интегральных схем невозможна без понимания быстрых алгорит- мов, описываемых в данной книге. С первого взгляда может показаться, что эти два направления— быстродействующие интегральные схемы и быстрые алгоритмы — конкурируют между собой. Если можно построить достаточно большие и достаточно быстродействующие чипы, то вроде бы нет ничего страшного в том, что используются неэффективные алго- ритмы. В некоторых случаях такая точка зрения не вызывает сом-
18 Гл. 1. Введение нений, но заведомо имеются случаи, в которых можно высказать диаметрально противоположную точку зрения. Большие цифровые процессоры часто сами создают потребность в разработке быстрых алгоритмов, так как размерность решаемых на них задач растет. Будет ли процессорное время алгоритма, предназначенного для решения некоторой задачи, пропорционально п1 или я3, несущест- венно при п, равном 3 или 4, но при п, равном 1000, это стано- вится критичным. Рассматриваемые нами быстрые алгоритмы связаны с циф- ровой обработкой сигналов, и их’приложения столь же широки, сколь и приложения самой цифровой обработки сигналов. Теперь, когда стало практичным разрабатывать изощренный алгоритм цифровой обработки сигналов, который может быть реализован конструктивно посредством одного чипа, хотелось бы иметь воз- можность выбрать такой алгоритм, который оптимизирует ха- рактеристики этого чипа. Но для больших чипов это невозможно сделать без достаточно развитой теории. В своем полном объеме такая теория существенно выходит за рамки включенного в дан- ную книгу материала. Чтобы учесть все аспекты сложности, надо рассматривать и такие продвинутые разделы теории логических схем и архитектуры компьютеров, как параллельное или конвей- ерное исполнение. Для оценки алгоритма обычно используют число необходимых умножений и сложений. Эти вычислительные характеристики почти исчерпывают сложность устройства на уровне алгоритма. На более низком уровне оно оценивается площадью чипа или числом логических элементов на нем и временем, необходимым для про- ведения вычислений. Часто в качестве критерия качества схемы используется произведение времени на площадь. Мы не будем пытаться оценивать характеристики на этом уровне, так как это выходит за рамки задач конструктора алгоритмов. - Актуальность рассматриваемых в данной книге вопросов нельзя оценить без понимания масштабов будущих приложений цифровой обработки сигналов. В настоящее время мы не можем угадать даже размеры таких систем, но достаточно просто можно предви- деть приложения, в которых объем необходимых вычислений будет на несколько порядков больше, чем тот объем, обработку которого может обеспечить современная технология. Системы звуковой локации в последнее десятилетие стали почти полностью цифровыми. Хотя полоса частот, в которой они работают, равна всего нескольким килогерцам, эти системы вы- полняют десятки миллионов или сотни миллионов умножений в секунду и еще больше сложений. Такие системы уже сейчас нуждаются в мощном цифровом оборудовании, и стали обыч- ными проекты, требующие еще более мощной цифровой тех- ники.
1.2. Использование быстрых алгоритмов Радиолокационные системы тоже становятся цифровыми, не многие важные функции по-прежнему реализуются традиционной микроволновой или аналоговой схемотехникой. Для того чтобы увидеть колоссальные потенциальные возможности использования цифровой обработки сигналов в радиолокации, достаточно отме тить, что радиолокационные системы в принципе очень пел 'жн на системы звуковой локации, отличаясь от них тем, что использу емая полоса частот в 1000 или более раз больше. Цифровая обработка сейсмической информации является глав ным методом разведки земных недр, в частности одним из важней- ших методов поиска залежей нефти. Обработкой больших пакетов лент данных занято все процессорное время многих компьютеров, но многие вычисления остаются невыполненными. Компьютерная томография представляет собой широко исполь- зуемый ныне способ объемного синтеза изображений внутренних органов человека с помощью множественных проекций, получае мых ври просвечивании рентгеновскими лучами. Разрабатыва- ются алгоритмы, позволяющие существенно снизить дозы облу- чения, но требования к цифровой обработке намного превосходят все практически приемлемые в настоящее время. Изучаются и другие способы получения изображений для медицинской диаг- ностики, в том числе с помощью ультразвука, ядерного магнит- ного резонанса или радиоактивных изотопов. Неразрушающий контроль качества подукции, например от- ливок, возможен с помощью воссоздаваемых на компьютере изоб- ражений внутренних областей изделия по результатам эхолока- ции. В принципе обработка сигналов может быть использована для улучшения качества плохих фотографий, смазанных движением камеры или расфокусировкой. Однако такая цифровая обработка требует большого объема вычислений. Обработка на цифровом процессоре спутниковых фотографий позволяет совместить несколько изображений или выделить осо- бенности, или скомбинировать полученную на различных длинах волн информацию, или создать синтетический стереоскопический образ. Например, в метеорологических исследованиях можно соз- дать подвижное трехмерное изображение облачного покрова, движущегося над поверхностью земли, используя для этого после- довательность спутниковых фотографий, снятых с нескольких то- чек. Можно указать и другие приложения быстрых алгоритмов для цифровой обработки сигналов, но уже приведенных достаточно для того, чтобы доказать, что потребность в них существует и продолжает расти. Каждое из описанных приложений связано с большим коли- чеством вычислений, структура которых, однако, чрезвычайно
20 Гл. 1. Введение прозрачна и сильно упорядочена. Кроме того, если для решения некоторой задачи уже создан жесткий модуль или подпрограмма, то они и будут постоянно использоваться для этой задачи. Имеет смысл затратить усилия на разработку добротной схемы, так как хорошие операционные характеристики намного важнее стои- мости разработки. 1.3. Системы счисления для проведения вычислений Во всей книге, говоря о сложности алгоритма, мы имеем в виду число умножений и сложений, поскольку эти операции выбраны в качестве единиц измерения сложности. Кто-то может захотеть пойти дальше и, чтобы подсчитать число необходимых битовых операций, поинтересоваться тем, как построено устрой- ство умножения. Структура умножителя и сумматора суще- ственно зависит от вида представления данных. Хотя вопро- сы, связанные с системами счисления, выходят за рамки данного курса, несколько слов во введении об этом, сказать сле- дует. Возьмем крайний случай, полагая, что основная часть вы- числений состоит из умножений. Тогда сложность можно понизить, записывая данные в логарифмическом виде. Сложение при этом станет более трудоемким, но если сложений не слишком много, то- общий результат улучшится. Тем не менее, как правило, мы будем полагать, что входные данные записываются в одном из естественных видов — как вещественные, как комплексные или как целые числа. В практической реализации процессоров для цифровой обра- ботки сигналов имеются еще более тонкие вопросы; используются формы записи числа как с плавающей, так и с фиксированной точ- кой. Для большинства задач цифровой обработки вполне доста- точной оказывается арифметика с фиксированной точкой и в этих случаях ее и надо выбрать из соображений экономичности. Этого положения не следует придерживаться слишком строго. Всегда есть соблазн избавиться от многих трудностей проектирования, перейдя к арифметике с плавающей точкой. Однако если чип или алгоритм предназначены для одного-единственного применения — например цифровой фильтр для цифровой радиосхемы массового выпуска, — то не стоимость разработки этого чипа играет основ- ную роль; решающую роль играют эксплуатационные характери- стики изделия и стоимость его тиражирования. Деньги, затрачен- ные на облегчение работы конструктора, нельзя потратить на улучшение характеристик.
1.3. Системы счисления для проведения вычислений 21 Неотрицательное целое число /, меньшее, чем qm, в m-сим- вольной позиционной арифметике с фиксированной точкой по основанию q записывается в виде i = /о + м + м2 + • • + ы-!?"*-1. о < h < ?• Число / представляется ^-последовательностью коэффициентов (/о» /1» •••» /т-i)1)- Имеется несколько способов учета знака числа с фиксированной точкой; эти способы записи отрицательных чисел называются соответственно прямым кодом, дополнительным кодом и обратным кодом. При любом основании q правила такого представления одни и те же. В двоичном случае, q — 2, дополни- тельный и обратный коды иногда называются соответственно 2-дополнительным и 1-дополнительным. Наиболее прост для понимания прямой код. Для записи знака числа в нем выделяется специальная позиция, которая называется знаковой и в которую записывается Ь, если число положительно, и 1, если число отрицательно. В процессе выполнения операций сложения и умножения знаковая позиция обрабатывается от- дельно от значимых позиций. Часто предпочтение отдается допол- нительному «Или обратному кодам, поскольку они проще реали- зуются в жестком исполнении; сумматор просто складывает два числа, не делая различия между знаковой и значащими позициями. Как прямой, так и обратный коды приводят к двум разным запи- сям нуля — положительной и отрицательной, которые следует полагать равными. В дополнительном коде нуль записывается однозначно. В обратном коде изменение знака числа получается заменой каждой цифры /, включая и знаковую цифру, на q — 1 — /. Например, взятое с обратным знаком десятичное число 4-62 (ко- торое записывается как 062) равно в обратном коде 937, а взятое с обратным знаком двоичное число 4-011 (которое записывается как ООП) равно в обратном коде 1100. Обратный код обладает тем свойством, что для умножения любого числа на минус один достаточно каждую цифру заменить ее дополнением до q— 1. В дополнительном коде изменение знака каждого числа полу- чается прибавлением единицы к записи этого числа в обратном коде. По определению минус нуль равен нулю. При таком согла- шении взятое с обратным знаком десятичное число 4-62, которое записывалось как 062, равно в дополнительном коде 938, а взятое с обратным знаком двоцчное число 4-0Н, которое записывалось как ООП, равно в дополнительном коде 1101. 4 В стандартной позиционной записи наиболее значимая цифра распола- гается не справа а слева, так что число записывается в виде /т-2’ •••, /1- /о)- — Прим. трее.
22 Гл. 1. Введение 1.4. Цифровая обработка сигналов Наиболее важной задачей цифровой обработки сигналов явля- ется задача фильтрации длинной последовательности чисел, а наи- более важным устройством — цифровой фильтр. Как правило, длина последовательности данных заранее неизвестна и является столь большой, что ее можно полагать при обработке бесконечной. Числа, составляющие последовательность, являются обычно либо вещественными, либо комплексными, но нам предстоит работать и с другими видами чисел. Цифровой фильтр представляет собой устройство, формирующее новую числовую последовательность, называемую выходной последовательностью, по заданной после- довательности, которая теперь называется входной последователь- ностью. Широко используемые фильтры можно строить из эле- метов, схемы которых приведены на рис. 1.2 и которые называются разрядами регистра сдвига, сумматорами, умножителями на скаляр и умножителями. Разряд регистра сдвига содержит одно число, которое поступает на его выход. В дискретные моменты времени, именуемые тактами, разряд регистра сдвига замещает содержащееся в нем число числом, поступающим на его вход, отбрасывая предыдущее содержимое. Как показано на рис. 1.3, регистр сдвига представляет собой несколько соединенных в цепь разрядов регистра сдвига. Регистр сдвига называется также линией задержки. Мы будем рассматривать два наиболее важных типа регистров сдвига, известных под названием фильтра с конечным импульс- ным откликом (КИО-фильтр) и авторегрессионного фильтра. КИО-фильтр, как показано на рис. 1.4, представляет собой просто линию задержки с отводами, в которых выход каждого разряда умножается на фиксированную константу, а результаты склады- ваются вместе. Как показано на рис. 1.5, авторегрессионный фильтр также является линией задержки с отводами, но с обрат- ной связью, соединяющей выход со входом. Выходная последо- вательность КИО-фильтра равна линейной свертке входной по- следовательности и последовательности, описываемой весовыми множителями в отводах фильтра. Линейная свертка является едва ли не самой общей вычисли- тельной задачей цифровой обработки сигналов, и большую долю времени мы потратим на исследование вопроса ее эффективной реализации. Еще больше времени мы уделим методам эффектив- ного вычисления циклической свертки. Это может показаться странным, так как в приложениях циклическая свертка возникает естественным образом не столь уж часто. Наше внимание к цикли- ческой свертке обусловлено тем, что для ее вычисления имеется много хороших алгоритмов. Это позволяет разработать быстрые методы вычисления очень длинных линейных сверток, связывая вместе много циклических сверток.
1.4. Цифровая обработка сигналов 23 Разряд регистра сдвига Умножитель на константу Рис. 1.2. Элементы схем. Сумматор . Умножитель Рис. 1.3. Регистр сдвига. Рис. 1.4. КЛО-фильтр. Рис, 1.5. Авторегрессивный фильтр. Для заданных двух последовательностей — последователь- ности данных d = {dif (' = 0,...Л-1} и последовательности фильтра g = {gi, i = 0, .... L — lj, где N — длина блока данных и L — длина фильтра, линейной сверткой называется новая последовательность s = |sif i = 0, ..., L N — 2}, элементы которой определяются равенствами Д'—I Si = Zj gi-A, 1 = 0.....L + N — 2, fe=0
24 Гл. 1. Введение а длина выходного блока равна L -]- ДО — 1; последовательность s называется выходной или сигнальной. В записи свертки подразу- мевается, что gi_k = 0 при i — k < 0. Так как все компоненты последовательности g умножаются на все компоненты последова- тельности d, то прямой метод вычисления свертки содержит ДОЛ, умножений. Имеется'очень разработанная теория построения КИО-фильт- ров, связанная с выбором длины L и весовых множителей Этот аспект теории конструкций фильтров мы не рассматриваем; предметом наших исследований являются -быстрые алгоритмы вычисления выходной последовательности s по заданным после- довательностям фильтра g и входа d. Со сверткой тесно связана еще одна величина, которая назы- вается корреляцией и определяется равенствами Д'-! П = Е ёнА, 1=0,..., L + У — 2, <=0 где gi+k = 0 при I + А > L. Корреляцию можно вычислять как свертку, если просто прочитать одну из определяющих ее последо- вательностей в обратном порядке. Все способы вычисления ли- нейной свертки легко преобразуются в способы вычисления корреляции. Свертку можно записать также через многочлены. Пусть d (х) = Е diX1 и g (х) = £ 1=0 i=O L+H-1 Тогда , s(x) = g(x) <Цх), где s(x) = У, sfxC Эти равенства легко i=0 проверяются простым вычислением коэффициентов произведения g(x)d(x). Можно, конечно, записать также равенство s (х) = =d (x)g(x), из которого становится очевидной симметричная роль последовательностей g и d в определении свертки. Таким образом, линейная свертка может быть записана в эквивалентном виде как si = S gkdi-k- k=0 Другой формой свертки, тесно связанной с линейной сверткой, является циклическая свертка. Для заданных двух последова- тельностей I = 0, ..., п —• 1} и \gh i — 0, .... п — 1} с одной и той же длиной блока п циклическая свертка i = 0, ..., п — 1} с длиной блока п определяется равенствами п—1 Si = £ g((i— k))dk> 1 = 0,..., П — 1, k=O
1.4. Цифровая обработка сигналов 25 где двойные скобки означают, что вычисления над индексами про- изводятся в арифметике по модулю п (см. разд. 2.6). Иными сло- вами, ((п — £)) = п — k (mod п) и 0 ((п — k)) < п. Заметим, что в циклической свертке при каждом i каждое dh умножается на значимую величину gm—w Это существенное отличие от линейной свертки, в которой dk часто умножается на член gi_k, индекс которого выходит за диапазон определения последова- тельности g, так что соответствующая компонента gi_k равна нулю. Циклическую свертку можно связать с линейной следующим образом. По определению циклической сЪертки п-1 si = Е i = 0......п — 1. k=0 Разделим эту сумму на две, выделяя в первую сумму члены, ин- дексы которых удовлетворяют условию i — k 0 (или k i), а во вторую — члены, индексы которых удовлетворяют условию i — k < 0 (или k > t): l n-1 * = S gi-kdk~\- S §n+i—kdk- &=0 Полагая теперь в первой сумме gt_k = 0 при k > i, а во второй gn+i-k — 0 при k < i, можно изменить границы суммирования и получить связь циклической и линейной сверток в виде п—1 п—I S( = S gi-kdt + S g„+i-tdk = s< + S„+1, i = 0......n — 1. k=0 k=A Скажем, что члены последовательности s, индексы которых больше п — 1, «вкладываются» обратно в члены, индексы которых мень- ше п. Если второй член выписанной выше суммы равен нулю, то линейную свертку можно вычислять как циклическую. Это воз- можно, если произведения gn+i-kdk равны нулю для всех i и k. Чтобы обеспечить эти условия, можно так выбрать длину п цик- лической свертки, чтобы она была больше, чем N + L — 1 (по- полняя нулями g и d до длины блока п). Тогда для вычисления линейной свертки можно пользоваться алгоритмом вычисления циклической свертки и получать при этом правильный ответ. Циклическую свертку можно также выразить в виде произве- дения многочленов. Пусть d (х) = S dix', g (х) = Е gtx‘ 1=0 1=0
26 Гл. 1. Введение XXX С',_ |, С |, С Q XXX X Выбрать средние п течек 6 качестве коыпснент циклической свертки Рис. 1.6. Использование КИО-фильтра для формирования циклической свертки. и s (х) = g (х) d (х). Циклическая свертка вычисляется по много- члену s (х) «обратным вложением» членов высшего порядка. Это можно представить в виде записи s' (х) = s (х) (mod хя — 1), где равенство по модулю хп — 1 означает, что s' (х) равен остатку от деления многочлена s (х) на многочлен хп — 1. Таким образом, s' (*) = g (х) d (х) (mod хя — 1). Для приведения многочлена g (х) d (х) по модулю хп — 1 доста- точно заменить хя на 1, или, что эквивалентно, член xn+i с поло- жительным i на член хЛ Это соответствует формированию величин s't = + sn+i, i = 0, ..., n — 1, и, следовательно, позволяет вычислить коэффициенты цикличе- ской свертки. Так как sr (х) = d (х) g (х) = g (х) d (х) (mod Xя — 1), то ясно, что векторы d и g играют в определении свертки сим- метричную роль, так что циклическая свертка задается двумя эквивалентными равенствами п—I S< = S = л—I = S d((i—ky)gk> i = 0, . •n — 1. k=0 На рис. 1.6 приведена схема КИО-фильтра, вычисляющего циклическую свертку, для чего последовательность d повторя- ется дважды. На выходе КИО-фильтра формируется последова- тельность из Зп — 1 компонент, среди которых содержатся п последовательных компонент, равных компонентам циклической свертки.
1.4. Цифровая обработка сигналов Более важным для приложений является использование цик- лической свертки для вычисления длинной линейной свертки. В быстрых алгоритмах вычисления длинной линейной свертки входная последовательность разбивается на короткие секции, со- держащие иногда несколько сотен отсчетов. Для формирования потока данных на выходе секции обрабатываются поочередно — зачастую методом циклической свертки.ч Такие способы назы- ваются методами с перекрытием-, в этом названии отражается тот факт, что неперекрывающиеся секции в потоке входных дан- ных приводят к перекрывающимся секциям в потоке выходных данных, а перекрывающиеся секции в потоке входных данных приводят к неперекрывающимся секциям в потоке выходных данных. Работа показанного на рис. 1.5 авторегрессионного фильтра также может быть описана в терминах полиномиальной арифме- тики. Но если КИО-фильтр вычисляет произведение многочленов, то авторегрессионный фильтр выполняет деление многочленов. А именно, при фильтрации конечной последовательности в авто- регрессионном фильтре (с нулевым начальным состоянием) на выходе фильтра формируется последовательность коэффициентов многочлена-част^ лю, получаемого при делении многочлена, коэффициенты которого равны компонентам входной последо- вательности, на многочлен, коэффициенты которого задаются весовыми множителями в отводах фильтра; к моменту завершения ввода входной последовательности содержимое фильтра равно коэффициентам многочлена-остатка от такого деления. Напомним, что авторегрессионный фильтр описывается равенством Pi = — S hipj-i + aj> 1=0 где a.j есть /-й символ на входе, a h( — весовой множитель в t-м отводе фильтра. Определим многочлены п—1 L б (х) = S ai*1 и h (х) = 2 hi** 1=0 и запишем равенство а (х) = Q (х) h (х) + г (х), где Q (х) и г (х) обозначают соответственно частное и остаток в алгоритме деления многочленов. Тогда отсчет pj на выходе фильтра равен в точности /-му коэффициенту многочлена-част- ного, а коэффициенты многочлена-остаТка г (х) будут записаны в самых левых разрядах регистра сдвига авторегрессионного фильтра после того, как на его вход будут поданы все п коэффи- циентов aj делимого.
28 Гл. 1. Введение Другим очень важным в цифровой обработке сигналов видом вычисления является дискретное преобразование Фурье (с этих пор называемое в дальнейшем просто преобразованием Фурье), Пусть v = {1>4, i = 0, п — 1} обозначает вектор с веществен- ными или комплексными компонентами. Преобразованием Фурье вектора v называется вектор V длины п с комплексными компо- нентами, задаваемыми равенствами п—1 Vh = S k = 0, ..., п — 1, /=0 где © = е-^2л/п и / — —1 *)• Иногда это определение записывается в матричном виде V = Tv. Если раскрыть эту запись, то она принимает вид - О. ~ »х «2 ~ Уо - У, у. = ~1 1 1 1 1 © ©2 ю2 ю4 1 - . . . ©л—I ... о2и-1) _ У».! _ 0/1-1 (п-1) © _ _ «П-1 _ Если вектор V равен преобразованию Фурье вектора v, то вектор v можно вычислить по вектору V с помощью обратного преобразования Фурье, задаваемого равенством =-42 fe=0 Доказательство этого факта дается следующими выкладками: п—1 п—1 п— 1 У — S S — fe=0 fe=0 1=0 n—I Гп—I q = S ^1 S ©~ft u-t> - 1=0 |_fe=0 J Если I = i, то сумма no k, очевидно, равна n, а если l не равно i, то сумма приводится к виду 2i _________________m— U—О л fc=0 г) Во всей книге буква / используется и для обозначения ]/"—1 и в каче- стве индекса. Это не приводит, однако, ни к какой путанице.
1.5. История быстрых алгоритмов обработки сигналов 29 Так как <о-п = 1, то справа стоит нуль. Следовательно, У = S Vi Wh) = nvi’ k=0 1=0 где 6ц = 1 при i = I и 6П = 0 в противном случае. Между циклической сверткой и преобразованием Фурье име- ется очень важная связь, которая известна как теорема о свертке и формулируется следующим образом. Вектор е равен цикличе- ской свертке векторов f и g, л—I = Е ‘ = о.....п— 1, 1=0 тогда и только тогда, когда их преобразования Фурье удовлетво- ряют равенствам Ek = FA, k = 0, ..л — 1. Это утверждение вытекает из того, что =2 = z=o L л=о J л—I Гл—1 "I л—1 =42 2 <о<'~') =42 fe=0 L/=o J k=o Поскольку e есть обратное преобразование Фурье от Е, то мы заключаем, что Eh = G^Fk. Можно также определить двумерные преобразования Фурье, которые полезны при обработке двумерных таблиц данных, и многомерные преобразования Фурье, которые используются при обработке многомерных массивов данных. Двумерное преобразо- вание Фурье определяется равенствами «"г* k' — О, п' — 1, Vf.t- = Е Е k, _п . , r=0 1“=0 R — и, . . ., Л — 1, где (0 = g-f2n/n' и ц __ е-/2я/л' 1.5. История быстрых алгоритмов обработки сигналов Историю быстрых алгоритмов обработки сигналов принято отсчитывать с момента, когда в 1965 г. Кули и Тьюки опублико- вали свой быстрый алгоритм вычисления преобразования Фурье (БПФ-алгоритм), хотя на самом деле эта история началась намного
30 Гл. I. Введение раньше. Указанная публикация [5] появилась как раз в нужный момент и послужила катализатором применения метода цифровой обработки сигналов в новом контексте. Вскоре после опублико- вания этой работыСтогхем [6 ] заметил, что БПФ-алгоритмы могут служить удобным способом вычисления сверток. Технология циф- ровой обработки может непосредственно использовать БПФ, так что имеется множество приложений, и поэтому работа Кули и Тьюки стала ширко известной. Лишь несколько лет спустя было осознанно, что другой БПФ-алгоритм, сильно отличающийся от •алгоритма Кули—Тьюки, был разработан раньше Гудом [7] (1960) и Томасом [8] (1963). В свое время публикация БПФ-ал- горитма Гуда—-Томаса прошла почти незамеченной. Позже Ви- ноград [9, 10] (1976, 1978) опубликовал свой более эффективный, хотя и более сложный, БПФ-алгоритм, который к тому же позво- лил значительно глубже понять, что в действительности озна- чает процесс вычисления дискретного преобразования Фурье. Неблагоприятным следствием популярности - БПФ-алгоритма Кули—Тьюки явилось широкое распространение мнения о том, что дискретное преобразование Фурье практично применять лишь при длине блока, равной степени двух. Это привело к тому, что БПФ-алготитмы стали диктовать параметры применяемых устройств вместо того, чтобы приложения диктовали выбор под- ходящего алгоритма БПФ. На самом же деле хорошие БПФ- алгоритмы существуют практически для произвольной длины блока. Различные вариации БПФ-алгоритма Кули—Тьюки появи- лись во многих обличьях. По существу та же самая идея исполь- зуется для построения многолучевой плоско-фазированной радио- локационной антенны и известна под названием матрицы Батлера [11] (1961). Для малых длин блоков быстрые алгоритмы сверток были впервые построены Агарвалом и Кули [12] (1977) с использова- нием остроумных догадок, но не на основе общего метода. Общий метод построения быстрых алгоритмов свертки описал Виноград [10] (1978), доказав при этом важные теоремы несуществования лучших алгоритмов свертки для полей комплексных и веществен- ных чисел. Агарвал и Кули [12] также указали основанный на китайской теореме об остатках метод разбиения задачи вычисле- ния длинных сверток на задачи вычисления коротких сверток. Их метод в сочетании с методом Винограда, применяемый для вычисления коротких сверток, дает хорошие результаты. Самая ранняя идея того, что мы предпочитаем называть быст- рыми алгоритмами, появилась намного раньше, чем БПФ-алго- ритмы. Алгоритм Левинсона [13] был опубликован в 1947 г. как эффективный метод решения некоторых теплицевых систем уравнений. Несмотря на чрезвычайную важность этого алгоритма
Задачи 31 в обработке сейсмических данных, литература, посвященная ал- горитму Лецинсона, многие годы не пересекалась с литературой по БПФ-алгоритмам. Как правило, в этих ранних исследованиях не делалось попыток явно разграничить алгоритм Левинсона как вычислительную процедуру и задачи фильтрации, к решению которых алгоритм применялся. Подобно этсйлу, не всегда прово- дилось различие между БПФ как вычислительным средством и дискретным преобразованием Фурье, для вычисления которого используются БПФ-алгоритмы; аналогично зачастую не разли- чались алгоритм Витерби как вычислительная процедура и задача поиска пути, к решению которой применяется алгоритм Витерби. Задачи 1.1. Построить алгоритм 2-точечной вещественной циклической свертки (SjX +^Sq) = (giX + g0) (dxx + (mod xa — 1), содержащий два умножения и четыре сложения. Относящиеся к g0 и Ci вычисле- ния не учитывать, полагая их константами, для которых все вычисления выпол- няются заранее раз и навсегда. 1.2. Опираясь на задачу 1.1, построить алгоритм 2-точечной комплексной свертки, содержащий только шесть вещественных умножений. 1.3. Построить алгоритм 3-точечного преобразования Фурье £ = 0, 1, 2, /=о в котором имеется только два вещественных умножения. 1.4. Доказать, что не существует алгоритма умножения двух комплексных чисел, содержащего только два вещественных умножения. 1.5. а. Допустим, что имеется устройство вычисления линейной свертки двух 50-точечных последовательностей. Описать, как это устройство может быть использовано для вычисления циклической свертки двух 50-точечных после- довательностей. б. Допустим, что имеется устройство для вычисления циклической свертки двух 50-точечных последовательностей. Описать, как это устройство может быть использовано для вычисления линейной свертки двух 50-точечных последовательностей. 1.6. Доказать, что корреляцию можно вычислять как свертку, записывая одну из последовательностей в обратном порядке и, возможно, пополняя одну из последовательностей отрезком нулей. 1.7. Доказать, что любой алгоритм вычисления х31, в котором используются только сложения, вычитания и умножения, должен содержать по меньшей мере семь умножений, но если допустить возможность деления, то суще- ствует алгоритм, содержащий всего шесть умножений и делений. 1.8. Один из алгоритмов вычисления произведения комплексных чисел дается равенствами е— ас — bd, f ~ (а + b) (с + d) — ас — bd.
32 Гл. I. Введение Записать этот алгоритм в матричном виде, подобно тому, как это сделано в тексте главы. Каковы недостатки или преимущества этого алгоритма по сравнению с приведенным выше? 1.9, Доказать «свойство сдвига» для преобразований Фурье: если {с^} *-* {V&} являются парой преобразования Фурье, то парами преобразования Фурье также являются ~ (^(№+1»! » ha-i»! — f“4)- 1.10. Доказать, что «циклическая корреляция» двух вещественных последова- тельностей g и d удовлетворяет соотношению 1—п GnDk ** Zj S((i+k))dk> k=0 где G и D соответственно преобразования Фурье последовательностей g и d. Замечания Хорошее изложение начала истории быстрых алгоритмов преобразования Фурье содержится в статье Кули, Левиса и Велча [1] (1967). Основы теории цифровой обработки сигналов можно найти во многих книгах; укажем две из них: Оппенгейм и Шафер [2] (1975) и Рэбинер и Голд 13] (1975). Алгоритмы умножения комплексных чисел, содержащие три вещественных умножения, в общем стали известны с конца 1950-х, но поначалу им не придавали должного значения. Описанный нами алгоритм умножения матриц принадлежит Винограду [4} (1968).
Глава 2 ВВЕДЕНИЕ В АБСТРАКТНУЮ Хорошие алгоритмы основаны на красивых алгебраических тождествах. Для построения таких алгоритмов необходимо зна- комство с мощными структурами теории чисел и современной ал- гебры. Такие структуры, как множество целых чисел, кольца многочленов и поля Галуа, играют важную роль в построении алгоритмов обработки дискретных сигналов. В настоящей главе излагаются алгебраические сведения, которые необходимы для дальнейшего, но, как правило, неизвестны студентам, специали- зирующимся в области обработки дискретных сигналов. Сначала изучаются математические структуры групп, колец и полей. Мы увидим, что дискретное преобразование Фурье может быть опре- делено в произвольном поле, хотя наиболее известно его опреде- ление в поле комплексных чисел. Затем будут рассмотрены из- вестные понятия матричной алгебры и векторных пространств. Мы покажем, что их можно корректно определить для любого поля. Наконец, мы изучим кольцо целых чисел и кольца много- членов, уделяя особое внимание алгоритму Евклида и китайской теореме об остатках. 2.1. Группы Понятие группы является математической абстракцией опре- деленной алгебраической структуры, часто встречающейся во многих конкретных видах. Введение абстрактного понятия обус- ловлено тем, что легче одновременно исследовать все математиче- ские системы с общей структурой, чем изучать каждую из них по отдельности. Определение 2.1.1. Группой G называется множество эле- ментов с определенной на нем операций (обозначаемой *), кото- рая удовлетворяет следующим четырем свойствам: (1) (Замкнутость.} Для каждой пары элементов а и b из этого множества элемент с = а* Ъ принадлежит этому множеству. (2) (Ассоциативность.) Для всех элементов а, b и с из этого множества а* (Ь*с) = (а*Ь) *с. 2 БлеЙхуг Р.
34 Гл. 2. Введение в абстрактную алгебру • e Si Si Si Si + 0 1 2 3 4 е e Si Si Si 8* 0 0 I 2 3 4 Si Si Si Si Si e I 1 2 3 4 0 S2 Si Si Si e Si 2 2 3 4 0 1 s3 Si Si e Si s2 3 3 4 0 1 2 Si St e 81 83 4 4 0 1 2 3 Рис. 2.1. Пример конечной группы. (3) (Существование единицы.) В этом множестве существует элемент е, называемый единичным, элементом, такой что а*е~е*а — а для любого элемента а рассматриваемого множества. (4) (Обратимость.) Для любого а из данного множества су- ществует (называемый обратным к а) некоторый элемент b из этого множества, такой что = е. Если G содержит конечное число элементов, то она называется конечной группой. Число элементов в конечной группе G называ- ется ее порядком. На рис. 2.1 приведен пример конечной группы. По существу здесь представлена одна и та же группа, но в разных обозначениях. В случае когда две группы описываются одной и той же структурой, хотя и в разных обозначениях, они назы- ваются изоморфными 1). Некоторые группы обладают тем дополнительным свойством', что для любых а и Ъ из такой группы а*Ь = Ь*а. Это свойство называется коммутативностью. Группы, обладающие этим дополнительным свойством, называются коммутативными группами, или абелевыми группами. Мы всегда будем иметь дело с абелевыми группами. В случае абелевых групп знак групповой операции обознача- ется плюсом и называется сложением (даже тогда, когда операция не является обычным арифметическим сложением). В этом случае единичный элемент е называется «нулем» и обозначается 0, а обратный к а элемент записывается в виде —а, так что а 4- (—а) = (—а) -f- я = 0. Иногда символ групповой операции обозначатеся точкой и называется умножением (даже тогда, когда оно не является обыч- Вообще любые две алгебраические системы с одной и той же структурой, но представленные в разных обозначениях наываются изоморфными.
2.1. Группы 35 ным умножением). В этом случае единичный элемент называется единицей и обозначается 1, а обратный к а элемент записывается в виде а-1, так что а-а'1 = а-1-а = 1. Теорема 2.1.2. Единичный элемент в каждой группе единст- вен. Для каждого элемента группы обратный элемент также единствен, и (а'1)"1 = а. Доказательство. Предположим, что е и е' являются единич- ными элементами. Тогда е = е*е' = е'. Далее предположим, что b и Ь' являются элементами, обратными к а; тогда b = Ь* (а^Ь') ~ (Ь*а) *Ь' = Ь'. Наконец, а~х*а = а + сГ1 — е, так что а является обратным к о-1. Но в силу единственности обратного элемента (а"1)-1 = а.п Многие общеизвестные группы содержат бесконечное число элементов. Примерами являются: множество целых чисел с опе- рацией сложения; множество положительных рациональных чи- сел с операцией умножения1); множество вещественных (2x2)- матриц с операций сложения. Многие другие группы содержат только конечное число элементов. Конечные группы могут быть устроены весьма хитро. Если групповая операция применяется два или более раз к одному и тому же элементу, то можно использовать степенное обозначение. Таким образом, а2 = а* а и ak ~ а*а* ... *а, где справа стоят k копий элемента а. Циклической называется группа, в которой каждый элемент может быть записан в виде степени некоторого фиксированного элемента, называемого образующей группы. Каждая конечная циклическая группа имеет вид G = (до, д’, а2, ..., где q — порядок G, а — образующая, а а0 — единичный элемент, а обратный к а{ элемент равен '. Чтобы можно было на самом деле задать группу таким способом, необходимо, чтобы выполня- лось равенство а’ = а°. Это вытекает из того, что в противном слу- чае, если = а1 при i =/= 0, то о*-4 = и в противоречие с определением мы получаем меньше, чем q, элементов. х) Этот пример дает удобный повод, чтобы сделать предостережение по поводу терминологии. В случае произвольной абелевой группы групповая опе- рация обычно называется сложением, но не обязательно является обычным сложением. В данном примере она является обычным умножением. 2*
36 Гл. 2. Введение в абстрактную алгебру 2.1. Группы 37 Важнейшей циклической группой с q элементами является группа, обозначаемая Z/(q), или иногда Z4, и задаваемая мно- жеством Z/(<?)= (О, 1, 2...Ц со сложением по модулю q в'качестве групповой операции, На- пример, Z/(6) = }0, 1, 2, ..., 5} и 3 4-4 = 1. Группа Z/(<7) может быть выбрана в качестве стандартного прототипа циклической группы с q элементами. На самом деле имеется только одна группа с q элементами; все остальные явля- ются ее изоморфными копиями, различающимися обозначениями, но не структурой. Любую другую циклическую группу G с q элементами можно отобразить в z/(?) с заменой групповой опера- ции в G сложением по модулю q. Любые свойства структуры в G справедливы в zl(q), и наоборот. По заданным двум группам G' и G” можно построить новую группу G, которая называется произведением групп G' и G" и обо- значается G — G' х G”. Элементами G служат пары элементов (а', а"), первый из которых принадлежит G', а второй — G". Группо- вая операция в произведении групп G определяется равенством (a', b") = (а' * Ь', В этой формуле звездочка используется три раза в трех разных смыслах. В левой части равенства она обозначает групповую операцию в G, а в правой части — операции в группах G' и G" соответственно. Например, Z2 х Z3 задается множеством Z2 X Z3 = ж 0), (0, 1), (0, 2), (1. 0), (1, 1). (1, 2)|. Типичным элементом таблицы сложений в Z2 х Z3 является (1, 2) + (0, 2) = (1, 1). Отметим, что группа Z2 х Z3 сама является циклической с об- разующим элементом (1, 1). Следовательно, Z2 х Z3 изоморфна группе Z6. Причина этого роется в том, что числа 2 и 3 не имеют общих целочисленных делителей. Пусть G группа и Н — подмножество в G. Тогда Н называется подгруппой группы G, если Н само является группой относительно ограничения групповой операции на Н. В качестве примера, в множеств целых чисел (положительных, отрицательных и нуля) с операцией сложения множество четных чисел, так же как и множество чисел, кратных 3, образует подгруппу. Один из способов построения подгруппы И конечной группы G состоит в том, чтобы, выбрав некоторый элемент h из G, форми- ровать элементы множества Н в виде последовательных степеней этого элемента: h, h2, h3, A4, ... . Так как группа G конечна, то элемент последовательности обязательно начнет повторяться. Первым должен повториться сам элемент Я, а непосредственно предшествующий ему элемент является единичным элементом группы, так как рассматриваемая конструкция дает циклическую группу. Множество Н называется циклической подгруппой, порожденной элементом А. Число q элементов в подгруппе Н удовлетворяет равенству h’ = I и называется порядком элемента h. Множество элементов А, Аг, А3, № = 1 называется циклом в группе G. Для того чтобы доказать, что непустое подмножество Н яв- ляется подгруппой в G, достаточно только проверить, что вместе с элементами а и b из // множеству Н принадлежит элемент а*Ь, и что обратный к произвольному элементу а из Н также принадлежит Н. Остальные требуемые групповые свойства на- следуются из группы G. Если группа конечна, то, как мы увидим позже при рассмотрении циклических подгрупп, даже свойство обратимости выполняется автоматически. Для заданных конечной группы G и подгруппы Н имеется важная конструкция, иллюстрирующая определенную взаимо- связь между G и Н и известная под названием разложения группы G на смежные классы по подгруппе //. Обозначим через hlt ht, А3, ... элементы из Н, причем через Al обозначим единичный эле- мент. Построим следующую таблицу: первая строка состоит из элементов подгруппы Н, причем первым слева выписан единичный элемент и каждый элемент из // выписан в строке один и только один раз. Выберем произвольный элемент группы G, не содержа- щийся в первой строке. Назовем его g2 и используем в качестве первого элемента второй строки. Остальные элементы второй строки теперь получаются умножением слева элементов подгруппы на этот первый элемент. Аналогично, строя стретью, четвертую и пятую строки, каждый раз выбираем не использованный на пре- дыдущих шагах элемент группы G в качестве элементов первого столбца. Конец наступает, когда после некоторого шага оказы- вается, что все элементы группы записаны в некотором месте таблицы. Процесс оканчивается в силу конечности G. Таблица имеет следующий вид: Ах — 1 Аз Ап g2* Al = g2 g2*h2 ... £3*АЛ ёз * Al = g3 g3 * Аа • • ёз * An gm*hi=gm gm*h2 ... gm*An Первый элемент в каждой строке называется лидером смеж- ного класса. Каждая строка таблицы называется левым смежным
38 Гл. 2. Введение в абстрактную алгебру классом, а в случае абелевой группы просто смежным классом. Если при построении разложения группы на смежные классы использовать вместо левого правое умножение на элементы группы Н, то строки называются правыми смежными классами. В силу указанных правил построения разложение группы на смежные классы всегда является прямоугольной таблицей, все строки кото- рой полностью заполнены. Докажем теперь, что в этой таблице каждый элемент группы встречается точно один раз. Теорема 2.1.3. В разложении группы на смежные классы каж- дый элемент группы встречается один и только один раз. Доказательство. Каждый элемент появится по крайней мере один раз, так как в противном случае процесс не остановится. Покажем теперь, что каждый элемент не может появиться дважды в одной и той же строке, а затем докажем, что один и тот же эле- мент не может появиться в двух разных строках таблицы. Предположим, что два элемента в одной и той же строке, ска- жем gt*hj и gt*hh, равны. Тогда умножение1) каждого из них на gi' дает равенство й/ = hk Это противоречит тому, что каждый элемент подгруппы выписан в первой строке только один раз. Предположим, что два элемента из различных строк, скажем gi*hi и gk*hi, равны, и что k < i. Умножение справа на Л/' приводит к равенству gt = gk*hi*hp. Тогда gi порождает k-n смежный класс, так как элемент hi*hp принадлежит под- группе. Это противоречит выбранному выше правилу выбора ли- деров смежных классов. □ Следствие 2.1.4. Если И— подгруппа группы 6, то число элементов в И делит число элементов в G. Таким образом, (Порядок Н) (Число смежных классов G по Н) ~ (Порядок G). Доказательство. Следует непосредственно из прямоугольности таблицы разложения на смежные классы. □ Теорема 2.1.5. Порядок конечной группы делится на порядок любого из ее элементов. Таким образом, аР — 1 для любого элемента а группы G с q элементами. Доказательство. Группа содержит циклическую подгруппу, порожденную любым из ее элементов, и, таким образом, доказа- тельство теоремы вытекает из следствия 2.1.4.Q 2.2. Кольца Следующей необходимой нам алгебраической структурой яв- ляется кольцо. Кольцо представляет собой абстрактное множество, которое является абелевой группой и наделено дополнительной операцией. г) Слева. — Прим, перев. 2.2. Кольца Определение 2.2.1. Кольцом R называется множество с двумя определенными на нем операциями: первая называется сложением (обозначается плюсом); вторая называется умножением (обозна- чается записью сомножителей рядом), причем выполняются сле- дующие аксиомы: 1. Относительно сложения (4~) R является абелевой группой. 2. (Замкнутость.) Произведение ab принадлежит R для любых а и b из J?. 3. (Закон ассоциативности.) a (be) = (ab) с. 4. (Закон дистрибутивности.) а (Ь + с) = ab 4- ас, (Ь + с) а = Ьа + са. Сложение в кольце всегда коммутативно, а умножение не обязательно должно быть коммутативным. Коммутативное коль- цо — это кольцо с коммутативным умножением: ab = Ьа для всех а и b из R. Дистрибутивный закон в определении кольца связы- вает операции сложения и умножения. Важнейшими примерами колец являются кольцо Z целых чисел и кольцо £/(?) целых чисел по модулю q. Мы уже видели, что они являются группами по сложению. Так как на этих множест- вах имеется также умножение с необходимыми свойствами, то они являются кольцами. Несколько хорошо известных читателю по знакомым кольцам свойств могут быть выведены из аксиом следующим образом. Теорема 2.2.2. Для произвольных элементов а и b из кольца R выполняются равенства (i) аО = Оа = 0. (и) а (—Ь) = (—а) Ь = —ab. Доказательство. (i) аО = а (0 4- 0) = а0 + а0. Прибавляя к обеим частям равенства — аО, получим 0 = аО. Аналогично доказывается вто- рая половина п. (i). (ii) 0 = аО = а (Ь — b) = ab 4- а (—Ь). Следовательно, a (—b) = — (ab). Аналогично доказывается вторая половина п. (ii). П Относительно операции сложения кольцо содержит единицу, называемую «нулем». Относительно операции умножения кольцо не обязательно имеет единицу, но если единица есть, то она един- ственна. Кольцо, обладающее единицей относительно умножения, называется кольцом с единицей. Эта единица называется «единицей»
41 40 Гл. 2. Введение в абстрактную алгебру и обозначается символом 1. Тогда для всех а из R имеет месцо la = al = а. Относительно операции сложения каждый элемент кольца имеет обратный. Относительно операции умножения обратные к данному элементу не обязательно существуют, но в кольце с еди- ницей обратные могут существовать. Это означает, что для за- данного элемента а может существовать элемент Ь, такой что ab = 1. Если это так, то b называется правым обратным к а. Аналогично, если существует элемент с, такой, что са = 1, то с называется левым обратным к а. Теорема 2.2.3. В кольце с единицей: (i) Единица единственна. (и) Если элемент а имеет и левый обратный Ь, и правый обратный с, то b = с. В этом случае элемент а называется обра- тимым, причем обратный элемент единствен (и обозначается через а'1). (iii) (а’1)’1 = а. Доказательство. Аргументация аналогична использованной в доказательстве теоремы 2.1.2. □ Если кольцо содержит единицу, то можно произвольное число раз сложить ее саму с собой или вычесть из себя самой, получив, таким образом, бесконечную в обе стороны последовательность -(1 + 1 + 1), -(1 4- 1), -1, 0, 1, 1 4- 1, 1 + 1 + 1, ... . Эти элементы называются целыми кольца и иногда обозначаются просто как 0, ±1, ±2, ±3, ±4, ... . Кольцо может содержать как конечное, так и бесконечное множество целых. Число целых в кольце с единицей называется его характеристикой. Если ха- рактеристика кольца равна конечному целому числу q, то це- лые этого кольца могут быть записаны в виде множества {1, 1 4-1, 1 4-1 4-1- • или в более простом, используемом для обычных целых чисел, обозначении {1, 2, 3, .... (/—I, 0|. Это подмножество является подгруппой аддитивной группы кольца; на самом деле это циклическая подгруппа, порождаемая элементом 1. Следовательно, если характеристика кольца — ко- нечное целое число, то сложение в кольце является сложением по модулю q. Если характеристика бесконечна, то целые кольца складываются как целые числа. Следовательно, каждое кольцо 2.2. Кольца с единицей содержит подмножество; которое ведет себя относи- тельно сложения либо как Z, либо как В действитель- ности оно ведет себя так же и относительно умножения, так как если аир — конечные суммы единицы кольца, то «•₽ = ₽+ ₽ +- 4-₽- где справа стоит а копий элемента р. Так как сложение целых в R ведет себя подобно сложению в 2 или в Z-!(q), то так же ведет себя и умножение в R. В пределах кольца R каждый элемент а может быть возведен в целочисленную степень; а™ просто означает произведение т ко- пий элемента а. Если кольцо содержит единицу и число целых кольца является простым, то иногда для упрощения степенных сумм оказывается полезной следующая теорема. Теорема 2.2.4. Пусть р простое, и пусть R — кольцо с р целыми. Тогда для любого положительного целого числа т и любых элементов а и ft из R (a ± РК - арт ± и, по непосредственному обобщению, для любого множества элементов из R. Доказательство. Согласно биномиальному разложению, (а ± Р)Р = Е ( И а‘ (=0 \ t / (р\ » где I I интерпретируется в R как сумма такого числа копки еди- ницы кольца. Напомним, что в кольце с р целыми арифметика целых совпадает с арифметикой по модулю р. Следовательно, можно записать / р\ где двойные скобки вокруг 1 . ] обозначают вычисление по мо- дулю р. Теперь заметим, что f Р \ pl____________р (р — 1) I \ i ) i! (р —t)l И (р —i)! представляет собой целое число и р простое. Следовательно, знз' / р\ менатель делит (р — 1)! в области целых чисел, и I ) кратно р
42 Гл. 2. Введение в абстрактную алгебру 2.3. Поля 43 Таким образом, = О (mod р) для всех i = 1, 2, р — 1. Итак, (а ± ₽)’ = а” + (±р)'’. Наконец, либо р = 2 и — р = ₽, так что (±Р)! = ±₽2, либо р нечетно и (±₽)р = ±₽<>. Таким образом, (а ± ₽)р = а? ± и для т = 1 теорема доказана. Возведем теперь последнее равенство в р-ю степень, ((а ± РХУ = (ар ± и опять воспользуемся утверждением теоремы при т = 1: (а ± P)pi = а₽* ± р>*. Повторяя это т — 1 раз, получаем (a±₽)pZ" = cc₽ ±Ppm, что завершает доказательство теоремы. □ Если в кольце с единицей элемент имеет обратный, то он назы- вается обратимым г). Множество всех обратимых элементов кольца замкнуто относительно умножения, так как, если а п b обратимы, то с = ab имеет обратный элемент, равный с-1 — {На*1. Теорема 2.2.5. (i) Относительно умножения в кольце множество обратимых элементов кольца образует группу. (ii) Если с = ab и с — обратимый элемент кольца, то а имеет правый обратный, а b — левый обратный. (iii) Если с = ab и а не имеет правого обратного или b не имеет левого обратного, то с не является обратимым элементом. Доказательство. Упражнение. □ Многие примеры колец известны. Например: 1. Множество всех вещественных чисел относительно обычных сложения и умножения образует коммутативное кольцо с едини- цей. Каждый ненулевой элемент кольца является обратимым. 2. Множество Z всех целых чисел (положительные, отрица- тельные и нуль) относительно обычных сложения и умножения образует коммутативное кольцо с единицей. Единственными обра- тимыми элементами кольца служат +1. 3. Множество всех (пхл)-матриц с вещественными элементами х) Используемые для единицы и обратимых элементов кольца английские термины «unity» и «unit» переводятся на русский язык одним словом «единица», так что часто в литературе обратимые элементы называются единицами кольца; мы предпочитаем зафиксировать термин «единица» в определенном выше смысле.— Прим, перев. относительно матричного сложения и матричного умножения об- разует некоммутативное кольцо с единицей. Единицей служит единичная (пхп)-матрица. Обратимыми элементами кольца яв- ляются все невырожденные матрицы. *• 4. Множество всех (мх п)-матриц, элементами которых явля- ются целые числа, относительно матричного сложения и матрич- ного умножения образует некоммутативное кольцо с единицей. 5. Множество всех многочленов от х с вещественными коэффи2 циентами относительно сложения и умножения многочленов обра- зует коммутативное кольцо с единицей. Единицей'кольца является многочлен нулевой степени р (х) = 1. 2.3. Поля Грубо говоря, абелевой группой является множество, в кото- ром можно «складывать» и «вычитать», а кольцо — множество, в котором можно «складывать», «вычитать» и «умножать». Более сильной математической структурой, называемой полем, является множество, в котором можно «складывать», «вычитать», «умно- жать» и «делить». Определение 2.3.1. Полем называется множество с двумя опе- рациями — сложением и умножением, — которые удовлетворяют следующим аксиомам: 1. Множество образует абелеву группу по сложению. 2. Поле замкнуто относительно умножения и множество не- нулевых элементов образует абелеву группу по умножению. 3. Дистрибутивный закон (а + Ь) с = ас + Ьс выполняется для любых а, b и с из поля. Единичный элемент относительно сложения принято называть нулем и обозначать через 0, аддитивный обратный к элементу а обозначать —а, единичный элемент относительно умножения на- зывать единицей и обозначать i, мультипликативный обратный к элементу а обозначать а-1. Под вычитанием (а — Ь) понимается а (—ь); под делением (а/b) понимается Ь~га. Следующие примеры полей широко известны: 1. R: множество вещественных чисел. 2. С: множество комплексных чисел. 3. Q: множество рациональных чисел. Все эти поля содержат бесконечное число элементов. Имеется много других не столь широко известных полей с бесконечным числом элементов. Одно из таких полей описывается очень просто и известно как поле Q (/) комплексных рациональных чисел. Оно дается определением С (/) = + м
44 Гл. 2. Введение в абстрактную алгебру 2.3. Поля где а и b — рациональные числа, а сложение и умножение опре- деляются так же, как для комплексных чисел. При таком опреде- лении множество Q (/) удовлетворяет определению 2.3.1 и, сле- довательно, является полем. Имеются также поля с конечным числом элементов, и мы бу- дем ими также пользоваться. Поле с q элементами, если оно су- ществует, называется конечным полем или полем Галуа и обозна- чается GF (q). Что представляет собой наименьшее поле? Оно обязано со- держать нулевой элемент и единичный элемент. На самом деле этого уже достаточно для задания поля, если сложение и умно- жение определить таблицами + 01 -01 0 0 1 000 110 10 1 Это поле известно как GF (2). Никаких других полей с двумя эле- ментами не существует (за исключением, конечно, изоморфных копий поля GF (2)). Конечные поля можно описывать с помощью таблиц сложения и умножения. Вычитание и деление однозначно определяются таб- лицами сложения и умножения. Позже изучим конечные поля детально. Сейчас мы приведем еще три примера. Поле GF (3) = {0, 1, 2} с операциями + 0 12 0 1 2 0 0 12 0 0 0 0 1 12 0 1 0 I 2 2 2 0 1 2 0 2 1 Поле GF (4) = ’0, 1 2 3} с операциями + 0 12 3 0 12 3 0 0 12 3 0 0 0 0 0 1 1 0 3 2 1 0 12 3 2 2 3 0 1 2 0 2 3 1 3 3 2 10 3 0 3 12 Заметьте, что в GF (4) умножение не есть умножение по мо- дулю 4, а сложение не есть сложение по модулю 4. Поле GF (5) = |0, 1, 2, 3, 4} с операциями + 0 12 3 4 0 0 12 3 4 1 1 2 3 4 0 2 2 3 4 0 1 3 3 4 0 12 4 4 0 12 3 0 12 3 4 0 0 0 0 0 0 1 0 12 3 4 2 0 2 4 13 3 0 3 14 2 4 0 4 3 2 1 Это примеры очень малых полей. Мы найдем применения и для значительно больших полей, таких как GF (2le + 1). Для произвольного поля, как бесконечного, так и конечного, применимы почти все известные алгоритмы вычислений. Это проис- ходит потому, что большинство процедур, используемых в полях вещественных и комплексных чисел, зависит только от даваемой определением 2.3.1 формальной структуры поля и не зависит от частных характеристик конкретного поля. В произвольном поле F имеется даже преобразование Фурье: . п— 1 = S ^ikvb ft = 0, ..., п — ‘1, где ш — корень степени п из единицы в поле F, a v и V — векторы длины п над полем F. Преобразование Фурье длины п. в поле F существует тогда и только тогда, когда поле содержит корень степени п из единицы. Если преобразование Фурье существует, то оно ведет себя ожидаемым образом. В частности, должно су- ществовать и обратное преобразование Фурье, и должна выпол- няться теорема о свертке, так как если просмотреть доказатель- ства wx свойств, то можно увидеть, что о поле F не делается никаких предположений, за исключением того, что оно является даваемой определением 2.3.1 формальной структурой. Аналогично, двумерное преобразование Фурье в поле F п'— I п"— 1 ft' = 0, . . ., Пг — 1, = Д Д ft" = О...п - 1, существует, если в поле F имеется элемент © порядка п' и эле- мент р, порядка п". Если таких элементов в поле нет, то указанное преобразование не существует. Например, в поле GF (5) порядок элемента 2 равен 4. Следо- вательно, в поле GF (5) существует 4-точечное преобразование Фурье Vh = Е 2'4, fe = 0, 1, 2, 3, »=о и двумерное (4х4)-преобразование Фурье 3 3 Компоненты векторов v и V принадлежат полю GF (5), и вся арифметика является арифметикой поля GF (5). Если з * " 2 ’ 1]
46 Гл. 2. Введение в астракткую алгебру то одномерное преобразование Фурье вектора v равно К] [1 1 1 11 [41 [О' И _ I 2 4 3 3 1 К2 I 4 1 4 2 “ 2 ‘ KjJ [1 3 4 2] [ij х |з Определение 2.3.2. Пусть F — поле. Подмножество в F на- зывается подколем, если оно является полем относительно насле- дуемых операций сложения и умножения; исходное поле F в этом случае называется расширением подполя. Поле рациональных чисел является подполем поля веществен- ных чисел, которое в свою очередь является подполем поля ком- плексных чисел. Поле комплексных рациональных чисел не яв- ляется подполем поля вещественных чисел, но является подполем поля комплексных чисел. Легко видеть, что конечное поле GF (2) является подполем поля GF (4), так как элементы 0 и 1 склады- ваются и умножаются в поле GF (4) так же, как в поле GF (2). Однако GF (2) не является подполем ни поля GF (3), ни поля GF (5). Чтобы доказать, что некоторое подмножество поля является подполем, необходимо доказать только то, что оно содержит не- нулевой элемент и замкнуто относительно сложения и умножения. Все остальные необходимые свойства наследуются из поля F. Обращение по сложению или умножение на элемент 0 входят в порождаемую элементом Р циклическую группу соответственно относительно операций сложения или умножения. Каждое поле содержит в качестве подмножества множество своих целых {..., -(1 + 1 + 1), -(1 + 1), —К 0, 1, 1 + 1, 1 + 1 + 1,...}. Целые поля обычно записываются просто как 0, ±1, ±2, ±3, ... . Поле может содержать только конечное число целых, и в этом случае такое число называется характеристикой поля. (Оно всегда простое.) Все элементы полей GF (3) и GF (5) являются целыми, так что характеристики полей равны соответственно 3 и 5. Так как в поле GF (4) целыми являются только 0 и 1, то характе- ристика этого поля равна 2. Характеристика и поля веществен- ных чисел, и поля комплексных чисел равна оо. Каждое поле характеристики оо содержит поле рациональных чисел (или его изоморфную копию). Если поле имеет конечную характеристику р, то целые этого поля образуют циклическую группу по сложению; следовательно, сложение целых поля представляет собой сложение по модулю р, где р — число целых поля. Сумму п копий единицы поля будем
2.4. Векторные пространства 47 записывать в виде ((л)), где двойные скобки обозначают вычисле- ние по модулю р. Конечное поле задает группу двумя путями: все элементы поля образуют группу относительно сложения и все ненулевые эле- менты поля образуют группу относительно умножения. На самом деле по умножению ненулевые элементы поля образуют цикличе- скую группу. Доказать это утверждение, трудно, и мы отложим доказательство до гл. 5, но пользоваться цикличностью этой структуры будем раньше. Так как по умножению множество ненулевых элементов группы образует циклическую группу, то оно порождается одним элементом. Определение 2.3.2. Примитивным элементом поля Галуа GF (q) называется элемент порядка (<? — 1) относительно умно- жения. Он порождает мультипликативную группу поля. Например, в поле GF (5) степени элемента 3 равны: З1 = 3, З2 = 4, З3 = 2, З4 = 1. Следовательно, 3 — примитивный эле- мент поля GF (5). 2.4. Векторные пространства Для заданного поля F «-последовательность (v0, .... элементов поля называется вектором длины п над полем F. Мно- жество всех таких векторов длины п вместе с двумя заданными на нем операциями — сложением векторов и умножением на ска- ляр —-называется векторным пространством над полем F. При рассмотрении векторных пространств элементы поля F, над ко- торыми строются векторы, называются скалярами. Умножение на скаляр — это операция, связывающая вектор v с элементом поля с по правилу с (v0. «I..и„-1) = (cv„, Wi....canj). Векторное сложение является операцией сложения двух векторов, v = v' + V*. выполняемого по следующему правилу. (vo, v',, .... + (aS, v'i, .... = = (Vi, + v[ + Vi, .... + a„_i). Векторное пространство и-последовательностей представляет собой один пример векторных пространств. Векторное простран- ство над полем F можно определить абстрактно как множество V элементов (именуемых векторами) с двумя заданными на нем операциями. Первая операция определена на парах элементов из V, называется сложением векторов и обозначается плюсом. Вторая операция определена на элементе из V и элементе из F, дает в результате элемент из V и называется умножением на ска- ляр- для обозначения такой операции эти элементы записываются
48 Гл. 2. Введение в абстрактную алгебру рядом. Для того чтобы V было векторным пространством, эти операции должны удовлетворять следующим аксиомам. 1. V представляет собой абелеву группу относительно опера- ции сложения векторов. 2. (Дистрибутивный закон.) Для любых векторов v2 и лю- бого скаляра с с (Vj -Ь V2) - CVi + cv2- 3. (Дистрибутивный закон.) Для любого вектора v и любых скаляров Ci и с2 выполняется bv = v и (Ci -h Са) V = CiV + c2v. 4. (Ассоциативный закон.) Для любого вектора v и любых скаляров Ci и с2 (cLc2) v = Су (c2v). Нулевой элемент из V называется началом координат и обозна- чается через 0. Отметим, что мы использовали символ -|- двумя различными способами: для векторного сложения и для сложе- ния в поле. Отметим также, что мы использовали символ 0 для обозначения нулевого элемента поля и символ 0 для обозначения начала координат векторного пространства. Это неопределенность практически не приводит к недоразумениям. Подмножество векторного пространства называется векторным подпространством, если оно само является векторным простран- ством относительно исходных операций сложения векторов и умножения вектора на скаляр. Относительно сложения векторов векторное пространство является группой, а векторное продпро- странство — подгруппой. Для того чтобы проверить, является ли непустое подмножество векторного пространства подпростран- ством, необходимо проверить только замкнутость подмножества относительно сложения векторов и умножения векторов на ска- ляр. Замкнутость относительно умножения на скаляр гаранти- рует принадлежность подмножеству нулевого вектора. Все осталь- ные требуемые свойства наследуются из исходного пространства. Векторное пространство ^-последовательностей над F обозна- чается через Fn. В этом пространстве сложение векторов и умно- жение вектора на скаляр определены покомпонентно. В Fn имеется еще одна операция, называемая покомпонентным произведением двух векторов. Если ц = (а0, аь ..., дп_х) и v= (b0, .... 6n-i), то покомпонентное произведение определяется равенством uv = (аоЬо, aibi, ..., Оно представляет собой вектор, компоненты которого получаются в результате перемножения компонент векторов и и v. Скалярным произведением двух n-последовательностей из Fn называется скаляр, определяемый равенством и v = (а0, ..., an_i) • (&0, ..., bn_i) ~ ааЬ0 an-ibn-i-
2.4. Векторные пространства 49 Немедленно проверяется, что uv=v*u, (cu)* v = с (a- v) и что также w* (и -4- v) = (w-u) 4- (Ж-v). Если скалярное произведение двух векторов равно нулю, то векторы называются ортогональ- ными. Над некоторыми полями возможна ортогональность нену- левых векторов самим себе, но это невозможйо над полем веще- ственных чисел. Вектор, ортогональный к каждому вектору из данного множества, называется ортогональным к этому множеству. Теорема 2.4.1. Пусть V —векторное пространство п-после- довательностей над полем F, содержащее подпространство Множество векторов, ортогональных к W, само образует под- пространство. Доказательство. Пусть U обозначает множество всех векторов, ортогональных к W. U не пусто, так как 0 принадлежит U. Пусть w — произвольный вектор из W, a Ui и иа — некоторые векторы из U. Тогда wuj = wu2 = 0 и , WU1 4- W*U2 — 0 = u2), так что Ui -j- и2 также вектор из U. Далее, w* (cuj) = с (w- uj = О, так что cui также вектор из U. Следовательно, U является под- пространством. □ Множество всех векторов, ортогональных к подпространству U7, называется ортогональным дополнением подпространства W и обозначается через Ж1. В векторном пространстве всех п-по- следовательностей над полем вещественных чисел пересечение подпространств W и содержит только нулевой вектор; но в векторном пространстве над GF (д) подпространство IF-1- может иметь нетривиальное пересечение с W или может даже лежать в W, содержать IT и совпадать с W. Например, подпространство' из двух векторов (00) и (11) пространства GF3 (2) является своим ортогональным дополнением. В векторном пространстве V сумма вида u = + a2va + ... + afevfc, где а{ — скаляры, называется линейной комбинацией векторов vls v2, .... Vfc. Говорят, что множество векторов порождает линейное пространство, если каждый вектор этого пространства представим в виде некой линейной комбинации векторов из этого множества. Тогда говорят также, что такое линейное пространство натянуто на это множество векторов. Линейное пространство, которое на- тянуто на конечное множество векторов, называется конечномер- ным векторным пространством. Число векторов в наименьшем множестве, порождающем некое пространство, называется раз- мерностью этого пространства. Пространство ^-последовательно- стей над F дает пример конечномерного векторного пространства размерности п.
50 Гл. 2. Введение в абстрактную алгебру Множество векторов |vi, v2, ..., называется линейно за- висимым, если существует множество скаляров не все из которых равны, таких что “Л + aava + ... + akvh = 0. Множество векторов, не являющееся линейно зависимым, назы- вается линейно независимым. Ни один вектор из линейно незави- симого множества не может быть представлен как линейная ком- бинация остальных. Заметим, что нулевой вектор 0 не может принадлежать линейно независимому множеству; каждое мно- жество, содержащее 0, является линейно зависимым. Множество из k линейно независимых векторов, порождающих линейное пространство, называется базисом этого пространства. 2.5. Матричная алгебра Методы матричной алгебры обычно изучаются только для полей вещественных и комплексных чисел, хотя большинство операций справедливо в произвольном поле (а иногда даже в произвольном кольце). Определение 2.5.1. (пхт)-матрицей А над полем F назы- вается прямоугольная таблица, состоящая из п строк и т столб- цов и содержащая пт элементов из поля F: ^11 ^12 • • • ^1т А = °21 Й22 агт = [«„]• _ &п1 &п2 • • • ^пт _ Если п = т, то матрица А называется квадратной. Две (пх т)-матрицы А и В над- полем F можно складывать по правилу А + В = аП 4“ ^11 й12 “Ь ^12 Я- &П1 &п2 Т ^п2 Ч- &1т &птп “I- &пт . Всякую (ихт)-матрицу А можно по правилу Р°12 умножить на элемент 0 поля ••• • • • Р^птп Р = А 0Дц ₽flnl ^П2 Всякую (1х и)-матрицу А можно умножить на (пХ т)-матрицу В, получив в результате (/хт)-матрицу С по правилу п Cl) = anbkj, i = 1.......I, / = m.
2.5. Матричная алгебра 51 Множество элементов at, для которых номер строки совпадает с номером столбца, называется главной диагональю, (пх^-ма- трица, все элементы главной диагонали которой равны единице, а остальные элементы равны нулю, называется 'единичной матри- цей размера п и обозначается через 1. Матрица, все элементы побочной диагонали (элементы, для индексов которых / = п 4- + 1 — 0 которой равны единице, а остальные элементы равны нулю, называется обменной матрицей и обозначается через J. Отметим, что J2 = I. Примерами единичной и обменной матриц являются следующим (ЗхЗ)-матрицы: 10 0’ 0 I 0 0 0 1 J = 0 0 г 0 1 0 _ I 0 0 Относительно введенного определения произведения и суммы матриц, как легко проверить, множество квадратных (пХ ^-ма- триц образует кольцо. Это кольцо некоммутативно, но обладает единицей, а именно единичной (пхп)-матрицей. Транспонированной к (пхпг)-матрице А называется (шхп)-ма- трица Аг, такая что af/ = ац. Таким образом, строками ма- трицы Аг служат столбцы матрицы А, а столбцами матрицы Аг служат строки матрицы А. Легко проверить, что если С = АВ, то Сг = ВГАГ. Обратной к квадратной матрице А, если таковая существует, называется квадратная матрица А-^, такая что А“1А = АА-1 = = I. Как нетрудно проверить, множество всех обратимых ква- дратных (пхп)-матриц относительно операции умножения обра- зует группу. Следовательно, если матрица имеет обратную, то обратная единственна, так как в силу теоремы 2.1.2 это свойство выполняется в каждой группе. Матрица, имеющая обратную, называется невырожденной’, в противном случае матрица назы- вается вырожденной. Пусть С = АВ. Как следует из п. (iii) тео- ремы 2.2.5, если хотя бы у одной из матриц А или В нет обрат- ной, то и у матрицы С нет обратной. Если матрицы А и В обра- тимы, то С-1 = В-1А-1, так как (В-1А-1) С = 1 = С (В-1А-1). Определение 2.5.2. Пусть поле F задано. Для каждого п опре- делитель квадратной (пх п)-матрицы А равен величине det (А), являющейся функцией из множества всех (пхп)-матриц над F в поле F. Функция det (А) задается формулой det (А) = £ ...lnaua2ii.. .а^, где in — перестановка на множестве целых чисел {1, 2, ..., п^; |е- .. ( равно 4-1, если перестановка содержит четное число транспозиций, и —1 в противном случае, а сумми-
52 Гл. 2. Введение в абстрактную алгебру рование ведется по всем перестановкам. Транспозицией назы- вается перестановка двух членов. Если матрица А' получается из матрицы А перестановкой двух строк, то каждую перестановку строк матрицы А', получаемую в результате четного (нечетного) числа транспозиций, можно рас- сматривать как соответствующую перестановку строк матрицы А. Отсюда следует, что при перестановке любых двух строк матрицы знак определителя меняется на противоположный. Аналогичные рассуждения показывают, что если две строки матрицы равны, то определитель равен нулю. Следующая теорема, приводимая без доказательства, содержит вытекающие непосредственно из определения 2.5.2 свойства опре- делителя. Теорема 2.5.3. (1) Если все элементы некоторой строки ква- дратной матрицы равны нулю, то определитель этой матрицы равен нулю. (ii) Определитель матрицы равен определителю транспониро- ванной матрицы. (Hi) Если две строки квадратной матрицы поменять местами, то определитель поменяет знак. (iv) Если две строки равны, то определитель равен нулю. (v) Если все элементы одной строки матрицы умножить на элемент поля с, то определитель новой матрицы будет равен определителю исходной матрицы, умноженному на с. (vi) Если матрицы А и В отличаются только i-й строкой, то сумма их определителей равна определителю матрицы С, i-я строка которой равна сумме i-x строк матриц А иЪ,а осталь- ные строки равны соответствующим строкам матрицы А или В. (vii) Если к элементам некоторой строки матрицы k раз при- бавить соответствующие элементы некоторой другой ее строки, то определитель матрицы не изменится. (viii) Определитель матрицы отличен от нуля тогда и только тогда, когда ее строки (столбцы) линейно независимы. Если в квадратной матрице удалить строку и столбец, содер- жащие элемент ао, то определитель оставшейся квадратной таб- лицы размера п — 1 называется минором элемента ац и обозна- чается через М.Ц. Алгебраическое дополнение, обозначаемое здесь через Ci}, определяется равенством Сц = (- Из способа задания определителя матрицы следует, что ал- гебраическое дополнение элемента ai} является коэффициентом при atj в разложении определителя: det (А) = £ а1лСл.
2.5. Матричная алгебра 53 Это известная формула Лапласа для разложения определителей. Формула разложения Лапласа лежит в основе рекуррентного спо- соба вычисления определителей. Она дает выражение определи- теля (пх п)-матрицы через определители ((и — 1)х (п — 1))-матриц. п Если aih заменить на а^, то получитдя сумма У, а^С^, равная определителю новой матрицы, полученной из старой за- меной элементов i-й строки элементами /-й строки; этот определи- тель равен нулю, если / =£ I. Таким образом, " Г det (A), i Ф j, 2-i 1 л • , k=i I u i ¥= /• Поэтому если det (А) Ф 0, то матрица А имеет обратную, равную д-1 — Г - ] L (jet (A) J Если det (А) = 0, то обратной матрицы не существует. Матрицу можно разбить на блоки по правилу: А — Г^У-1 L а2Х j a22j где Ап. Аи, А21 и А22 — меньшие матрицы, размеры которых очевидным образом дополняют друг друга до размеров исходной матрицы А. А именно, число строк матрицы Ац (или А12) плюс число строк матрицы A2i (или Д22) равно числу строк матрицы А; аналогичное утверждение выполняется для числа столбцов. Ма- трицы можно перемножать поблочно. А именно, если' в и С = АВ, то |All,?L1„t_A,2®2,_J AliBu + AuBjjl [AjjBh + А22В2) ; А21В12 + АггВц] при условии, что все размеры блоков выбраны корректно в том смысле, что все матричные произведения и суммы определены. Такое разложение может быть выведено как простое следствие аксиом ассоциативности и дистрибутивности основного поля. Определение 2.5.4. Пусть А = и В = [Ьп 1 — матрицы соответственно размеров 1хК и Jx L. Тогда кронекеровским про-
54 Гл. 2. Введение в астрактную алгебру изведением матриц А и В, обозначаемым Ах В, называется ма- трица, содержащая /7 строк и KL столбцов, у которой на пере- сечении строки с номером (i — 1) J + / и столбца с номером (k — 1) L 4- I стоит элемент Сц, м — Qikbji- Кронекеровское произведение представляет собой (/X ^-таб- лицу, состоящую из (7х £)-блоков, (i, fe)-H из которых равен n/feB. Непосредственно из определения вытекает, что кронекеровское произведение матриц некоммутативно, но ассоциативно: А х В У= В х А, (А х В) х С = А (В х С). Элементы матрицы Ах В те же, что и у матрицы ВхА, но упоря- дочены по-другому. Очевидно также, что кронекеровское произ- ведение дистрибутивно относительно обычного сложения матриц. Наиболее известным примером кронекеровского произведения является внешнее произведение двух векторов. Предположим, что А и В обе представляют собой векторы-столбцы, скажем, а = (а,, а/)т и b — (Ьп Ь?)т соответственно. Тогда К. = — L = 1, и axb7" является (/х7)-матрицей, на пересечении i-й строки и /-го столбца которой стоит элемент а^. Оно обозна- чается просто через abr, так как в этом случае кронекеровское произведение совпадает с обычным произведением матриц. Следующая полезная теорема утверждает, что кронекеровское произведение произведений матриц равно матричному произве- дению кронекеровских произведений соответствующих матриц. Теорема 2.5.5. Если все матричные произведения определены, то кронекеровское произведение удовлетворяет равенству (А х В) (С х D) = (АС) х (BD). Доказательство. Пусть матрицы А, В, С и D имеют соответ- ственно размеры /хА, JxL, КхМ и LxN. Так как матрица Ах В содержит K.L столбцов, а матрица CxD содержит K.L строк, то матричное произведение (Ах В) (CxD) определено. Оно со- держит IJ строк, которые мы занумеруем парами (i, /), и MN столб- цов, которые мы занумеруем парами (т, п). Элемент, стоящий на пересечении строки (i, j) и столбца (т, п), равен S ctikbjichm dln. ki Так как матрица АС содержит / строк и М столбцов, а матрица BD содержит J строк и L столбцов, то матрица (AC)x(BD) также является (IJ X /<Л)-матрицей. Стоящий на пересечении строки (i, /) и столбца (т, п) элемент этой матрицы равен S aikckm £ bjldin = aikbjlckmdin’ fe I k.t \ что и завершает доказательство. □
2.5. Матричная алгебра 55 (нхп)-матрица, в которой ац = арр, если i — j = i' — f, называется теплицевой (пхпрматрицей Теплицева матрица имеет вид А = (20 ^1 п-i а0 П—2 й—1 _П__ (Л_1) а2 П1 * «0 По __ ✓ вдоль любой ее диагонали стоит один и тот же элемент. Элементарными операциями над строками матрицы назы- ваются следующие действия: 1) перестановка двух произвольных строк; 2) умножение произвольной строки на ненулевой элемент поля; 3) замена произвольной строки на сумму ее самой и некото- рого кратного любой другой\троки. Каждая элементарная операция над строками (ях^-ма- трицы А может быть выполнена путем левого умножения А на соответствующим образом подобранную так называемую элемен- тарную (их и)-матрицу Е. Элементарные матрицы определяются как следующие модификации единичной матрицы: Элементарные операции над строками используются для при- ведения матрицы к стандартному виду, называемому канониче- ским ступенчатым видом и определяемому следующим образом: 1) ведущий ненулевой элемент каждой ненулевой строки ра- вен единице; 2) все остальные элементы каждого столбца, содержащего такой ведущий элемент, равны нулю; 3) ведущий элемент любой строки находится правее любого ведущего элемента любой расположенной выше строки. Нулевые строки расположены ниже всех ненулевых строк.
56 Гл. 2. Введение в астрактную алгебру Примером матрицы, приведенной к каноническому ступенча- тому виду, является Р 10 13 0 001100 А ~ 000001 [рооооо Заметим, что нулевая строка расположена снизу и что если уда- лить последнюю строку, то все столбцы единичной (ЗхЗ)-матрицы появятся среди столбцов матрицы, но в разбросанном виде. В об- щем случае если имеется k ненулевых строк и по меньшей мере такое же количество столбцов, то матрица в каноническом сту- пенчатом виде будет содержать все столбцы единичной (kx ^-ма- трицы, но в разбросанном виде. Строки (цХт)-матрицы А над полем F являются подмноже- ством векторов пространства Fm, т. е. векторами с т компонен- тами. Пространством строк матрицы А называется множество всех линейных комбинаций строк матрицы А. Пространство строк образует подпространство в Fm. Размерность пространства строк называется рангом матрицы по строкам. Аналогично, столбцы матрицы А можно рассматривать как множество векторов в про- странстве Fn векторов с п компонентами. Пространство столбцов матрицы А определяется как множество всех линейных комбина- ций столбцов матрицы А, и размерность этого пространства на- зывается рангом матрицы по столбцам. Множество векторов v, таких что Avr = 0, называется нулевым пространством ма- трицы А. Нулевое пространство, очевидно, является векторным подпространством пространства Fm. В частности, нулевое про- странство матрицы А является ортогональным дополнением про- странства строк матрицы А, так как нулевое пространство может быть описано как множество всех векторов, ортогональных ко всем векторам пространства строк матрицы. Теорема 2.5.6. Если две матрицы А и А' переводятся друг в друга некоторой последовательностью элементарных операций над строками, то они имеют одно и то же пространство строк. Доказательство. Каждая строка матрицы А' является линей- ной комбинацией строк матрицы А; следовательно, любая линей- ная комбинация строк матрицы А' также является линейной комбинацией строк матрицы А, и тем самым пространство строк матрицы А содержит пространство строк матрицы А'. Но А может быть получена из А' с помощью обратных операций, и, следова- тельно, пространство строк матрицы А' содержит пространство строк матрицы А. Следовательно, пространства строк матриц А и А' равны. □
2.5. Матричная алгебра 57 Теорема 2.5.7. Если матрицы А и А' связаны последователь- ностью элементарных операций над строками, то любое мно- жество линейно независимых столбцов матрицы А является также линейно независимым в А'. Доказательство. Теорема очевидна ,для первой и второй эле- ментарных операций, так что достаточно провести доказательство для единственной третьей операции. Итак, пусть А' получается из А прибавлением строки а, умноженной на элемент поля к строке 0. Если в А' имеется некоторая линейная зависимость столбцов, то она приводит к нулевой линейной комбинации соот- ветствующих элементов строки а, которая поэтому цнкак не ска- зывается на строке 0. Следовательно, это множество столбцов в А также линейно зависимо. □ Теорема 2.5.8. Если k строк (кхп)-матрицы А линейно не- зависимы, то эта матрица содержит k линейно независимых столбцов. Доказательство. Приведе^ матрицу А к каноническому сту- пенчатому виду А'. Так как строки линейно независимы, то ни одна строка не будет нулевой. Следовательно, для каждой строки найдется столбец, который в пересечении с этой строкой содержит единицу, а во всех остальных позициях — нуль. Это множество из k столбцов матрицы А' линейно независимо, и, следовательно, по теореме 2.5.7 в матрице А это же множество столбцов также линейно независимо. □ Теорема 2.5.9. Ранг матрицы по строкам равен ее рангу по столбцам и оба равны размерам любой наибольшей квадратной подматрицы, определитель которой отличен от нуля. (Эта вели- чина называется просто рангом матрицы.) Доказательство. Необходимо только доказать, что ранг ма- трицы А по строкам равен размеру наибольшей квадратной под- матрицы с отличным от нуля определителем. То же самое дока- зательство, примененное к транспонированной матрице, тогда дает этот же результат для ранга матрицы по столбцам, и, таким образом, служит доказательством равенства ранга по строкам рангу по столбцам. Подматрицей матрицы А называется матрица, получающаяся из А удалением произвольного числа строк и столбцов. Пусть М — невырожденная квадратная подматрица матрицы А наибольшего размера. Так как М невырожденна, то, согласно п. (viii) тео- ремы 2.5.3, ее строки линейно независимы, и, следовательно, эти же строки матрицы А должны быть линейно независимы. Таким образом, ранг матрицы А по строкам по меньшей мере столь же велик, сколь размер подматрицы М.
58 Гл. 2. Введение в абстрактную алгебру С другой стороны, выберем произвольное множество из k ли- нейно независимых строк. Согласно теореме 2.5.7, образованная этими строками матрица содержит k линейно независимых столб- цов. Выбирая эти k столбцов на рассматриваемых k строках, получаем подматрицу с ненулевым определителем. Следовательно, размер наибольшей квадратной невырожденной подматрицы по меньшей мере столь же велик, сколь ранг матрицы А по строкам. Это завершает доказательство. □ 2.6. Кольцо целых чисел Целые числа (положительные, отрицательные и нуль) образуют обманчиво простое математическое множество. Ничего, кажется, не может быть более регулярного и равномерного, чем целые числа, но присмотревшись пристальнее, можно увидеть сложные внутренние связи и модели этого множества. Разумный конструк- тор использует эти свойства множества целых чисел при построе- нии эффективных алгоритмов цифровой обработки сигналов. Относительно обычных операций сложения и умножения целые числа образуют кольцо, которое принято обозначать Z. В кольце целых чисел вычитание возможно всегда, а деление не всегда. Ограниченность деления является одной из причин, делающих кольцо целых чисел столь интересной и богатой структурой. Говорят, что целое число s делится на целое число г, или что г делит s, или что г является делителем s, если s = га для некоторого целого числа а. Этот факт записывается символом г |$, который читается «г делит з». Если г и делит s, и делится на s, то г -= ±s. Действительно, г — sa и s = rb для некоторых целых чисел а и Ь. Следовательно, г = rab и ab должно равняться 1. Так как а и b оба целые, то они равны 1 или —1. Положительное целое число р > 1, которое делится только на или ±1, называется простым. Наименьшими простыми числами являются 2, 3, 5, 7, 11, 13, ...; число 1 не является про- стым. Не являющееся простым положительное целое число назы- вается составным. Наибольший общий делитель двух целых чи- сел г из обозначается НОД (г, з] и определяется как наибольшее положительное число, которое делит оба из них. Наименьшее общее кратное двух положительных чисел г и з обозначается НОК [г, з] и определяется как наименьшее положительное число, которое делится на оба из них. Два числа называются взаимно простыми, если их наибольший общий делитель равен 1. В кольце целых чисел всегда возможно сокращение; если са = cb и с отлично от нуля, то а ~ Ь. В кольце целых чисел имеется также слабая форма деления, известная под названием деления с остатком или алгоритма деления.
2.6. Кольцо целых чисел 59 Теорема 2.6.1 (Алгоритм целения). Для каждого целого числа с и положительного целого числа d найдется единственная пара целых чисел Q (частное) и s (остаток), таких что с = dQ + s, где 0 s < d. ♦ Частное иногда обозначается чн Обычно нас будет больше интересовать остаток, чем частное. Если s и с при делении на d имеют один и тот же остаток, то это записывается в виде 1 s = с (mod d). Выражение этого вида называется сравнением и читается так: s сравнимо с с по модулю d. В сравнении ни s, ни с не должны быть обязательно меньше d. Мы больше интересуемся остатком. Оста- ток записывается в виде равенства s = Rd [с Не- которое читается так: s равно остатку от деления с на d, или s равно вычету с по модулю d. Мы будем также пользоваться скобками ((c)) для обозначения этих же величин; в этом случае d ясно из кон- текста. Еще одним обозначением является s — с (mod d), в котором вместо знака сравнения стоит знак равенства. Теперь это не сравнение, а остаток от деления с на d. Вычисление остатка от сложного выражения облегчается сле- дующей теоремой, которая утверждает, что можно менять после- довательность выполнения операции вычисления остатка со сло- жением и умножением. Теорема 2.6.2. Для фиксированного модуля d (i) + = [а] + ЯЛЬ]]( (ii) Rd[a.bl = RdUMal-RdM- Доказательство предоставляется читателю в качестве упраж- нения. Наибольший общий делитель двух заданных положительных чисел s и t может быть вычислен с помощью итеративного приме- нения алгоритма деления. Эта процедура известна как алгоритм Евклида. Предположим, что t < s; алгоритм Евклида сводится к последовательности шагов s = Q^t + /(*>,
60 Гл. 2. Введение в абстрактную алгебру /(О = Q(3)^2) _j_ /(3), Цп-2) = QW^n-l) _j_ /(л-1) = Q(«+l)/(«), где остановка процесса наступает при получении нулевого остатка. Последний ненулевой остаток, равен наибольшему общему делителю. Этот фант будет доказан в следующей теореме. Матрич- ные обозначения позволяют кратко записать шаги алгоритма Евклида в виде Г 1 ГО II Г s‘r-» I [ Цг) ] = 1 _Q(r) ] /(r-1) J- Теорема 2.6.3 (Алгоритм Евклида). Для двух заданных поло- жительных чисел s и t, где s > t, пусть s<0) = s и t(Q} = t. Реше- ние рекуррентных уравнений Г s(') 1 г о 1 1 Гs(r-1) 1 [ /(') J = [ 1 —Q(') ] [ J’ при г = 1, ..., п дается величиной 5^)-= НОД Is, /], где п равно наименьшему целому числу, для которого t(n) = 0. Доказательство. Так как /<г+1> < Z(r) и все остатки неотрица- тельны, то в конце концов наступит п, для которого = 0, так что завершение работы алгоритма произойдет обязательно. Легко проверить, что ГО 1 I-1 Г Q<ri 1 1 1 _Q(r) j = [ 1 о ] Поэтому :)}[?]• так что s(n) должно делить оба числа s и t и, следовательно, делит НОД [s, f]. Далее, Г j Г А Г 0 1 11 Г s 1 I. о J = t АЛ L 1 -Q(0 J J Id’ так что любой делитель чисел s и I делит s<rt). Следовательно, НОД [s, Л делит s(f,) и делится на Таким образом, S<«) = НОД [s, Л. Это завершает доказательство. □
2.6. Кольцо целых чисел 61 Из этой теоремы вытекает несколько важных следствий. Пусть -in л.н: Следствие 2.6.4. целые числа а и Ь.} Тогда получаем следствие* являющееся важным и интуитивно непредсказуемым результатом теории чисел, утверждающим, что наибольший общий делитель двух целых чисел равен их линейной комбинации. Для любых целых чисел s и t найдутся такие что у НОД [s, Л = as+ bt. Достаточно доказать следствие для положи- Доказательство. тельных s и t. Так и S(«) = НОД [s, Л, то утверждение выполняется при а — Лц* и b = A Й’. □ Из доказательства этого следствия видно, как целые числа а и b вычисляются в виде элементов матрицы А. Остальные два эле- мента матрицы также имеют свою интерпретацию, для описания которой нам понадобится обратная к матрице А(г). Напомним, что Отсюда видно, что определитель матрицы А(г) равен (—1)г. Обрат- ная к А(г) матрица равна л!? лй]-1 Г -^’1 л£> 4?] ( ’Ч-лЙ’ л1,? ] Следствие 2.6.5. Получаемые в процессе алгоритма Евклида матричные элементы ЛЙ’ и А Й* удовлетворяют равенствам s = (—l)"A<"> НОД[5, /]. i = — (—1)« Л<«> НОД [s, Л- Доказательство. Используя выписанное выше выражения для обратной матрицы и обращая первое равенство из доказательства следствия 2.6.4, получаем Утверждение вытекает отсюда непосредственно. □
62 Гл. 2. Введение в абстрактную алгебру Используя алгоритм деления, можно вычислить наибольший общий делитель двух целых чисел. Например, НОД [814, 1871 находится следующим образом: -17 -13? [814 74j [187_ О 11 11 [Ь 11 ГвиЪ -2 |_l -4J (187J з Из этих вычислений сразу следует, что НОД [814, 187] равен 11 и что НОД [814, 187] = 33Х 814—13 X 187. 2.7. Кольца многочленов Для каждого поля F имеется кольцо F [xl, называемое коль- цом многочленов на F. Во многих отношениях кольцо многочле- нов аналогично кольцу целых чисел. Чтобы сделать эту анало- гию очевидной, в изложении данного раздела мы следуем разд. 2.6. Многочленом над полем F называется математическое выра- жение f (*) = fnX" + . + Дх + Д = S f,x‘, i=0 где символ х называется неопределенной переменной, а коэффи- циенты /0, ..., fn принадлежат полю. Нулевым многочленом назы- вается многочлен f (х) = 0. Степень многочлена обозначается deg f (х) и определяется как индекс старшего ненулевого коэффи- циента. По определению степень нулевого многочлена полагается равной отрицательной бесконечности (—оо). Приведенным много- членом называется многочлен, старший коэффициент fn которого равен 1. Два многочлена равны, если равны все их коэффи- циенты Д. В кольце всех многочленов над заданным полем сложение и умножение определяются как обычные сложение и умножение многочленов. Такое кольцо многочленов определено для каждого поля F и обозначается символом F [х]. В исследованиях по этому кольцу элементы поля F иногда называются скалярами. Суммой двух многочленов из F [х 1 называется другой много- член из F [х], определяемый равенством I (x} + g(x}= S + 1=0 где, конечно, члены с индексом, большим наибольшей из степеней многочленов f (х) ng (х), равны нулю. Степень суммы не превос- ходит наибольшей из этих двух степеней. Произведением двух
2.7. Кольца многочленов 63 многочленов из F [х] называется многочлен из F [х], определяе- мый равенством f W g W = S (x‘- Степень произведения равна сумме степеней множителей. Если / (х) =/= 0 и g (х) Ф 0, то / (x)-g (х) У= 0, так как deg р (х) равно отрицательной бесконечности тогда и только тогда, когда р (х) = 0. В кольце многочленов вычитание возможно всегда, а деление не всегда. Будем писать r(x)|s(x) и говорить, что многочлен $ (х) делится на многочлен г (х), или что многочлен г (х) делит s (х), или что г (х) является делителем многочлена s (х), если су- ществует многочлен а (х), такой что г (х) а (х) = s (х). Ненулевой многочлен р (х), делящийся только на р (х) или на произвольный элемент а поля, называется неприводимым многочленом. Приве- денный неприводимый многочлен называется простым много- членом . Что^ы выяснить, является ли многочлен простым, надо знать поле, над которым он рассматривается. Многочлен х4 — 2 яв- ляется простым над полем рациональных чисел, но не над полем вещественных чисел, над которым он распадается в произведение двух простых многочленов: р (х) = (х2— )/~2) (х2 + 1'2). Над полем комплексных чисел каждый из последних многочленов не является простым. Если г (х) и делит s (х), и делится на s (х), то г (х) — as (х), где а — элемент поля F. Это доказывается следующим образом. Должны существовать многочлены а (х) и b (х), такие что г (х) = = .$ (х) а (х) и s (х) = г (х) b (х). Следовательно, г (х) = г (х) X X b (х) а (х). Но степень стоящего справа многочлена равна сумме степеней многочленов г (х), а (х) и b (х). Так как эта сумма должна равняться степени многочлена, стоящего слева, то многочлены а (х) и b (х) должны иметь степени, равные нулю, т. е. являться скалярами. Наибольший общий делитель двух многочленов г (х) и s (х) обозначается НОД [г (х), s (х) ] и определяется как приведенный многочлен наибольшей степени, делящий одновременно оба из них. Если наибольший общий делитель двух многочленов равен I, то они называются взаимно простыми. Наименьшее общее кратное двух многочленов г (х) и s (х) обозначается НОК k (х), s (х) ] и определяется как приведенный многочлен наименьшей степени, делящийся на оба из них. Мы увидим, что наибольший общий делитель и наименьшее общее кратное многочленов г (х) и s (х) определены однозначно. В поле вещественных чисел операция дифференцирования вво- дится через операцию предельного перехода. Это определение возможно не всегда, так как в некоторых полях отсутствует по-
64 Гл. 2. Введение в абстрактную алгебру нятие произвольно малого числа. В таких полях удобно просто ввести операцию над многочленами, результат которой ведет себя так, как вела бы производная. Такой многочлен называется формальной производной от многочлена. Определение 2.7.1. Пусть г (х) = гпхп + гп^хп-1 Ч-----------1- + Г]Х + г0 есть многочлен над полем F. Формальной производной от г (х) называется многочлен вида г’ (k) = (ЛГ„) X"-1 + ((п — 1) r„j) х”~' + . . . + г„ где новые коэффициенты вычисляются в поле F как суммы i ко- пий элемента г4: (irt) = г, + rt + ... + Г|. Легко проверить, что сохраняются многие полезные свойства производных, а именно, что [г (х) $ (х) Г = г' (х) s (х) + г (х) s' (х), , и что если а2 (х) делит г (х), то а (х) делит г' (х). В кольце многочленов над полем возможно сокращение; если ; с (х) а (х) = с (х) b (х) и с (х) отличен от нуля, то а (х) = b (х). Кроме того, в кольце многочленов имеется слабая форма деления, известная под названием деления с остатком или алгоритма деления. Теорема 2.7.2 (Алгоритм деления для многочленов). Для каждого многочлена с (х) и ненулевого многочлена d (х) существует 1 единственная пара многочленов Q (х) (частное) и s (х) (остаток), | таких что .1 с (х) = Q (х) d (х) + s (х) I и deg s (х) < deg d (х). | Доказательство. Частное и остаток находятся по элементар- | ному правилу деления многочленов. Они единственны, так как 1 если с (х) = Qi W d (х) + Si W = Чг (X) d (х) + s, (х), ТО ' d (х) [Q, (х) — Q, (х) ] = s, (х) — s2 (х). ; В правой части равенства стоит ненулевой многочлен, степень которого меньше deg d (х), а в левой — ненулевой многочлен, степень которого не меньше deg d (х). Следовательно, оба много- члена равны нулю, и представление единственно. □ Практически вычисление частного и остатка выполняется i с помощью простого правила деления «уголком». Частное иногда обозначается
2.7. Кольца многочленов 65 Обычно мы будем больше интересоваться остатком, чем частным. Остаток часто записывается в виде s (х) = [с (х) 1, ИЛИ s (х) = с (х) (mod d (х)). Можно записать также сравнение , s (х) = с (х) (mod d (х)), которое обозначает, что многочлены s (х) и с (х) имеют один и тот же остаток при делении на d (х). Чтобы найти Rd(x) Ic (х)], казалось бы, надо выполнить деление. Однако имеется несколько приемов, позволяющих сократить и упростить необходимую для этого работу. Прежде всего заметим, что Rdix} [С (х) ] = Rd[x) [с (х) + а (х) d (х) 1. Не изменяя остатка, к с (х) можно прибавить любое кратное много- члена d (х). Следовательно, не изменяя остатка, можно исключить старший коэффициент многочлена с (х), прибавляя соответству- ющее кратное многочлена d (х). Используя этот метод при при- ведении многочлена с (х) по модулю приведенного многочлена d (х) = х" + f dtx‘, »=0 для упрощения можно член хп заменить многочленом —S£=odjXr всюду, где это удобно. Такой прием упрощает вычисление остатка путем деления многочленов «уголком». Другой способ упрощения задачи вычисления остатка от деле- ния дается следующей теоремой. Теорема 2.7.3. Если многочлен d (х) кратен многочлену g(x), то Rg (х) [а (х)] = Rg {х) [Rd (х} [а (х)]] для любого а (х). Доказательство. Пусть d (х) = g (х) h (х) для некоторого h (х). Раскрывая правую часть, получаем а (*) = Qx (х) d (х) + Rd(X} [а (*)] = = Qi (х) h (х) g (х) + Q2 (х) g (х) + Rs(x} [RdW [а (х)]], "X где степень остатка меньше degg(x). Раскрывая левую часть, имеем а (х) = Q (х) g (х) + ReM [а (х) ], и, согласно алгоритму деления, такая запись однозначна при степени остатка, меньшей deg g (х). Теорема вытекает из отожде- ствления подобных членов в обоих выражениях. □ В качестве примера использования теоремы 2.7.3 разделим 3 Блейхут Р.
66 Гл. 2. Введение в абстрактную алгебру х7 + х + 1 на х4 + х3 4- х2 + х + 1. Деление «уголком» было бы утомительно, но если вспомнить, что (х — 1)(х4 + х34-ха + + х + 1) = х5 — 1, то можно сначала разделить на х5 — 1, а затем на? + х8 + х2 + х~Н. Тогда Ял*-! [х7 + X 4~ 1 ] = X3 + х + 1, и теперь деление на х4 4- х3 + х2 + х + 1 тривиально, так что ^?лг*-|-л3-|-лг4-л:+1 [х7 4~ Я 4~ 1] = X2 + X 4~ 1. Другое удобное правило дается следующей теоремой. Теорема 2.7.4. (i) Rd w [а (х) 4- b (х)] = Rd 1х) [а (х)] 4- Rd [х) [& (х)]. (ii) Rd(x} [а (хИ (*)1 = Rdw {Raw [а (х)]-^(г) [Ь (х)](. Доказательство. Применяя алгоритм деления к обеим частям первого равенства, запишем а (х)+ b (х) = Q (х) d (х) + Rd la (х) + b (х) ] и а (х) 4- & (х) = Q' (х) d (х) 4- Rd [х) [а (х)] 4- 4~ Q (х) d (х) 4- Rd (х) [b (л)]- Часть (i) вытекает из однозначности алгоритма деления. Часть (И) доказывается аналогичным образом. □ Подобно тому как часто бывает полезным представление целых чисел в виде произведения простых сомножителей, часто бывает полезным представление многочленов в виде произведения непри- водимых многочленов. Чтобы сделать разложение целых чисел на простые множители однозначным, приходится ограничить рас- смотрение только положительными простыми числами. Анало- гично, для однозначности разложения многочленов приходится условиться, что используемые в качестве простых делителей многочлены являются приведенными многочленами. Теорема 2.7.5 (теорема об однозначном разложении). Много' член над некоторым полем однозначно разлагается в произведение элемента поля и простых над данным полем многочленов, причем степень каждого из них равна по меньшей мере 1. Доказательство. Ясно, что входящим в произведение элемен- том поля является коэффициент рп, где п — степень разлагаемого многочлена р (х). Этим элементом можно пренебречь и доказы- вать теорему для приведенных многочленов. Предположим, что теорема не верна и пусть р (х) — приве денный многочлен наименьшей степени, для которого она не верна-
2.7. Кольца многочленов 67 Тогда имеются два разложения, р (х) = «1 (х) а2 (х) ... ак (х) = (х) Ь2 (х) ... Ь} (х), где ак (х) и bj (х) — простые многочлены. Все многочлены ак (х) должны отличаться от всех многочле- нов bj (х), так как в противном случае можно было бы сократить общие члены и получить многочлен меньшей степени, который можно разложить двумя разными способами. Без потери общности предположим, что степень многочлена Ь, (х) не больше степени многочлена а2 (х). Тогда fil (X) = /?! (х) Q (X) + S (X), где deg s (х) < deg Ьг (х) < deg ах (х). Далее, s (х) а.2 (х).. .ah (х) - Ьг (х) (х).. (х) — Q (х) а2 (х).. .ah (х)]. Разложим многочлен s (х) и стоящий в квадратных скобках много- член на простые множители, разделив, если надо, на соответ- ствующий элемент прля так, чтобы все множители были приве- денными. Поскольку Ь2 (х) не содержится в левой части, мы полу- чили два различных разложения приведенного многочлена, сте- пень которого меньше степени многочлена р (х). Это противоречие доказывает теорему. □ В силу теоремы об однозначном разложении теперь ясно, что НОД [з (х), /(х)] и НОК [з (х), /(х)] являются единственными для любых двух многочленов s (х) и t (х), так как наибольший общий делитель равен произведению всех общих для s (х) и i (х) простых делителей, причем каждый делитель входит в наимень- шей из степеней, в которой он входит в s (х) и в t (х), а наименьшее общее кратное равно произведению всех простых делителей, вхо- дящих либо в з (х), либо в t (х), причем каждый делитель входит в наибольшей степени, в которых он входит в з (х) или в t(x). Из алгоритма деления для многочленов вытекает важное след- ствие, известное под названием алгоритма Евклида для много- членов. Для заданных двух многочленов s (х) и t (х) их наиболь- ший общий делитель может быть вычислен с помощью итератив- ного применения алгоритма деления. Без потери общности можно полагать, что deg з (х) >• deg I (х); алгоритм состоит из последо- вательности шагов s (х) = Q<‘> (X) t (X) + tm (х), i(x) = Q<2’ (x)f<'>(x) + Z'2> (x), t<‘> (x) = Q<3> (x) t<2> (x) + Z<3> (x), l<n~2> (x) = Q,n> (x) (<»-» (x) + /<"> (x), (x) = Qi’+D (x) (<"> (x), 3"
68 Гл. 2. Введение в абстрактную алгебру где остановка процесса наступает при получении нулевого остатка. Последний ненулевой остаток (х) равен наибольшему общему делителю. Доказательство этого факта дается следующей теоремой. Теорема 2.7.6 (Алгоритм Евклида для многочленов). Для двух Заданных многочленов s (х) u t (х) с deg s (х) deg t (х) пусть s(0) (х) ~ s (х) и t(0) (х) = t(x). Решение рекуррентных уравнений (х) = [ &(Г- П W 1 Г stH (х) ] Г О 1 1 Г sf-1’ (X) 1 L *lr) (*) J L 1 —Q(r) (*) 1 L W J . при r ~ 1, .... n дается величиной s<«> (x) = а НОД [s (x), i(x)l, где n — наименьшее положительное число, для которого (х) = = 0 и а =£ 0 принадлежит полю. Доказательство. Так как deg ^f+,) (х) < deg tlr} (х), то для некоторого п обязательно наступит событие t{n} (х) = О, так что алгоритм будет завершен. Легко проверить, что го. 1 -I-1 _ Г Q(r) (X) 1 1 L1 -Q(r> W J 11 о J Следовательно, i oJjL о ]’ так что многочлен s’1” (х) должен делить оба многочлена s (х) и t (х) и, следовательно, НОД [s (х), Цх)1. Далее, Г^’Ш С 'ГО 1 П Г s (х) 1 L О J I in LI (X) В L Ш ’ так что любой делитель обоих многочленов s (х) и t (х) должен делить и многочлен s(n> (х). Таким образом, НОД [s (х), t (х) 1 делит $(л) (х) и делится на sn (х), и, следовательно, s^> (х) = а НОД [s (х), t (х)], где а — ненулевой элемент поля. Это завершает доказательство теоремы. □ Снова, как и в случае с кольцом целых чисел, получаем два важных следствия. Определим матрицу многочленов А<н(х)=п[1 = _Q(r)
2.7. Кольца многочленов 69 где А(0) (х) есть единичная матрица. Тогда мы имеем следующий результат. Следствие 2.7.7. Для любых двух многочленов s (х) и t (х) над полем F существуют два других многочлена а (х) и b (х) над тем же полем, такие что НОД Is (х), t (х) I ~ а (х) s (х) + b (х) t (х). Доказательство. Так как и (х) = а НОД Is (х), /(х)1, то утверждение следствия вы- полняется при а (х) = а'Мц’ (х) и b (х) = «“’Ai? (х). □ Многочлены а (х) и b (х) получаются из элементов матрицы А(п> (х) делением на а"1. Два других элемента матрицы А (х) также имеют прямую интерпретацию, для описания которой нам надо вычислить обратную к матрице А(г) (х). Напомним, что A(r)(x)=nJ1 _Q(0W], Отсюда видно, что определитель матрицы А<и (х) равен (—1)г, а обратная матрица дается равенством лИ’(х) (X)П""1 = Г 41?(х) -41?(х)1 41? (х) 41?(x)J “ L- 41? (х) 4(i?(x)J' Следствие 2.7.8. Вычисляемые в процессе алгоритма Евклида элементы А Й* (х) и Affl (х) удовлетворяют равенствам S (х) = (-1)" (х) а НОД [s (х), i (х)], . t (х) = - (-1)" (х) а НОД[5 (х), t (x)J. Доказательство. Обратим первое равенство в доказательстве следствия 2.7.7, используя выведенную формулу для [А(Л> (х)]-1: SW]_ Г 4<?>(x) -4g> (х) 1 Г s<"> (х) 1 ’ 1~4И(х) 4<?>(х)П О J’ Отсюда утверждение следствия очевидно. □
70 Гл. 2, Введение в абстрактную алгебру 2.8. Китайские теоремы об остатках 71 В качестве примера использования алгоритма Евклида для многочленов вычислим НОД [s (х), t (х)] при s (х) — х* — 1 и / (х) = х3 + 2х2 + 2х + 1. Имеем Г?”’(х)1 _Го 1 “I Го 1 "I Го 1 1р(х)1 = о J"|_1 - jx - I] [i -X + г] |г(х)] Г-ix - J '1х! - ;х + i 1Тх4 - 1 "L [jx! + ух + 5 -5Х1 + 5Х2 - 5Х + |||х! + 2х: + 2х + 1] f‘7 ! Таким образом, НОД [х4 — 1, х3 + 2х2 -f- 2х + 11 = х + 1. Кроме того, *+ 1 = s W + ("з-*2 ~ х Т ) t как обещано следствием 2.7.7. Можно вычислить значение многочлена р (х) над полем F в любом элементе |3 этого поля. Для этого надо вместо неопреде- ленной переменной х подставить соответствующий элемент 0 и найти элемент р (|3) этого поля. Можно также вычислить значение многочлена в элементе из любого большего поля, содержащего поле F. Для этого надо, вместо неопределенной переменной х подставить значение элемента из расширения поля. Если F — поле вещественных чисел, то вычисление многочлена в расшире- нии поля является знакомой операцией. Многочлены с веществен- ными коэффициентами часто приходится вычислять в поле ком- плексных чисел. Элемент р поля называется корнем многочлена р (х), если р (р) = 0. Корни многочлена не обязательно лежат в его соб- ственном поле. Многочлен р (х) = х2 + 1 не имеет корней в поле вещественных чисел. Теорема.2.7.9. Элемент р поля является корнем ненулевого многочлена 'р (х) тогда и только тогда, когда (х — р) является делителем многочлена р (х). Более того, если степень многочлена равна п, то многочлен имеет в поле не более п корней. Доказательство. Согласно алгоритму, деления, р (х) = (х - Р) Q (х) + s (х), где степень многочлена s (х) меньше единицы, так что s (х) яв- ляется элементом поля, s0. Следовательно, о = Р (₽) = (₽-₽) Q (₽) + So, так что s (х) = s0 = 0. Наоборот, если (х — Р) делит р (х), то Р (х) = (х — ₽) Q (х) и р (Р) = (Р — Р) Q (Р) = о, так что р является корнем много- члена р (х). Теперь разложим многочлен b произведение скаляра и про- стых многочленов. Степень многочлена р (х) равна сумме степеней простых делителей, и один такой простой делитель имеется для каждого корня. Следовательно, число корней не может превос- ходить п. □ Теорема 2.7.10 (Интерполяция Лагранжа). Пусть р0, ..., рп — множество из п + 1 различных точек, и пусть р (рД за- даны для всех k = 0, 1, ..., п. Тогда найдется в точности один многочлен р (х) степени п или меньше, принимающий значения р (pfe) для всех k = 0, ..., п. Этот многочлен дается равенством П(х-₽у) Доказательство. Непосредственной подстановкой pfe вместо х можно убедиться, что многочлен р (х) принимает в этих точках указанные значения. Однозначность представления следует из того, что если рг (х) и р” (х) — два таких многочлена, то много- член Р (х) = р' (х) — р” (х) имеет степень, не превосходящую п, но пФ 1 корней рм при k — 0, ..., п. Следовательно, Р (х) является нулевым многочленом. □ 2.8. Китайские теоремы об остатках Любое неотрицательное целое число, не превосходящее произ- ведения модулей, можно однозначно восстановить, если известны его вычеты по этим модулям. Этот результат был известен еще в древнем Китае и носит название китайской теоремы об остатках. Формулировка китайской теоремы об остатках приведена на рис. 2.2. Мы будем доказывать ее в два этапа. Сначала будет доказана единственность решения, а затем (построением процедуры отыскания решения) его существование. Прежде чем строить формальную теорию, приведем простой пример. Выберем в качестве модулей т0 = 3, тг — 4 и гщ = 5 и положим М = = 60. Для заданного числа с, лежащего в интервале 0 < с < 60, обозначим а — Rm. [cl. Китайская теорема утверждает, что между шестьюдесятью такими числами с и шестьюдесятью векторами (с0, сх, с2) соответствующих вычетов
72 Гл. 2. Введение в абстрактную алгебру Прямые уравнения Ч = kJ >• = 0. * где mj взаимно просты Обратные уравнения k с = (mod Л!) 1=0 k где М — П пц Mt ~ М/т{ i-0 и являются решениями уравнений WfAfj + Л{/П; “ I Рис. 2.2. Китайская теорема об остатках. существует взаимно однозначное соответствие. Предположим, что = 2, сг = 1 и с2 = 2. Тогда эти условия приводят к следующим возможностям: с € }2, 5, 8, И, 14, 17, 20, 23, 26, 29, ...}, {1, 5, 9, 13, 17, 21, 25, 29, 33, с G {2, 7, 12, 17, 22, 27, 32, 37, Единственным решением служит с = 17. Позже будет дан про- стой алгоритм вычисления числа с по его вычетам. В рассмотренном примере число однозначно было восстанов- лено по его вычетам. В следующей теореме доказывается, что это имеет место в общем случае. Теорема 2.8.1. Для заданного множества целых положитель- ных попарно взаимно простых чисел т0, пц, mh и множества неотрицательных целых чисел с0, ..., с^ при ct < тг система ct — с (mod mt), i = 0....k, k имеет не более одного решения в интервале 0<^с<Р[/п^ Доказательство. Предположим, что с и с' являются двумя лежащими в рассматриваемом интервале решениями. Тогда с — Qimi -j- Ci и с' = Ql/Hf -j- c'i и, следовательно, с — с' кратно mt для каждого I, а так как пц k попарно взаимно просты, то с — с* кратно Но число с — с'
2.8. Китайские теоремы об остатках 73 / k \ ’ к лежит между — Ц mi — 1 и Ц/пг. Единственным ПОЛОЖИТеЛЬ- Vi^ ’/ 1=0 яым числом, удовлетворяющим этим условиям, является с — с' = = 0. Следовательно, с = с'. □ Имеется простой путь построения решения системы сравнений из теоремы 2.8.1, основанный на следствии из алгоритма Евклида. Согласно этому следствию, в кольце целых чисел для каждого $ и i найдутся такие а и Ь, что НОД [s, t] = es + bt. Для заданного множества попарно взаимно простых положитель- ных чисел m0, mlt ..., m^, используемых в качестве модулей, k положим М = Цт; и Mt = Mfuii. Тогда НОД [А4Ь mJ = 1, i~ о и, следовательно, существуют такие целые и nit что NtMi -р П;тг = 1, i = 0, .k. Теперь можно доказать следующую теорему. Теорема 2.8.2. Пусть М = — произведение попарно вза- i=0 имно простых положительных чисел, пусть Mi = Mjm^ и пусть для каждого i удовлетворяют равенствам NiMt + пущ = 1. Тогда единственным решением системы сравнений Ci — с (mod mJ, i = 0.... k, является - к с — J CiNiMt (mod М). (=0 Доказательство. Поскольку мы уже знаем, что решение рас- сматриваемой системы сравнений единственно, надо только до- казать, что выписанное выше с действительно является решением. Но для такого с k с = S crNrMT = CiNiMt (mod mJ, r=0 ибо гщ делит Mr при r i. Наконец, так как NtMt 4~ = 1, то NtMi = 1 (mod mJ и c = c; (mod mJ, что и завершает дока- зательство. □ Чтобы проиллюстрировать теорему 2.8.2, продолжим преды- дущий пример. Заметим, что М = 60, Мо = 20, = 15 и Mz *= 12. Далее, как можно вычислить по алгоритму Евклида или- просто проверить, 1 = (—1) Л40 + 7m0, 1 = (—1) J- 4/пх,
74 Гл. 2. Введение в абстрактную алгебру Прямые уравнения (х) =-- R [с(х)], i=0..............k, т' \х) где (х) взаимно просты Обратные уравнения k с(х) = с<° (*) N<,1} WAl(i) (х) (mod Л< (х)) 1=0 где М (х) = П т(Г> (х), Л1(;> (х) = М (х^т^ (х) /=о и Л^* (х) являются решениями уравнений #<'> (х) (х) + n"> (х) m(() (х) = 1 Рис. 2.3. Китайская теорема об остатках для многочленов. 1 = (—2) Afs + 5m2. Следовательно, — —20, — —15, ~24 и с = —20со — 15сх — 24с2 (mod 60). В частности, при с0 = 2, сг = 1 и с2 = 2 имеем с = —103 (mod 60) = 17, что мы видели и раньше. Китайская террема об остатках является основой представле- ния целых чисел, в котором просто выполняется операция умно- жения. Допустим, что надо выполнить умножение с = ab. Пусть «г = Rmi la], = Rmi IM и Ci = Rm{ Id для каждого i = = 0, ..., k. Тогда ct = atbi (mod /nJ, и это умножение вычислить легче, так как и bi являются малыми целыми числами. Анало- гично, при сложении с — а + b имеем ct = + bi (mod mt) для всех i —- 0, ..., k. В обоих случаях для получения окончатель- ного ответа с должно быть восстановлено по вычетам в соответ- ствии с китайской теоремой об остатках. Переход к системе вычетов позволяет разбить большие целые числа на маленькие кусочки, которые легко складывать, вычи- тать и умножать. Если вычисления состоят только из этих опе- раций, то такое представление является альтернативной арифме- тической системой. Если вычисления достаточно просты, то пере- ход от естественной записи целых чисел к записи через систему остатков и обратное восстановление ответа в целочисленном виде могут свести на нет все возможные преимущества при вычисле- ниях. Если, однако, объем вычислений достаточно велик, то такой переход может оказаться выгодным. Это происходит по- тому, что при вычислениях все промежуточные результаты можно сохранять в виде системы остатков, выполняя обратный переход к целочисленному виду только при окончательном ответе.
2.8. Китайские теоремы об остатках 75 В кольце многочленов над некоторым полем также имеется китайская теорема об остатках, формулировка которой приве- дена на рис. 2.3 и которая доказывается по той же схеме, что и для целых чисел. Теорема 2.8.3. Для заданного множества попарно взаимно про- стых многочленов m(0) (х), m(l) (х), ..., (%) и множества много- членов с<0) (х), (х), c(fe> (х), таких что deg с(0) (х) < < deg m(i) (х) система уравнений с(о (х) - с (х) (mod m<0 (х)), i = 0......k, имеет'не более одного решения с(х), удовлетворяющего условию k deg с (х) < У1, deg nW (х). г=о Доказательство. По существу доказательство совпадает с до- казательством теоремы 2.8.1. Предположим, что имеются два решения, а именно с (х) = QW (х) т1^ (х) + с(') (х) cr (х) = Q' (х) (х) + (х), так что разность с (х) — с' (х) кратна многочлену nW (х) для каждого i. Тогда многочлен с (х) — с' (х) кратен и многочлену Д m(i> (х), причем /=о deg [с (х) — с' (х)] < deg ( П mil> (х)). v—о / Следовательно, с (х) — с' (х) — 0, и доказательство закончено. □ Система сравнений может быть решена так же, как и в случае кольца целых чисел. В кольце многочленов над некоторым полем для любых заданных s (х) и t (х) существуют многочлены а (х) и b (х)п удовлетворяющие условию НОД [s (х), t (х) 1) = а (х) s (х) + b (х) t (х). k Пусть М (х) = (х) и (х) = М (х)/т.1 (х); тогда НОД [Л4<г> (х), m(t’> (х) 1 = 1. Пусть (х) и (х) удовлетво- ряют равенству NW (х) ЛВ*1 (х) -f- (х) т^ (х) = 1. k Теорема 2.8.4. Пусть М (х) = П^(г) (х) — произведение по- г=0 парно взаимно простых многочленов; пусть (х) = М (х)/т11) (х) и для всех i многочлены (х) удовлетворяют условиям
76 Гл. 2. Введение в абстрактную алгебру (х) (х) + nil> (V) п№ (х) = 1. Система сравнений с(/>(х) = е(х) (modm^ifx)), i = 0, имеет единственное решение, даваемое многочленом k с (х) = S с»> W ЛГ»> (х) Л4(() (х) (mod М (х)). *=0 Доказательство. Нам нужно только доказать, что многочлен с (х) удовлетворяет каждому сравнению данной системы. Но с (х) = (х) Nil> (х) (х) (mod (х)), так как т(<) (х) является делителем многочлена (х), если г У= /. Наконец, так как AZW (х) М{1} (х) 4- n(i) (х) т{(} (х) = 1, то N{i} (х) (х) = 1 (mod (х)) и с (х) = c(Z) (x)'(mod т® (х))> что и завершает доказательство теоремы. □ Задачи 2.1. а. Показать, что существует только одна группа с тремя элементами. По- строить ее и показать, что она абелева. б. Показать, что существуют только две группу с четырьмя элементами. Построить их и показать, что они обе абелевы. Показать, что одна из двух групп с четырьмя элементами не содержит элементов порядка четыре. Эта группа называется четверной группой Клейна, 2.2. Пусть групповая операция на группах из задачи 2.1 называется сложе- - нием. а. Определить умножение на трехэлементной группе так, чтобы она стала кольцом. Является ли такое определение единственным? б. Для каждой из четырехэлементных групп определить умножение так, чтобы превратить их в кольца. Является ли каждое определение един- ственным? 2.3. Какое из трех построенных в задаче 2.2 колец является полем? Можно ли задать другое умножение так, чтобы получить поле? 2.4. Доказать, что в циклической группе с q элементами выполняются равенства aQ = д° и (й9-1 = 2.5. а. Показать, что Z2 X Z3 изоморфно Z8. б. Показать, что Z2 X Z4 не изоморфно Z8. 2.6. Привести пример кольца без единицы. 2.7. Отталкиваясь от пары {о,-} *-* {Кд} преобразования Фурье, доказать сле- дующие стандартные свойства дискретного преобразования Фурье: а. Линейность: (ао. 4- -Г б. Свойство сдвига: в. Модуляционное свойство: J 2.8. Показать, что преобразование Фурье вектора данных о,- = a>ri, где г — целое число, содержит единственную ненулевую спектральную компоненту. Какова эта компонента, если r = 0? Показать, что все спектральные ком- поненты вектора, имеющего только одну ненулевую компоненту, не равны нулю. 2.9. Доказать, что если А — теплинева матрица, a J — обменная матрица той же размерности, то А7" = JAJ. 2.10. а. Найти НОД 11573,308], используя алгоритм Евклида.
Задачи 77 б. Найти целые числа А и .В, удовлетворяющие равенству НОД [1573,308] = А-1573 + В-308. 2.11. Рассмотрим множество S =\{0, 1, 2, 3], на котором заданы операции 0 J 2 3 0 12 3 12 3 0 2 3 0 1 3 0 12 • 0 12 3 О 0 0 0 o’ 10 12 3 2 0 2 3 1 3 0 3 1 2 Является ли это множество полем? 2.12. Доказать, что комплекснозначное удовлетворяет условию симметрии дискретное преобразование Фурье V^V^„, k = 0, п — 1_, тогда и только тогда, когда преобразуемая последовательность данных является вещественной. 2.13. Пусть G — произвольная группа (не обязательно конечная). Условимся называть групповую операцию умножением и единичный элемент едини- цей. Пусть g — произвольный элемент группы и v — наименьшее положи- тельное число, если оно существует, такое что gv ~ 1, где под gv понимается v-кратное произведение g * g * ... • g. Доказать, что подмножество {g, g2, •••! gv~l> образует в G подгруппу. Доказать, что эта подгруппа является абелевой даже тогда, когда G неабелева группа. 2.14. Доказать, что множество вещественных чисел вида {а-]-ЬК2}, где а и Ь — рациональные числа, образует поле относительно обычных операций сложения и умножения. 2.15. Кольцо кватернионов состоит из всех выражений вида а = а0 + аг1 4- а2/ 4- a&k, где а0, а15 а2 и — вещественные числа, a I, j и k — неопределенные переменные. Сложение и умножение определяются правилами а 4“ b — (о0 4- 4“ (<h 4“ i 4- (°2 4- / 4- (а3 4- Ьэ) k, ab = [а0Ьй — а^! — а2Ь2 — а3Ь3) 4- 4- (Дх&о 4- <4^1 “ аз^г 4- а268) г' 4- 4- (ац&о 4- а3&14- Мз — сц&з) / 4~ 4- (а8^о — “2*1 4- 4- а0Ь3) k. Доказать, что кольцо кватернионов действительно образует кольцо, но не поле. Какое из свойств поля в этом кольце не выполняется? 2.16. Доказать теорему 2.2.5. 2.17. Поле из трех элементов GF (3) задано арифметическими таблицами + 10 1 2 О 1 2 О Io 1 2 1 ! 1 2 О 2 12 0 1 ООО О 1 2 О 2 1 О 2
78 Гл. 2. Введение в абстрактную алгебру Замечания 79 Вычислить определитель следующей матрицы и показать, что ранг ее равен трем: Г2 ‘ 21 М = 1 1 2 . О 1J 2.18. (ДПФ переставленной последовательности). Рассмотрим дискретное пре- образование Фурье п— 1 Vk= J] ®tkvi, k = 0, .... п — 1, f==0 и предположим, что а взаимно просто с п. Пусть перестановка компонент вектора v задается равенством и'; = Доказать, что ="sш*ч' i=i является перестановкой компонент вектора V, задаваемой равенством V'k = V((bk)) для некоторого целого Ь, взаимно простого с п. 2.19. Год содержит самое большое 366 дней. Предположим, что все месяцы за исключением последнего содержат по 31 дню. а. Можно ли однозначно определить порядковый номер дня в году по задан- ным его номерам в месяце и неделе? б. Предположим далее, что месяц содержит 31 день, а неделя — 12 дней. Можно ли теперь однозначно определить порядковый номер дня в году по заданным его номерам в месяце и неделе? в. Используя 31-дневный месяц и 12-дневную неделю, выписать формулу для вычисления порядкового номера дня в году через его номера в месяце и неделе. г. Сделать несколько числовых примеров. 2.20. Сколько векторов содержится в векторном пространстве GFn (2)? 2.21. Правильно ли утверждение о том, что если х, у и z линейно независимы над GF (<?), то также линейно независимы векторы х —|- у, у + z и z+ х? 2.22. Доказать, что если S и Т — два двумерных различных подпространства трехмерного пространства, то их пересечение образует одномерное под- пространство. 2.23. Пусть S — произвольное конечное множество. Пусть G — множества всех подмножеств множества S. Для двух множеств Л и В через А (J В обозначим множество всех элементов, которые принадлежат хотя бы одному из множеств А или В; через А П В — множество всех элементов, которые принадлежат одновременно и А, и В; через А — В — множество элемен- тов, принадлежащих А, но не принадлежащих В. а. Показать, что множество G с операцией объединения U множеств в ка- честве групповой операции * не является группой. б. Операция симметрической разности множеств Д определяется равен- ством А Д В = (А — В) U (В — Д). Показать, что множество G с симметрической разностью в качестве груп- повой операции образует группу. Является ли она абелевой? в. Показать, что множество G с операциями Дир образует кольцо. Яв- ляется ли это кольцо коммутативным? Содержит ли это кольцо единицу? Замечания В этой главе рассматривался обычный материал современной алгебры. Можно указать много учебников, в которых этот материал излагается более детально. В качестве легко усваиваемого вводного курса, по уровню достаточного для данной книги, мы рекомендуем книгу Биркгофа и Маклейна [1] (1941). Монография Ван дер Вардена [2] (1949, 1953) представляет собой курс более высокого уровня, адресованный в основном математикам н углубленно изла- гающий многие вопросы. Материал по линейной алгебре и теории матриц можно найти также и в учебниках, специально Посвященных этим разделам алгебры. Особенно подходящей представляется книга Тралля и Торнгейма [3) (1957), так как в отличие от многих других книг в ней не предполагается, что рассма- триваемое поле является полем вещественных или комплексных чисел г). В книге Полларда [7] в явном виде изложено понятие преобразования Фурье в произ- вольном поле. Поля Галуа названы в честь Эвариста Галуа (1811—1832). Абелевы группы названы в честь Нильса Хенрика Абеля (1802—1829). 1) Не требующее предварительной подготовки хорошее изложение начал линейной алгебры и теории матриц можно найти также в книге: Головина Л. И. Линейная алгебра и некоторые ее приложения. -4-е изд. — М.: Наука, 1985. Более углубленное изложение содержится в следующих книгах: Курош А..Г. Курс высшей алгебры. — 11-е изд. —М.: Наука, 1975; Мальцев А. И. Основы линейной алгебры.-4-е изд. — М.: Наука, 1975. — Прим, перев.
Глава 3 БЫСТРЫЕ АЛГОРИТМЫ коротких СВЕРТОК Наилучший известный способ эффективного вычисления свер- ток состоит в использовании теоремы о свертке и быстрого алго- ритма преобразования Фурье. Этот способ обычно бывает доста- точно удобен и часто работает с удовлетворительной скоростью, хотя существуют и лучшие методы. Однако в тех приложениях, в которых стоит заботиться о дальнейшем снижении вычисли- тельных затрат, целесообразен переход к другим методам. В слу- чае когда длина свертки мала, лучшими с точки зрения числа умножений и сложений являются алгоритмы Винограда вычисле- ния свертки. Описание алгоритмов Винограда занимает основ- ную часть данной главы. В следующих главах будет показано, как можно, соединяя вместе эти малые алгоритмы, строить алго- ритмы для длинных сверток. При таком подходе алгоритмы для длинных сверток окажутся хорошими, только если хороши алго- ритмы для коротких. Поэтому поиску алгоритмов коротких сверток уделяется большое внимание. Детали алгоритмов свертки могут зависеть от конкретного поля, над которым вычисляется свертка, но общая идея постро- ения таких алгоритмов от поля не зависит. Хотя, конечно, наи более важные приложения имеют поля вещественных и комплекс- ных чисел, мы описываем методы построения алгоритмов свертки применительно к любому представляющему интерес полю. 3.1. Циклические свертки и линейные свертки В компактном виде линейная свертка записывается как произ- ведение многочленов s(z)=g(x)d(x). Коэффициенты Sf этого многочлена даются равенствами Si^Egi-iA, i = 0.......L + N-l, л=о где deg g (х) = L — 1 и deg d (x) = N — 1.
3.1. Циклические и линейные свертки «1 Прямые способы вычисления произведения многочленов со- держат число умножений и сложений, примерно равное произ- ведению степеней многочленов, LN', возможны, однако, другие способы вычисления такого произведения, содержащие меньшее число вычислений. Циклическая свертка, $ (х) = g (х) d (х) (mod хп — 1), где deg g (х) = deg d (х) = n — 1, коэффициенты даются равен- ствами St = gtAi—wdk, t=0, ..., n — 1, k=0 и двойные скобки обозначают вычисления по модулю п, если вычислять ее прямо по выписанным формулам, содержит п2 умно- жений и п (п — 1) сложений. Циклическую свертку можно также вычислять как линейную свертку с последующим приведением по модулю хп— I1). Следовательно, эффективные способы вы- числения линейной свертки приводят также к эффективным мето- дам вычисления циклической свертки. Наоборот, эффективные методы вычисления циклической свертки можно легко превратить в эффективные методы вычисления линейной свертки. Популярным способом вычисления циклической свертки яв- ляется использование теоремы о свертке и дискретного преобра- зования Фурье. Согласно теореме о свертке в частотной области, Sft — GhDh, k = 0, ..., п — 1, так что свертку можно вычислять, выполняя последовательно преобразование Фурье, поточечное умножение и обратное пре- образование Фурье. Эта процедура иллюстрируется рис. 3.1. Средний блок содержит п комплексных умножений, что мало по сравнению с п2. Если п имеет много делителей, то описываемое в следующей главе быстрое преобразование Фурье может привести к существенному уменьшению числа вычислений в первом и третьем блоках, сведя их к величинам, также малым по сравне- нию с п2. Приведенная на рис. 3.1 процедура вычисления циклической свертки относится к комплексному случаю. Поэтому естественно ожидать, что в случае вещественных последовательностей этот алгоритм сильнее, чем требуется, него эффективность может быть повышена. Некоторая модификация позволяет почти тем же самым алгоритмом вычислять одновременно две вещественные свертки. х) При N = L линейную (L х ^-свертку часто называют /V-точечной линейной сверткой, а циклическую свертку по модулю хп — 1 часто называют n-точечной циклической сверткой. —Прим, перев.
82 Гл. 3. Быстрые алгоритмы коротких сверток Вход Вычислить Dt = 2 a,kdt * = 0, . 1=0 oh = "f1 <°tkgi k = 0, . 1=0 ., n — I ., Л — 1 I Вычислить Sfc — GfrDk k = 0, ..., n -1 Вычислить n~ I -= 0, .... n - 1 ft=0 ! Выход Рис. 3.1. Вычисление циклической свертки с помощью преобразования Фурье.' Вещественное преобразование Фурье обладает свойством симме- трии (см. задачу 2.12) Vk = V^, k = 0. п-1. Предположим, что сГ и d" — вещественные векторы длины п и пусть компоненты комплексного вектора d длины п задаются правилом = i = 0, .... n-1. Тогда его дискретное преобразование Фурь’е удовлетворяет равен- ствам Следовательно, D'k =4-[o»+o;_*j, k =0, ..., п — 1. D'k =±.[Dk-D*n_k], Эти формулы позволяют вычислить преобразование Фурье двух вещественных последовательностей, выполняя одно дискретное преобразование Фурье и некоторые дополнительные сложения.
3.I-. Циклические и линейные свертки 83 Вход Выход Рис. 3.2. Вычисление двух вещественных циклических сверток с помощью пре- образования Фурье. Описанную идею можно применять и в обратном порядке, начиная с двух комплексных преобразований двух вещественных последовательностей. Для заданных комплексных преобразова- ний D' и D" пусть Dk = D'k + jD’k, k = 0......n — 1, где в общем случае и D'k и Dk являются комплексными числами. Тогда обратное преобразование Фурье приводит к равенствам di = di 4- jd'i I = 0, .... n — 1, из которых обе вещественные последовательности вычисляются немедленно.
84 Гл. 3 Быстрые алгоритмы коротких сверток Используя описанную идею, процедуру на рис. 3.1 можно заменить более эффективной процедурой одновременного вычисле- ния двух вещественных сверток, представленной на рис. 3.2. I 3.2. Алгоритм Кука—Тоома Алгоритм Кука — Тоома является алгоритмом вычисления линейной свертки, который был разработан как метод умножения двух многочленов. Запишем линейную свертку в виде произведе- ния двух многочленов S W = g W d W, где deg d (x) = N — 1 и deg g (x) = L — 1. Степень многочлена s (x) равна N + L — 2, так что этот многочлен однозначно опре- деляется своими значениями в N + L — 1 различных точках. Пусть Ро, ..., Pl+.v_i — множество из L + N — 1 различных вещественных чисел. Если нам известны s(0fe) для k = 0, .... N -Н L — I, то s (х) можно вычислить по интерполяционной фор- муле Лагранжа. Согласно теореме 2.7.10, многочлен П(Х-₽,) s (х) = у s (В,) 4^------- является единственным многочленом степени п—1, принима- ющим значения s (0fe) при х = для всех k = 0, ..., п— 1. Идея алгоритма Кука — Тоома состоит в том, чтобы сначала вычислить величины s (0^) для k = Q, п — 1, а затем восполь- зоваться интерполяцией Лагранжа. Алгоритм Кука — Тоома приведен на рис. 3.3. Умножения даются равенствами s(₽») = £(₽*)<*(₽>). А = 0, .... L + AT-2. Всего имеется L + N — 1 таких равенств, так что здесь мы имеем L + N — 1 умножений, и, если разумно выбирать точки то полное ниями. .... . входят в вычисление величин d (0fe) и g (0ft), и те, которые уча- ствуют в интерноляционной формуле Лагранжа. Но эти умноже- ния представляют собой умножения на малые константы, и мы не будем их учитывать при подсчете полного числа умножений х), хотя полностью их игнорировать нельзя. число умножений будет исчерпываться этими умноже- Имеются еще и другие умножения, а именно те, которые .1) На самом деле не учитывать можно только умножения на 0 и ±1: но, как правило, за счет некоторых предварительных проделанных раз и навсегда вычислений удается свести рассматриваемые константы к трем указанным. — Прим, перге.
3.2. Алгоритм Кука—Тоома 85 Рис. 3.3. Структура алгоритма Кука—Тоома. Простейшим,-примером является линейная (2х2)-свертка: d (х) = d,x g (х) = gtx + g„ и s (х) = d (х) g (х). К та- кому вычислению сводится прохождение двух отсчетов данных через КИО-фильтр с двумя отводами. Очевидный алгоритм вы- полнений такого вычисления содержит четыре умножения и одно сложение, но мы построим алгоритм с тремя умножениями, тремя сложениями. Может показаться, что эта задача слишком мала для каких-либо практических применений. Но на самом деле хороший алгоритм решения этой задачи является хорошим бло- ком, из которого можно строить тщательно проработанные алго- ритмы. Таким образом, рассматриваемый пример представляет собой нечто большее, чем простую иллюстрацию алгоритма Кука — Тоома; он важен практически х). В качестве первой попытки опишем алгоритм с тремя умно- жениями и пятью‘сложениями, а затем его улучшим. Так как х) Первым, еще до Тоома (1963) и Кука 0966), способ выполнения (2X2)- свертки с тремя умножениями и четырьмя сложениями описал А. Карацуба [ДАН, 145 (1962), 293, 294]; его алгоритм состоит в следующем: s0 = s2 = = ^igi, I = (do + dt) (go-f-gi), Si = I — s0 — Sa. — Прим, nepee.
86 Гл. 3. Быстрые алгоритмы коротких сверток степень многочлена s (х) равна двум, то надо выбрать три точки. Выберем их равными р0 = 0, = 1 и р2 = —1. Тогда d (₽„) = d„, g (₽о) = go, d (Pi) = d0 + di, g (Pi) = go + gi, d (Pa) ~ d0 dlt g (P2) — go gi S (Po) = g (Pc) d (Po), s (Pi) = g (Pi) d (₽,). s (Pa) = g (Pa) d (Pa), так что требуются три умножения. Если КИО-фильтр задается фиксированным многочленом g (х), то константы g (pfe) не надо каждый раз вычислять заново; их можно вычислить заранее один раз и запомнить. Коэффициенты многочлена g (х) в запоминании не нуждаются. Наконец, согласно интерполяционной формуле Лагранжа !(»)=! (Ро) L„ (х) + s (PJ L, (х) + s (Р2) Ц (х), где интерполяционные многочлены равны (х) = -х2 + 1, Lx (х) = (1/2) (х2 + х), Л2 (х) = (1/2) (х2 - х). Это завершает описание алгоритма Кука — Тоома для вычисле- ния s (х). Но вычисления можно организовать в более компактной форме. Деления на 2 можно «похоронить» так, чтобы они не были видны. Для этого просто заменим константы g (0А) новыми, по- глощающими этот делитель. Пусть Go = go, Gi = (1/2) (g0 + Ях). <4 = (1/2) (go-gi). Так как в большинстве случаев многочлен g (х) фиксирован, то эти константы можно вычислить заранее, и ничто не мешает нам определить их таким образом. Тогда Lo (х) = —х2 +1, (х) = х2 + х, L2 (х) = х2 — х. Построенный алгоритм показан на рис. 3.4, айв компактной форме может быть записан в матрично-векторных обозначениях в виде s = С {[Bg]-[Ad]|, где точкой обозначено покомпонентное умножение векторов Bg и Ad. Матричная запись дает удобную форму обозрения алго- ритма, но вычисления, конечно, проводятся не посредством умножения матриц. Умножение на матрицы А и С выполняется как серия сложений. Возможная последовательность вычислений показана на рис. 3.4, Ь.
3.2. Алгоритм Кука—Тоома 87 где Рис. 3.4. Алгоритм Кука—Тоома вычисления линейной свертки 2-точечных век- торов. Алгоритм Кукц—- Тоома можно рассматривать как фактори- зацию матрицы. рассматриваемом примере свертка может быть записана в ви^е So s2 go gl О или, кратко, s = Td. На рис. 3.4с алгоритм Кука — Тоома для этой свертки переписан с использованием диагональной ма- трицы, также обозначенной G и содержащей элементы вектора G. Алгоритм теперь имеет форму s = CGAd, что позволяет интерпретировать его как факторизацию матрицы Т = CGA, где А — матрица предсложений, С есть матрица постсложений, a G — диагональная матрица, ответственная за все умножения. Число умножений равно размерности матрицы G. Такое представление алгоритма очень полезно для обозрения его структуры.
88 Гл. 3. Быстрые алгоритмы коротких сверток В общем случае линейная свертка может быть выражена в виде s = Td, где d — входной вектор длины N, s — выходной вектор длины А + L — 1 и Т представляет собой ((Л/- + L — 1) х А)-матрицу, элементами которой являются компоненты вектора g. Алгоритм Кука — Тоома в такой форме представляет собой алгоритм фак- торизации матрицы Т = CGA, где G — диагональная матрица, а матрицы А и С содержат только малые целые числа. Алгоритм Кука — Тоома можно модифицировать к другому варианту, содержащему то же число умножений, но меньшее число сложений. Заметим, что зь+ЛГ_а == gL~idN^. Для вычисле- ния этого коэффициента необходимо одно умножение. Степень модифицированного многочлена S (х) — sl+n_2xl+n-2 = g(x)d (х) — sL+N_2xr+1V-2 равна L + N — 3, так что использующее идеи алгоритма Кука — Тоома вычисление этого многочлена требует L + N — 2 умноже- ний. Общее число умножений опять равно L + М — 1, но сложе- ний теперь будет меньше. Рассмотрим поведение этой модификации алгоритма Кука — Тоома при вычислении линейной (2х2)-свертки. Выберем 0О = О и pi = —1. Тогда d (₽о) = do, g (Po) = go, d (₽i) = d„~ th, g (P,) = g0 — gi И t (Po) = g (Po) d (po) — gidipo, ^p1) = g(Pi)d(p1)-g,d1₽?> где t (x) = g (x) d (x) — gid^x2. Согласно интерполяционной фор- муле Лагранжа, S W — ZiV' = t (PJ Li (x) + t (Po) La (x), где Lo (x) = x + 1 и Li (x) = —x. Объединение всех этих фрагментов дает искомый алгоритм x)i s(*) = gidiX2 + [—(d0 — dj (g0 — gj) + gidi + god„l * + g„d„. Алгоритм содержит три сложения и три умножения. Его матрич- ная форма выписана на рис. 3.5, который полезно сравнить с рис. 3.4. *) Это приведенный на стр. 85 алгоритм А. Карацубы (1962), в котором не учтено в числе сложений вычисление g0—gx. — Прим, перед.
3.2. Алгоритм Кука—Тоома 89 «о si I О О 1 —1 1 О О I go (go — gl) gl ’1 О~| [dol 1 —1 Ш О 1 Рис. 3.5. Улучшенный алгоритм Кука—Тоома вычисления линейной (2X2)- свертки. Алгоритм Кука — Тоома эффективен по числу умножений-; но если объем задачи растет, то число необходимых сложений также начинает быстро расти. Это происходит потому, что хоро- ший выбор чисел 0* в виде 0, 1 и —1 уже сделан, и с ростом задачи мы должны использовать также ±2, — 3 и другие малые целые числа. При этом матрицы А и С будут содержать эти числа. Ко- нечно, умножения на них можно заменить соответствующим числом сложений, но это резонно делать только в случае, когда выбираемые числа малы. Поэтому алгоритм Кука — Тоома ста- новится слишком громоздок при вычислении сверток, больших чем 3x4 или 4x4. Для больших задач надо пользоваться описы- ваемыми в следующем разделе алгоритмами Винограда вычисле- ния сверток или итерировать малые алгоритмы Кука — Тоома, используя изучаемые в гл. 7 гнездовые методы. Имеется еще один подход к пониманию алгоритма Кука — Тоома, и эта альтернатива перекидывает мостик к следующему Вход ► Выход Рис. 3.6. Другое описание алгоритма Кука—Тоома.
90 Гл. 3. Быстрые алгоритмы коротких сверток разделу. Вместо того чтобы выбирать множество различных чисел {0о, 01, • ••, Рь+.у-г), выберем множество многочленов {х— ро, х — Pi, •••, х — 0L+w-ah Тогда можно, как на рис. 3.6, записать g (₽s) = [g (х)1, d (₽*) = Id (x)]. Это просто несколько более сложный способ сказать то же, что говорилось и раньше. Преимущество, реализуемое в следующем разделе, состоит в замене многочленов первой степени многочле- нами более высоких степеней, что увеличивает конструктивные возможности. С этой более изощренной точки зрения интерполя- ционную формулу Лагранжа можно рассматривать как некото- рую форму обращения китайской теоремы об остатках для того частного случая, когда в качестве многочленов-модулей выбраны только многочлены первой степени. В более общем случае интер- поляционную формулу Лагранжа приходится отвергнуть, отдавая преимущество китайской теореме об остатках. 3.3. Алгоритмы Винограда вычисления коротких сверток Предположим, что требуется вычислить s (х) = g (х) d (х) (mod tn (х)), где т (х) — фиксированный многочлен степени п над полем F, a g(x) и d (х) — многочлены над этим же полем, причем их степени меньше п. Задача вычисления линейной свертки s (х) = g (х) d (х) может быть вложена в эту задачу, если в качестве п выбрать целое число, большее степени многочлена s (х), а в качестве т (х) — произвольный многочлен этой степени п. Тогда задача s (х) = g (х) d (х) (mod т (х)) становится тривиальной переформулировкой задачи вычисления линейной свертки, так как приведение по модулю т (х) не меняет s (х), коль скоро степень т (х) больше степени s (х). Это позволяет включить задачу о линейной свертке в общую задачу, рассматри- ваемую в данном разделе. Выбирая т (х) равным хп—1, мы включаем сюда также задачу вычисления циклической свертки, 8 (х) = g (х) d (х) (mod хп — 1). Мы хотим заменить задачу вычисления 8 (х) = g (х) d (х) (mod т (х)) некоторым множеством задач с меньшим числом вычислений. Чтобы разбить задачу на подзадачи, разложим многочлен т (х)
3.3. Алгоритмы Винограда вычисления коротких сверток 91 на взаимно простые над некоторым подполем поля F многочлены: tn (х) = m(0> (х)т^ (х) ... (х). Обычно если F — поле вещественных или комплексных чисел, то\ в качестве подполя разложения выбирается поле рациональных чисел, и мы будем ссылаться на такой выбор, хотя теория до- пускает и другие подполя. (Если свертка вычисляется в конечном поле GF (рт), то в качестве подполя разложения обычно выби- рается простое подполе GF (р)). Процедура ставит своей целью минимизацию числа умножений в поле F, не пытаясь минимизи- ровать число умножений в подполе. В большинстве практических случаев этими умножениями в подполе оказываются умножения на малые целые числа, обычно на —1, 0 или 1, которые триви- альны. Начиная с данного'Момента, мы не будем учитывать умно- жения на рациональные числа в полном числе умножений, хотя практически всегда надо проверять, являются ли эти рациональ- ные числа на самом деле малыми целыми числами. Быстрые алгоритмы свертки основаны на вычетах S(‘>W = K„<4)W[S(X)1, 6 = 0.........К-1. Согласно китайской теореме для многочленов, многочлен s (х) можно вычислить по системе остатков в соответствии с формулой s(x) = а(0) (x)stD|(x) 11 (x)s^-]> (х) (modm(x)), где а(0) (х), .... (х) — соответствующие многочлены с раци- ональными коэффициентами. Разобьем это вычисление на три шага. Сначала вычисляются-"'остатки d(k>> (х) = ld(x)] и gw = \g(x{\ для всех k = 0, ..., К — 1. Эти вычисления не содержат умножений. Затем вычисляются вели- чины / ,s(fe) (х) = g(x)^(x) (mod (х)) = = <«> ( w IS «1 m Ы «11 = Наконец, вычисляется многочлен s (x) = a(D> (x)s<0’ (x) + • • • (x) s**-1) (x) (mod m (x)). Так как коэффициенты всех многочленов a(fe) (х) являются раци- ональными числами, то последний шаг также не содержит умно- жений. Структура алгоритма Винограда для вычисления свертки показана на рис. 3.7. Умножения возникают только на втором шаге при вычислении коротких сверток, задаваемых произведе- ниями многочленов, g<^ (х) (х); так как число коэффициентов у многочленов (х) и d(fe) (х) равно степени много-
92 Гл. 3. Быстрые алгоритмы коротких сверток Выход Рис. 3.7. Структура алгоритма Винограда для коротких сверток. члена (х), то полное число умножений, необходимых для стандартного способа вычисления этих произведений, Л-1 равно [deg (х) Р. Это дает существенное уменьшение k=о числа необходимых умножений. Позже мы увидим, что исполь- зование той же самой идеи разбиения на еще более мелкие под- задачи позволяет добиться улучшения и при вычислении этих составляющих коротких сверток. На рис. 3.8 дается поучительное сравнение алгоритма Вино- града вычисления свертки и алгоритма, основанного на дискрет- ном преобразовании Фурье. Для того чтобы сделать это сравнение более наглядным, алгоритм Винограда выписан в приведенных выше матричных обозначениях. После группировки членов и перехода к матричным обозначениям этот алгоритм записывается в виде равенства s = С ][Bg]-[Ad]}, где точка обозначает покомпонентное произведение векторов Bg и Ad. Из этого сравнения видно, что алгоритм Винограда яв- ляется обобщением метода вычисления сверток с помощью пре- образования Фурье. / В качестве примера рассмотрим вычисление свертки 3-точеч- ного вектора с 2-точечным вектором. Пусть g W = gl* + go. d (x) = d%x2 + dtX + d„.
3.3. Алгоритмы Винограда вычисления коротких сверток 93 Вход Вход Свёртка свёртка S частотной обрасти Винограда Рис. 3.8. Сравнение двух способбв вычисления сверток. Прямое вычисление содержит шесть умножений и два сложения. Мы сначала построим алгоритм, содержащий пять умножений и восемь сложений. Это не очень хороший алгоритм, но его по- строение является поучительным. Позже, будет приведен алго- ритм, который лучше и содержит четыре умножения и семь сло- жений. Степень линейной свертки s (х) = g (х) d (х) равна трем. Вы- берем т (х) = х(х —• 1) (х2 + 1) = (х) m(1) (х) т<2) (х). Множители взаимно просты; возможно и другое разложение многочлена т (х), но для иллюстрации метода мы остановимся
94 Гл, 3. Быстрые алгоритмы коротких сверток на выбранном разложении. g101 (x) = go, g(,)(x) = gi + go, g|2) (x) = gix + g0, Следовательно, si»* 1 (x) = g„d0, Вычеты равны d<«) (X) = d„, d*11 (х) = d2 7- dx d0, d(2> (x) = dtx -j- (d0 — da). s(,)« = (gi + go)№ + di + 4>), s<2> (x) = (gtx + g0) (dtx + (d0 — da)) (mod x2 + 1). При вычислении s(0) (x) требуется одно умножение, при вычисле- нии s<’> (х) 'требуется одно умножение и, как мы увидим, при вычислении s(2) (х) требуются три умножения. Вычисление s(2) (х) сводится к вычислению двух величин 42, = gW-gW. 42) = гМ2»+№ (которые случайно имеют структуру произведения комплексных чисел). Алгоритм этой части вычислений дается равенством и содержит три умножения. Последний шаг состоит в вычислении s (х) по формуле s(x) = a‘°>(x)s(0)(x) + a(l)(x)s<1’(x)+at2)(x)s(2) (х) (mod x4—x34-x2—x), где (x), a(1> (x) и a(2) (x) вычисляются по китайской теореме об остатках следующим образом. Воспользуемся соотношением (х) п№ (х) + JVW (х) (х) = 1 и построим следующую таблицу: к mik\x) M(t)(x)_______ли>(х)__Nik '(х) О X х3 - X1 + А• - I х1 - X + J - I 1 х - I х5 + х - 1(хг + х + 2) 1 2 хг + 1 х* - х- 1 (х - 2)- 1) Тогда aw (х) = Nik>(x) Af(ft)(x). Следовательно, / s(x) = — (х3 — х2 4- * — 1) s<°> (х) + -g- (х3 + х)$<1} (х) + + ~ (х3 — 2х2 4- х) $(2J (х) (mod х4 — х3 4-х2 — х).
3.3. Алгоритмы Винограда вычисления коротких сверток 95 Последнее равенство может быть перезаписано в виде матричного равенства 1 о о о] Г 4"’ -1111 1 0-2 0 -1 1 । -iJLb?'. Теперь для построения искомого алгоритма надо собрать вместе его отдельные части. Всего имеются пять умножений, которые мы выпишем в выбранной единообразной форме — k — 0, 4. Определим новые обозначения, соответствующие этой форме. Используя проделанные вычисления, для вектора D получаем определение Вектор G определяется аналогично, но в его определение мы включим знаменатели, которые должны появиться в матрице постсложений. Поэтому в данном ниже определении вектора G появляется самая левая матрица, содержащая извлеченные из
96 Гл. 3. Быстрые алгоритмы коротких сверток Описанный алгоритм в матричной форме приведен на рис. 3.9. Порядок выполнения сложений в такой форме алгоритма не ука- зан. Читатель может сам поэкспериментировать с выбором по- рядка сложений, минимизируя их число; никакой специальной теории выполнения такой минимизации не разработано. Легко выполнить все предсложения с помощью четырех вещественных сложений. Постсложения можно реализовать с помощью следу- ющих восьми вещественных сложений: •Sq — Sfj, Ci == — S2, c3 1 S3 + S4, S2 == Ci + cx + So, Si — Si “1“ Cg ----- $2> Sg == Cg --- So + Sr Это завершает рассматриваемый пример построения алгоритма Винограда для свертки, но построенный алгоритм можно улуч- шить. Более общая форма алгоритма Винограда соответствует
3.3. Алгоритмы Винограда вычисления коротких сверток 97 Рис. 3.9. Пример алгоритма Винограда вычисления свертки. выбору многочлена т (х) меньшей степени. Эго приводит к не- правильному вычислению свертки, но ошибка легко подправляется с помощью нескольких дополнительных вычислений. Согласно алгоритму деления для многочленов можно записать s (х) = Q (х) т (х) + Rm (Х) [з (х) ]. Мы уже рассмотрели случай deg т (х) >• deg s (х), в котором частное Q (х) тождественно равно нулю. Если deg т (х) deg s (х), то алгоритм Винограда позволяет вычислить s (х) по модулю многочлена пг (х). Член Q (х) т (х) представляет собой погреш- ность, которую можно вычислить дополнительно и прибавить к результату. Простейшим является случай, когда deg т (х) = = degs(x). Тогда многочлен Q (х) является константой, так как его степень должна быть равной нулю. Если т (х) — приведенный многочлен степени п, то, очевидно, Q (х) = sn, где sn — коэффи- циент при хп в многочлене s (х). Следовательно, s (х) = snm (х) + (,) [s (х) ], и'зп легко вычисляется как произведение старших коэффициентов многочленов g (х) и d (х). Эту модификацию можно формально включить в основной алгоритм Винограда для вычисления свертки путем замены многочлена т (х) формальным выражением т (х) (х — оо). Утвер- ждение s (х) = s (х) (mod т (х) (х — оо)) представляет собой просто удобное сокращение для данного выше точного утверждения. Вернемся к предыдущему примеру и применим описанную модификацию алгоритма к вычислению свертки s (Jf) = 4- go) (dtf? + diX + do). В качестве модуля выберем теперь многочлен х (х — 1) (х + + 1) (х — оо). Алгоритм будет содержать четыре умножения; 4 Блейхут Р.
98 Гл. 3. Быстрые алгоритмы коротких сверток множителю (х — оо) соответствует произведение gtdt, а остальные три умножения — это произведения вычетов по модулям х, х — 1 и х + 1. Сразу видно, что S°1 Г1 Г1 ° м s. =1 1 t [gjl li i 1 k s2 ] । -i f ] i -i i LdJ ^0 1] ^0 0 1] Коэффициенты многочлена s (x) с китайской теоремой об остатках: вычисляются в соответствии s (х) - (х) So + (х) (х) S2 + х (х - 1) (х + 1) S3 = — (—+ О ’ ~2” х) ^2 4’ + (х3 - х) S8. Следовательно, I о о О Г 5, 0 1-1-1 •h -1 । 1 0 |52 ?'J L ° ° ° d L sj Окончательная формулировка алгоритма приведена на рис. 3.10. Алгоритм содержит четыре умножения и семь сложений при условии, что диагональная матрица вычисляется заранее. '1 о о 1-1 1 О О I ёо (go - g J) 1 t о Рис. 3.10. Другой пример алгоритма Винограда вычисления свертки. 3.4. Построение алгоритмов коротких линейных сверток Рассмотренный в предыдущем разделе метод Винограда по- строения коротких сверток приводит к хорошим алгоритмам. Однако следует подчеркнуть, что эта конструкция не исчерпы- вает всех возможных путей построения хороших алгоритмов.
3.4 Построение алгоритмов коротких линейных сверток 99 Иногда хорошие алгоритмы удается получить с помощью удачной факторизации. Рассмотрим следующие тождества: god-o ~ godo, gA + gA = (go + gi) (d„ + dj — god„ — gjdj, gA + gA + gA = (g0 + g2) (d0 I d«) — g„d0 + + gA — gA, gA + gA = (g, + g2) (d, + d2) — gA - gA, gA — g‘A, Эти тождества позволяют вычислить коэффициенты свертки $ (х) = = (go + gix “Ь £г*2) (do + djX + d^x-) с помощью шести умноже- ний и десяти сложений. Этот алгоритм, однако, не может быть построен с помощью китайской теоремы об остатках. Матричная форма записи алгоритма дается равенством м о rf, 1 ы. о о Цо 1 1 0 0 g, 0 1 О . gi 0 0 1 j (go + g>) J ’ OJ I (gn + g2) 10 L (g. + gjJL0 1 Этот алгоритм следует сравнить с «наивным» алгоритмом, содер- жащим девять умножений и четыре сложения, и с «оптимальным» алгоритмом, который вскоре будет построен и содержит пять умножений и 20 сложений. Нельзя сказать, какой из этих алго- ритмов лучше. Это зависит от области применения. Позже мы будем строить большие алгоритмы из малых так, что и число умножений, и число сложений большого алгоритма будут в основ- ном зависеть от числа умножений в малом алгоритме. В этой ситуации число сложений малого алгоритма не играет суще- ственной роли. На рис. 3.11 затабулированы характеристики некоторых алгоритмов линейных сверток; на рис. 3.12 приведены некоторые из них. Оптимальный алгоритм линейной (3 X 3)-свертки выписан в виде примера на рис. 3.12. Оптимальный по числу умножений алго- ритм содержит пять умножений. Он подсказан описанным в разд. 3.8 алгоритмом Кука — Тоома, который также содержит пять умножений. По существу он совпадает с алгоритмом Кука — Тоома и получается выбором многочлена т (х) = х (х — 1) (х + 1) (х — 2) (х — оо). Так как все множители являются многочленами первой степени, то всего имеется пять умножений. (Если заменить один из множи- 4*
100 Гл. 3. Быстрые алгоритмы коротких сверток s (*) = g (х) d (х) deg g (х) = L — I deg d (х) = N — 1 Вещественные свертки Длина п Число вещесгвенных Число вещественных L N умножений сложений 2 2 3 3 2 2 4 7 3 3 5 20 3 3 6 10 3 3 9 4 4 4 7 41 4 4 9 15 Комплексные свертки Число комплексных Число комплексных умножений сложений 2 " 2 3 3 3 3 5 15 4 4 7 Рис. 3.11. Характеристики некоторых алгоритмов вычисления коротких линей- ных сверток. Линейная свертка 2»3 3 умножения. 3 сложения Линейная свертка 3x3 5 уможеннй, 20 сложений Предложения = rf] + rf2 G = rfj - dt + r, Pj - + /2 P, - /, + /, + r2 + P, Dt = d2 Рис. 3.12. Некоторые алгоритмы вычисления линейных сверток.
3.4. Построение алгоритмов коротких линейных сверток 101 гелей многочленом второй степени, то получим шесть умножений, но меньшее число сложений.) Выходной многочлен даетсд^равен- ством s (х) = R, (х+1) («_2> [g (х) d (х)1 + gid2x (х — 1) (х + 1) (х — 2). Остатки определяются матричными уравнениями 'ОСзЪСзЪ' 'Ci О О О О' Ж Ш к» — О ' М — О , = 1 0 01 [go 1 1'1^1 1 -1 1 1/2 1 2 4 0 0 1 1 0 01 [d0 1 1 1 di 1-1 1 Ia 1 2 4 0 0 1 где с целью сохранения стройности и упорядоченности принятых обозначений G4 и D4 формально определяются как вычеты по модулю многочлена (х — оо). Таким образом, = G^D^ для k = 0, 4. Наконец, используя китайскую теорему об остатках, для многочлена s (х) получаем выражение s(x) = 4- SoC*8 - 2x3 - х + 2) - TS1(x3 ~x*~ + + i (-х3 + Зх2 - 2х) + 4 S, (х3 - х) + (х4 - 2х3 + х3 + 2х). Запись последнего шага в матричном виде дается равенством 501 Г 2 0 0 0 б] rfso 5, -1 2-2-1 2 fs, 5, = -2 1 3 0 -1 l6S2 Sj 1-1-1 1 -2 |S3 sj L 0 0 0 0 1J L S4 _ Постоянные множители можно похоронить в константах диаго- нальной матрицы, переопределяя величины и Gk- Для выпол- нения свертки требуется пять умножений. Матрица предсложений может быть реализована семью сложениями, а матрица пост- сложений 13 сложениями. Окончательная форма алгоритма показана на рис. 3.12. Хотя алгоритм построен для поля вещественных чисел, он пригоден и в поле комплексных чисел: пять умножений становятся пятью комплексными умножениями, а 20 сложений становятся 20-ю комплексными сложениями.
102 Гл. 3. Быстрые алгоритмы коротких сверток Можно также специально строить алгоритм над полем ком- плексных чисел. Он также будет содержать пять комплексных умножений, но число комплексных сложений уменьшится. Вы- берем многочлен s (х) = X (х — 1) (х + 1) (х — /) (х + /). Вычисление остатков дается равенствами Китайская теорема об мула Лагранжа) дает остатках (или интерполяционная фор- s(x) = So(—х<+ 1) + ±S1 (х‘ + х3 + ха + х) + + -J- (х4 - X3 + х2 - х) + -i- Ss (х4 + /х» - х2 - /х) + + ±Sl(xl-ix»-x* + ix). Множители 1/4 можно спрятать в диагональной матрице. Алгоритм содержит пять комплексных умножений, эквивалент шести комплексных сложений в матрице предложений и экви- валент девяти комплексных сложений в матрице постсложений. Процедуру Винограда можно использовать для построения сверток и большей длины, чем те, что приведены на рис. 3.12; однако построенные таким образом большие алгоритмы, как пра- вило, громоздки и содержат слишком много сложений. Вместо этого можно строить большие алгоритмы из малых. Есть не- сколько способов построения алгоритмов данных сверток из
3.5. Вычисление произведения многочленов по модулю ЮЗ алгоритмов коротких сверток. Некоторые из них, а именно гнездо- вой метод и метод Агарвала — Кули, будут рассмотрены в гл. 7. Такие алгоритмы содержат несколько больше умножений, чем требуется для алгоритма Винограда, но число сложений у них существенно меньше. 3.5. Вычисление произведения многочленов по модулю некоторого многочлена Мы уже видели, как можно разбивать задачу вычисления циклической свертки или задачу вычисления линейной свертки на несколько подзадач меньшего размера. Меньшие задачи опять имеют вид $ (х) = g (х) d (х) (mod tn (х)), где deg ш (х) = п. и степени обоих многочленов g (х) nd (х) меньше п, т. е. форму произведения многочленов в кольце много- членов по модулю m (х). Для того чтобы построить хороший алгоритм исходной линейной свертки, необходимо построить хорошие алгоритмы для каждого из меньших произведений многочленов. Достаточно рассмотреть только случай неприводи- мого многочлена tn (х), так как в противном случае разложение можно продолжить дальше. Как будет доказано в разд. 3.8, для неприводимого многочлена m (х) степени п число умножений, необходимых для вычисления $ (х), равно 2п — 1. Обычно в алгоритме с наименьшим возможным числом умножений требуется большое число сложений. В прак- тически приемлемых алгоритмах должен достигаться разумный баланс между числом умножений и числом сложений. В данном разделе рассматриваются практические аспекты построения таких алгоритмов. Наиболее прямой метод состоит в вычислении линейной свертки g (х) d (х) (на что требуется по меньшей мере 2п — 1 умножений) и дальнейшем приведении результата по модулю m (х) (что вообще не требует умножений). Это на первый взгляд может показаться парадоксальным, так как мы предлагали вычислять линейную свертку путем разбиения на подзадачи, соответствующие непри- водимым многочленам, а теперь сводим задачу обратно к линей- ным сверткам. Однако этим, маневрированием «вперед-назад» мы существенно снижаем степенК линейной свертки, что и улуч- шает ситуацию. \ Мы уже рассматривали произведение многочленов S W = g W d W (mpd х2 + 1),
104 Гл. 3. Быстрые алгоритмы коротких сверток которое формально совпадает с комплексным умножением. Сейчас пришло время построить этот алгоритм. Одновременно мы будем рассматривать произведения многочленов s (х) = g (х) d (х) (mod х2) и s (*) = g (х) d (х) (mod х2 4- х 4- 1). Во всех этих примерах g (х) = gtx 4- g0 и d (х) = diX 4- d0. Мы будем модифицировать описанную в разд. 3.2 линей- ную (2х2)-свертку. Алгоритм этой линейной свертки в поли- номиальной форме записывается в виде равенства s (х) = g (х), d (х) = gxdrx* + + g^dQ — (gr — g0) (dt — 4)]* + + go^o и содержит три умножения. Наша задача состоит в вычислении этого произведения по трем модулям: х2 4- 1, х2 и х2 4-х 4- 1. Соответствующие три произведения получаются простой заменой х2 на —1, 0 и —х — 1 соответственно. А именно, $ (х) = g (х) d (х) (mod х2 -4 1) = lgi4 — gA — (gi — go) (4 — 4)1 * + gA — — gA, s (x) = g (x) d (x) (mod x2) = = lgi4 — gA — (gi — go) A — 4)1 x + gA, s (x) = g (x) d (x) (mod x2 -j- x 4- 1) = = lgo4 — (gi — g0) A — 4) ] x + gA — gA- В матричной форме эти три алгоритма соответственно имеют вид
3.6. Построение алгоритмов коротких циклических сверток 105 Второй из этих алгоритмов не очень хорош. Следуя по формаль- ному пути, мы построили алгоритм, характеристики/которого хуже следующего эвристического алгоритма, содержащего только одно сложение: 1 О о] , 1 [1 о1 0 I 1] I «0 0 I [dj ‘ L b °J Характеристики некоторых алгоритмов вычисления произ- ведения многочленов по модулю неприводимого многочлена затабу- лированы на рис. 3.13. В некоторых случаях указаны характе- ристики двух алгоритмов решения одной и той же задачи. На- пример, для модуля х4 -j- 1 указан алгоритм, содержащий 9 умно- жений и 15 сложений, и алгоритм, содержащий 7 умножений Простой многочлен р (х) Число Число умножений сложений X3 + X + 1 х4 + 1 л4 + X3 + X3 + X + 1 Xе + х3 + 1 X* + X6 + X* + X3 + г8 + х + 1 х18+ Xе + 1 3 3 9 15 7 41 9 16 7 46 15 39 15 53 75 267 Рис. 3.13. Характеристики некоторых алгоритмов вычисления произведения многочленов по модулю простых многочленов. и 41 сложение. При выборе того или иного алгоритма надо оцени- вать ситуацию и понимать, как данный алгоритм вкладывается в алгоритм большей задачи. Часто случается, что несущественные преимущества в числе умножений в малом алгоритме приводят к большим преимуществам, когда этот алгоритм используется в виде блока в большом алгоритм&Гв то время как большие потери в числе сложений малого алгоритма приводят лишь к незначи- тельным потерям в числе сложений большого алгоритма. Так, например, для модуля х4 Д 1 алгоритм с семью умножениями может на самом деле дать .больше, чем это может показаться. 3.6. Построение алгоритмов коротких циклических сверток Можно построить также и библиотеку хороших алгоритмов для вычисления коротких циклических сверток, ^ги алгоритмы можно строить как по методу Винограда построения коротких
106 Гл. 3. Быстрые алгоритмы коротких сверток сверток, так и другими способами. Для построения алгоритма по методу Винограда надо быть уверенным в том, что каждое из рассматриваемых малых произведений многочленов может быть вычислено хорошим алгоритмом. Для этих подзадач мы будем пользоваться уже построенными в предыдущем разделе алго- ритмами. В настоящем разделе в качестве примеров будут построены несколько хороших алгоритмов. Некоторые алгоритмы вычисле- ния коротких циклических сверток приведены в приложении А. Излагаемый в гл. 7 метод, известный под названием алгоритма Агарвала — Кули, позволяет строить алгоритмы вычисления сверток больших длин, комбинируя известные алгоритмы для коротких циклических сверток. Рассмотрим задачу вычисления циклической свертки s (х) = g (х) d -х) (mod хп — 1), где оба многочлена g (х) и d (х) имеют степень, равную п— 1. Один из способов решения состоит в том, чтобы найти сначала линейную свертку, а затем выполнить приведение по модулю хп—1. Чтобы реализовать такой способ, надо модуль m (х) для вычисления линейной свертки выбрать так, чтобы его степень была по меньшей мере равна 2н — 1, так как она должна быть больше суммы степеней g (х) и d (х).- Альтернативный способ состоит в использовании китайской теоремы об остатках, на последнем шаге которой для восстановле- ния многочлена s (х) в качестве модуля m (х) используется не- посредственно хп— 1, а в качестве взаимно простых модулей используются делители m° (х), т(!) (х), ..., т<-к~11 (х) многочлена т(х). Так как сумма степеней этих простых делителей должна быть равна п, что меньше чем 2n — 1, то можно ожидать упро- щения вычислений. С другой стороны, делители уже нельзя выбирать так, как нам удобно. Первый метод допускает выбор произвольных делителей, но сумма их степеней должна быть равной 2п— 1, а не п. х В качестве простейшего примера рассмотрим вычисление 4-точечной циклической свертки: s (х) = g (х) d (х) (mod х4— 1). Делителями многочлена х4 — 1 служат циклотомические много- члены, х* _ 1 = (х - 1) (х -Н) (Х2 + 1) = тт (х) md) (х) т™ (х). В этой задаче у нас нет реального выбора: циклотомические много- члены представляют собой такие модули, которые необходимо
3.6. Построение алгоритмов коротких циклических сверток 107 использовать в алгоритме Винограда. Коэффициенты вычетов даются равенствами 4’1 Г1 1 1 П [4 4" = 1 -1 । -1 d, d%> 10-10 d2 4'J L° 1 о -1J Ьл Мы уже построили несколько алгоритмов вычисления умножения по модулю х2 + 1. Одним из них является правило Следовательно, внутренние переменные даются определениями ъ; ’1 0 0 o' "1 1 1 f 4 Dt 0 1 0 0 1 - 1 1 -1 4 d2 = 0 0 r> I'j 1 0 -1 0 4 r Dy 0 0 1 O' 0 1 0 -1 _dL Di. 0 0 Lo lj fl 0 0 olfi ] 1 f Sc G, 0 1 0 0 1 -1 1 - 1 Si g2 = 0 0 1 61 1 0 -1 0 «2 Gy 0 0 -1 || 0 1 0 - 1 Gt 0 0 . 1 1J Далее, Sk = GkDk для k — 0, .... 4. Китайская- теорема об остатках дает 8 (х) = “ (х3 + X2 + х -|- 1) s<°> (х)-(х3 — X2 + X — 1)S(O (х) — --^-(х2- l)s<2»(x) (modx4—1).
108 Гл. 3. Быстрые алгоритмы коротких сверток Таким образом, Окончательный вид алгоритма показан на рис. 3.14. В упоря- дочивании элементов матриц, конечно, имеется некоторый произ- вол. В матрице предсложений допустима произвольная переста- новка строк, а в матрице постсложений — перестановка столбцов; это не влияет на результаты вычислений. На рис. 3 15 приведены характеристики некоторых наилучших известных алгоритмов вычисления коротких сверток. Эти алго- ритмы, часть из которых приведена в приложении А, построены по описанному методу. В некоторых случаях для уменьшения числа сложений использовались дополнительные методы, анало- гичные тем, которые будут описаны ниже в оставшейся части раздела. Рис. 3.15 следовало бы дополнить характеристиками коротких сверток для поля комплексных чисел. Каждый алгоритм вы- числения свертки в вещественном поле подходит в качестве алго- ритма для комплексного поля. Но иногда многочлен хп — 1 над полем комплексных чисел разлагается на большее число простых делителей, чем над полем вещественных чисел. Это в ком- плексном случае дает конструктору алгоритма дополнительные возможности. Алгоритм Винограда можно рассматривать как метод разло- жения некоторых матриц. Пусть s, g и d — векторы длины п, компонентами которых являются соответственно коэффициенты многочленов s(x), g (х) и d (х). Циклическая свертка s (х) =
3.6. Построение алгоритмов коротких циклических сверток 109 где Рис. 3.14. Алгоритм 4-точечной циклической свертки. s (х) = g (х) d (х) (mod х" — 1) deg g (*) = л — 1 deg d (х) = п — 1 Вещественные свертки Длина п Число вещественных Число вещественных умножений сложений 2 2 4 3 4 11 4 5 15 5 8 62 5 10 31 7 16 70 8 . 12 72 8 14 46 9 19 74 16 33 181 16 35 155 Рис. 3.15. Характеристики некоторых алгоритмов вычисления циклической свертки. = g (х) d (х) (mod хп — 1) может быть записана в виде матричного произведения
ПО Гл. 3. Быстрые алгоритмы коротких сверток или s = Td. Алгоритм Винограда, записываемый равенством s = C[(Bg).(Ad)], может быть записан также в виде s = CGAd, где А представляет собой матрицу размера М (n) х п, G является диагональной матрицей размера М (n) х М (п), а С является матрицей размера п X М (п). Таким образом, алгоритм Винограда можно рассматривать как алгоритм разложения матрицы Т = CGA, где G — диагональная матрица, а С и А — матрицы, элементами которых являются малые целые числа. Так как в большинстве приложений многочлену g (х) соответ- ствует фиксированный КИО-фильтр, или по крайней мере КИО- фильтр, коэффициенты которого меняются не слишком часто, то вычисление G = Bg приходится выполнять не слишком часто и при подсчете общей вычислительной нагрузки им можно пре- небречь. Следовательно, сложность матрицы В особой роли не играет. Роли матриц А и В симметричны, так как их можно поменять местами путем простого переименования векторов d и g. Алгоритм Винограда вычисления свертки допускает построение матриц А и В, отличающихся только перестановкой строк, и, следова- тельно, имеющих одну и ту же сложность; но в общем случае более целесообразно одну из матриц строить более сложной и именно ей приписывать роль матрицы А. Удивительно то, что в алгоритме циклической свертки можно менять ролями даже матрицы С и А. Способ сделать это описывается следующей теоремой. Теорема 3.6.1 (теорема об обмене матриц). Если теплицева матрица S допускает факторизацию вида S = CDE, то она может быть также записана в виде S = (Ё)г Dr (С)г, где матрица Е отличается от матрицы Е обращенным порядком столбцов, а матрица С отличается от матрицы С обращенным порядком строк.
3.7. Свертки в общих полях и кольцах Ш Доказательство. Пусть J представляет собой обменную ма- трицу того же размера, что и матрица S. Тогда Sr = JSJ - (JC) D (ЕJ) = CDE. Операция транспонирования завершает доказательство. □ Применим эту теорему к умножению многочленов по модулю многочлена хп — I, где £ — некоторая константа. Пусть надо вычислить s (х) _ g (х) d (х) (mod хп — 1), где g (х) и d (х) многочлены степени не более п — 1. Если | = 1, то мы имеем задачу о циклической свертке. Случай £ = —1 (а в поле комплексных чисел и случаи | = ±/) также очень важен. Запишем это произведение многочленов в матрично-векторном виде d,> &„-2... frh g„ si di dt> g, d2 d} d0 g2 d„ -1 . . . d0 g. -1 ИЛИ 1 s = Tg, где T,— теплицева матрица. Алгоритм s = C [(Bd)-(Ag)] можно перезаписать в виде s = CDAg, где D — диагональная матрица, диагональные элементы которой равны компонентам вектора Bd. Согласно теореме 3.6.1, s = (А)т D (С)г g. Применительно к задаче вычисления циклической свертки тео- рема 3.6.1 означает, что наиболее сложную из трех матриц А, В и С можно выбрать множителем при векторе g и «включить» ее в матрицу G. 3.7. Свертки в общих полях и кольцах Любой алгоритм свертки, такой как алгоритм Кука — Тоома или алгоритм Винограда, представляет собой некоторое тожде- ство, опирающееся на свойства операций в данном поле, в ча- стности на свойства ассоциативности, дистрибутивности и комму-
112 Гл. 3. Быстрые алгоритмы коротких сверток тативности. Алгоритм, построенный в одном поле, может быть использован в любом расширении этого поля. Он, однако, может оказаться не столь хорошим, как алгоритм, разработанный спе- циально для данного поля. В частности, алгоритм свертки двух вещественных последова- тельностей можно без изменений использовать для свертки после- довательностей комплексных чисел. Если обозначить через М и А соответственно числа вещественных умножений и сложений, необходимых для вычисления вещественной свертки, и если для вычисления комплексной свертки использовать тот же алгоритм с обычными комплексными умножениями и обычными комплекс- ными сложениями, то в общей сложности получится 4Л1 веще- ственных умножений и 2А 2М вещественных сложений. Если вместо этого воспользоваться построенным в разд. 1.1 комплекс- ным умножением и рассматривать одну часть свертки как отводы фиксированного фильтра, то потребуется только ЗА! веществен- ных умножений и 2А 4- ЗМ вещественных сложений. Если длина комплексной циклической свертки равна некото- рой степени двойки, то можно построить даже еще лучший алго- ритм. Для пояснения того, как это делается, рассмотрим свертку по модулю х2< 4-1. В кольце многочленов по модулю многочлена x2i -j- 1, i 1, имеется элемент, квадратный корень из которого равен минус единице. Действительно, —1№г (mod У 4-1) так что в рассматриваемом кольце У — 1 = х®*“1. Воспользуемся этим элементом, чтобы выписать комплексную свертку через две вещественные свертки. Для вычисления комплексной свертки s (х) = g (х) d (х) (mod х2* 4- 1),\ где \ g W = gR W + igi (*) и d(х) = dR (х) + jd,ty, можно вычислить по модулю х2‘ 1 четыре вещественных свертки ga (х) dR (х), g, (х) dR (х), gR (х) d, (x'i и g, (х) d,(x) и запйщать Sr (х) = gR (х) dR (х) — g, (х) d, (х), W = gR W dj (x) + g, (x) dR (x). Лучшая процедура, содержащая вдвое меньше умножений, сво- дится к введению многочленов а (х) = 4 (gH (х) — x2'-1g; (х)) (dH (х) — x2‘-1d, (х)) (mod х2' + 1) b W = 4 ^Sr (.х) + x2‘-'g, (х)) (dR (х) + x2‘-’d, (х)) (mod х2' + 1)>
3.8. Сложность алгоритмов свертки ИЗ вычисление которых сводится к вычислению двух вещественных сверток. Выходной многочлен s (х) = g (х) d (х) (mod ха‘ 4- 1) дается при этом равенствами «я (*) = а (х) 4- b (х), S; (х) = х2''1 (а (х) — b (х)) (mod xai 4- О- Мы хотим воспользоваться этой процедурой для вычисления комплексной циклической свертки s (х) = g (х) d (х) (mod хп — 1), где п равно степени двойки. Запишем хп~1 =(х-1)(х ++ D ... (х^24-1). Тогда задача сводится к коротким циклическим сверткам вид (х) = g*!> (х) (х) (mod х2* 4- 1)« Комплексные свертки по модулям х — 1 и х 4- 1 являются ска- лярами, и их произведение вычисляется как произведение ком- плексных чисел. Их вклад в общую сложность очень мал. Если остальные комплексные свертки вычислять через две веществен- ные свертки, то рассматриваемый способ вычисления комплексной свертки потребует примерно вдвое больше вычислений, чем веще- ственная свертка той же длины. Этот метод конкурирует с методом разложения многочлена хл — 1 в поле комплексных чисел: хл — 1 =(х-1)(х^1)(х~/)(х + /) ... (x^-/)(x«/4 + j). Каждая из индивидуальных подзадач теперь меньше, но арифме- тика является комплексной. 3.8. Сложность алгоритмов свертки Пусть задан алгоритм решения некоторой задачи; следует ли этим удовлетвориться или следует попытаться найти лучший алгоритм? На этот вопрос трудно ответить по нескольким при- чинам. Во-первых, трудно выбрать критерий, согласно которому можно утверждать, что алгоритм .является наилучшим. Далее, если даже такой критерий выбран, то трудно утверждать, что характеристики оптимального алгоритма соответствуют выбран- ному критерию. Во многих задачах критерием оптимальности служит мини- мизация числа умножений. Этот критерий достаточно прост, так что удается доказать некоторые теоремы, описывающие харак- теристики оптимального алгоритма. Конечно, после отыскания оптимального алгоритма может оказаться, что он нам не подойдет,
114 Гл. 3. Быстрые алгоритмы коротких сверток скажем, по числу сложений, но все-таки хочется знать, что пред- ставляет собой такой алгоритм. В данном разделе мы будем исследовать характеристики опти- мального (в смысле минимального числа умножений) алгоритма свертки. Для этого надо уточнить понятие умножения, и мы сделаем это так, чтобы можно было ответить на интересующие нас вопросы. А именно, мы хотим определить умножение таким специальным образом, чтобы под произведением d'g понималось произведение произвольных вещественных чисел, но туда бы не входило произведение 2g, так как его можно интерпретировать как g 4- g. Такое различие легко принять, но как быть с произве- дением 3g- или (5/7) g? Мы выберем определение, которое приводит к полезным результатам. Вычисление d-g будем считать умноже- нием только тогда, когда оба сомножителя -принимают произволь- ные вещественные значения, и не будем считать умножением, если произвольные вещественные значения допустимы только для одного из них, а другой должен быть рациональным. Мы уви- дим, что это определение, хотя интуитивно и кажется несколько ущербным, приводит к осмысленным результатам. Выбранный нами критерий может также вызвать подозрение потому, что возникающие в приложениях числа всегда записываются словом конечной длины, так что все возникающие в приложениях числа являются рациональными. Тем не менее если в Принципе пере- менные принимают вещественные значения, то ук&з^нное вы- числение будет называться произведением. . В указанном смысле алгоритмы Винограда вычисления корот- ких циклических сверток Являются оптимальными. Ни один алгоритм вычисления «-точечной циклической свертки не содер- жит умножений меньше, чем алгоритм Винограда. Доказатель- ство этого факта составляет одну из сложных задач данного раздела. Мы докажем следующие результаты: 1. Никакой алгоритм вычисления линейной свертки двух последовательностей длин L и N не может содержать меньшее число умножений, чем L + А — 1. 2. Если число простых делителей многочлена хп — 1 равно t, то никакой алгоритм вычисления «-точечной циклической свертки не может содержать меньшее число умножений, чем 2п — t. 3. Если число простых делителей многочлена р (х) равно /, то никакой алгоритм вычисления произведения многочленов g (х) d (х) по модулю р (х) не может содержать меньшее число умножений, чем 2п — t. Вторая задача, конечно, является частным случаем третьей, но она столь важна, что ее следует выделить отдельно. Рассматриваемые идеи не зависят от поля. Пусть F — некото- рое поле, которое мы назовем полем вычислений, а £ г- его под- поле, называемое полем констант или основным полем. Элементы
3.8. Сложность алгоритмов свертки 115 из Е называются скалярами. Пусть d = (d0, dn_i) и g = = (g0, .... grj) — произвольные векторы фиксированных длин п иге компонентами из поля F. Компоненты векторов d и g будем называть неопределенными переменными или просто перемен- ными. Эти п. -|- г переменных величин независимы: их не связы- вают никакие соотношения. Алгоритмом называется правило вычисления последовательности элементов flt из F, таких что каждый элемент f( последовательности равен одной из Следу- ющих величин: (1) или компоненте вектора d, или компоненте вектора g, или сумме, разности или произведению двух таких компонент; (2) сумме, разности или произведению компонент вектора d или вектора g на элемент fj последовательности с номе- ром /, меньшим номера i; (3) сумме, разности или произведению двух элементов fj и fk последовательности, номера / и k кото- рых меньше номера i\ (4) элементу поля Е. Скажем, что алгоритм вычисляет выходной вектор s, если компоненты вектора s содержатся в последовательности flt ft. Необходимо подчеркнуть, что являющиеся компонентами век- тора s переменные величины связаны некоторыми функциональ- ными соотношениями с переменными, являющимися компонен- тами векторов d и g. Алгоритм, вычисляющий вектор s, пред- ставляет собой фиксированную процедуру правильного вычисле- ния s для любых возможных значений входящих в d и g пере- менных. Заметим, что данное определение алгоритма не включает в себя ни ветвления, ни деления. В алгоритмах, которыми мы зани- маемся, эти операции не являются необходимыми, к тому же ни деление, ни ветвление не могут уменьшить числа умножений. Данное определение алгоритма можно проиллюстрировать примером комплексного умножения. Сначала запишем его в виде [;]=[: ;'][:] Тогда равенства К = са, f, = db, fs = Ь — f„ ft = da, f„ = cb, f, = ft + fe дают описание алгоритма в виде последовательности правил вы- числения. Вычисление произведения комплексных чисел можно также записать в виде И = Р 0 р - <0 И Lo I и о L о о (с + d) 0
116 Гл. 3. Быстрые алгоритмы коротких сверток Тогда равенства Л “ а К = с d, fa = с + d, ft ~ fiat ft ~ 1зЬ, ft = dfi> fi = ft + fo> fa = ft + fa дают описание последнего алгоритма в виде последовательности правил вычисления. Рассмотрим набор всех таких множеств правил вычисления комплексного умножения. Оптимальным из этого набора алго- ритмов является тот из них, который содержит наименьшее число умножений. Теперь можно формализовать определение задачи вычислений. Будем рассматривать только задачи вида s= Hd, где d — входной вектор данных длины k, a s — выходной вектор длины п. Элементы матрицы Н представляют собой линейные комбинации г неопределенных переменных g0, Втипичных случаях г меньше числа элементов матрицы Н и каждая перемен- ная может присутствовать в матрице Н более одного раза. Такая структура включает в себя все рассмотренные задачи вычисления свертки. Под элементами матрицы Н будем понимать не элементы поля, а линейные комбинации неопределенных переменных вида г—1 k=0 где cx,iJh являются скалярами. Две такие линейное формы можно складывать, любую линейную форму можно.умножать на скаляр. Множество таких линейных форм надлолём Е образует векторное пространство, которое мы обозначим Е [g0, ..., gr^]. Таким образом, Н является матрицей над множеством линейных форм. Для матрицы Н не выполняются многие известные свойства матриц, поскольку она является матрицей не над полем (и даже не над кольцом), а над множеством Е [g0, ..., gr_x]. В частности^ ранг по столбцам не обязательно равен рангу по строкам. Как мы увидим, ранг по строкам и ранг по столбцам каждый дают нижнюю границу для числа умножений в задаче s = Hd. Воз- можность менять ролями векторы gad дает два пути применения этих двух границ. Ранг по строкам определяется следующим образом (анало- гично определяется ранг по столбцам). Каждая строка матрицы Н представляет собой вектор длины k с компонентами из множествах) *) Это множество образует векторное пространство, но мы предпочитаем называть его множеством, так как не рискуем говорить «вектор векторов».
3.8. Сложность алгоритмов свертки 117 Е Igo, Линейная комбинация строк матрицы Н также является вектором длины k с компонентами из того же множества п вида 2 0Д, где элементы принадлежат полю Е для всех i — 1, ...» п. Рангом по строкам матрицы Н называется мощность наибольшего множества линейно независимых строк, т. е. такого наибольшего множества строк, что никакая ненулевая их линей- ная комбинация не равна нулю. • Например, над полем рациональных (вещественных) чисел ранг по столбцам матрицы н = 4go 2gi So -st о 2gt-2gfi g0 gs. равен двум, так как 1 -s.l Г«„ 6 1 2Si | + -0=0 2а'1-2д„| £„1 Ij»| 0 но никакая линейная комбинация двух столбцов не равна тожде- ственно нулю. Теорема 3.8.1 (теорема о ранге по строкам). Для произволь- ного алгоритма-вычисления s = Hd число умножений по меньшей мере равно рангу по строкам матрицы Н. Доказательство. Без потери общности можно предположить, что линейно независимыми являются первые р строк матрицы Н, и в дальнейшем рассматривать только эти строки. Обозначим через М матрицу, образованную этими строками, и рассмотрим только частичное вычисление = Md . Идея доказательства сводится к построению подходящей ма- трицы А над полем Е, для которой выполняются известные свой- ства матриц. Предположим, что в алгоритме, задаваемом последователь- ностью /\, ..., fN, имеется Z шагов умножения, задаваемых соот- ветственно Z членами последовательности е1? ..., ег. Тогда первые р компонент вектора s должны быть линейными комбинациями
118 Гл. 3. Быстрые алгоритмы коротких сверток этих членов-произведений, линейных членов и элементов основ- ного поля. Таким образом, где элементы матрицы А принадлежат основному полю Е, а ком- поненты вектора b являются линейными комбинациями неопре- деленных переменных и элементов основного поля. Предположим теперь, что р больше, чем I. Тогда матрица А содержит строк больше, чем столбцов, и, следовательно, строки матрицы А линейно зависимы, т. е. существует такой вектор с над полем Е, что сгА = 0г. Следовательно, ст (Md) = ст (Ае + Ь), и так как сгА = 0г, то это приводится к виду (сгМ) d - сгЬ. В этом равенстве правая часть не содержит произведений неопре- деленных переменных, так как с содержит только элементы поля Е, а в b не входят произведения неопределенных перемен- ных; следовательно, и левая часть не содержит произведений неопределенных переменных. Так как компонентами вектора d являются неопределенные переменные, то отсюда следует, что сгМ не содержит неопределенных переменных. Но сгМ является вектором, компоненты которого равны линейным комбинациям неопределенных переменных. Следовательно, он равен нулю и строки матрицы М линейно зависимы. Полученное противоречие означает, что I больше, чем р, и число умножений по меньшей мере равно рангу по строкам матрицы Н. □ Теорема 3.8.2 (теорема о ранге по столбцам). Для произволь- ного алгоритма вычисления s = Hd число умножений по меньшей мере равно рангу по столбцам матрицы Н. , Доказательство. Доказательство проведем индукцией. Если ранг по столбцам равен единице, то любой алгоритм должен содержать по меньшей мере одно умножение. Пусть при ранге по столбцам, равном I — 1, теорема верна. То есть если ранг по столбцам матрицы Н равен I — 1, то любой алгоритм вычисления s — Hd содержит по меньшей мере I — 1 умножение. Щаг ин- дукции состоит в доказательстве соответствующего утверждения для случая, когда ранг по столбцам равен I. Предположим, что задан алгоритм вычисления s = Hd,
3.8. Сложность алгоритмов свертки причем ранг по столбцам матрицы Н равен I. Без потери общности можно предположить, что последний столбец матрицы Н содержит по крайней мере один ненулевой элемент (в противном случае его можно удалить из Н). Следовательно, переменная di содер- жится в некотором члене-произведении, скажем, последнем таком члене. Это означает, что для некоторого множества скаляров сумма aidi является множителем в некотором умножении, причем аг 0. Так как на скаляры не наложено никаких огра- ничений, то можно полагать щ равным 1, так что член + /-1 + 2 ccfdi является множителем в некотором члене-произведении. 1=0 Чтобы завершить доказательство, нам надо при любом данном алгоритме решения исходной задачи построить, хотя и искус- ственную, новую задачу s' = H'd' ранга I — 1, которую можно решить данным алгоритмом, удаляя из него одно умножение. Тогда, согласно предположению индук- ции, любой алгоритм решения новой задачи содержит по меньшей мере I — 1 умножение, и, следовательно, исходная задача данным алгоритмов решается по меньшей мере с I умножениями. Чтобы это сделать, заменим в исходной задаче переменную dt на — Ij'ctidj- Тогда последний член-произведение, содержащий /=о 1—1 множителем сумму dt -j- будет представлять собой /=0 умножение на нуль и, следовательно, может быть удален из алго- ритма. Алгоритм теперь решает некоторую новую задачу, а именно, s' = H'd', где d' представляет собой вектор длины I—1, формируемый из вектора d удалением последней компоненты, а матрица Н' получается из матрицы Н заменой /-го столбца h} на столбец hj — afti. Таким образом,
120 Гл. 3. Быстрые алгоритмы коротких сверток и данный алгоритм вычисляет H'd', что и завершает доказатель- ство . □ Теорема 3.8.3. Каждый алгоритм вычисления линейной свертки s (х) = g (х) d W, где deg g (x) = L — 1 и deg d (x) = N — 1, содержит no мень- шей мере L + Л’ — 1 умножений. Доказательство. Рассматриваемое вычисление можно в матрич- ном виде записать равенством s = Hd, гДе froO-.-oo" gi g0 • • о о н = ' О • - • gt-! g£_! О • • о gL_L является ((L + Л/ — 1) X Л/)-матрицей. Как элементы множества £ Igo» gi. •••«gz.-iL строки матрицы Н, очевидно, линейно неза- висимы, следовательно, применение теоремы 3.8.1 показывает, что число умножений равно по меньшей мере L + N — 1. □ Теорема 3.8.4. Пусть р (%) является простым многочленом сте- пени п. Каждый алгоритм вычисления произведения многочленов s (х) = g (х) d (х) (mod р (х)) содержит по меньшей мере 2п — 1 умножений. Доказательство. Предположим, что алгоритм содержит t \ умножений. Тогда на выходе алгоритма получим линейную ком- 1 бинацию этих t членов-произведений s = AS, где А является (п X /)-матрицей над полем Е, a S — вектор длины I, компонентами которого являются эти члены-произ- ведения. Ясно, что многочлены g (%) и d (х) всегда можно выбрать так, чтобы сделать некоторую одну компоненту многочлена s (г) не- нулевой, а остальные нулевыми. Следовательно, п строк ма- трицы А должны быть линейно независимыми, так что А должна содержать и п линейно независимых столбцов. Без потери общ- ности можно полагать, что первые п столбцов матрицы А яв- ляются линейно независимыми, так что матрица А может быть разбита на блоки вида s = [А' | A"JS.
3.8. Сложность алгоритмов свертки 121 где А' — обратимая (n X п)-матрица. Умножим на обратную к А' матрицу С: Cs = [I I P]S = CHd . Так как многочлен р (х) неприводим, то можно показать, что все элементы любой строки матрицы Н линейно независимы, равно как и все элементы любой линейной комбинации строк матрицы Н. Это утверждение является стандартным результатом теории матриц и будет доказано отдельно в виде теоремы 3.8.6 в конце настоящего раздела. Следовательно, все элементы первой строки матрицы СН линейно независимы, так что согласно тео- реме 3.8.2 для вычисления первой компоненты вектора CHd требуется по меньшей мере п умножений. С другой стороны, первая строка вычисления Cs = [I; P]s, содержит самое большое 1 + (/ — п.) умножений, так как ма- трица Р содержит t — п столбцов, а вектор S длины t содержит все члены-произведения. Следовательно, 1 + (/ — п) > пу так что i > 2я. — 1, что и доказывает теорему. □ , В качестве приложения этой теоремы рассмотрим комплексное умножение как задачу умножения по модулю многочлена х2 + 1. Согласно теореме 3.8.4, для выполнения одного комплексного умножения необходимо по меньшей мере три вещественных умно- жения. * Хотя мы и не будем этого делать, теорему 3.8.4 можно доказать и для умножения многочленов по модулю многочлена р1 (х), где р (х) — простой многочлен. Вместо этого мы рассмотрим слу- чай, когда р (х) распадается в произведение k простых много- членов. В этом случае китайская теорема об остатках позволяет разбить задачу на k подзадач, каждая длины nit где 2 щ = п. Дополнительных умножений при этом не возникает. Следова- тельно, используя для каждой из подзадач теорему 3.8.4, с по- мощью китайской теоремы об остатках для полной задачи вы- числения произведения многочленов по составному модулю полу- чаем по меньшей мере k У (2пг — 1) = 2п — k
122 Гл. 3. Быстрые алгоритмы коротких сверток умножений. Следующая теорема утверждает, что ни один алго- ритм решения этой задачи не может быть лучше такого исполь- зования китайкой теоремы об остатках. Теорема З.В.5. Пусть многочлен р (%) степени п распадается в произведений k различных простых множителей. Каждый алго- ритм вычисления произведения многочленов / s (х) = g (х) d (х) (mod р (х)) содержит по меньшей мере 2п — k умножений. Доказательство. Так как китайская теорема об остатках задает не требующее умножений обратимое преобразование, то достаточно рассмотреть вычисление s = Hd, в котором матрица Н блочно-диагональная, т. е. и соответствующая китайской теореме об остатках i-я подзадача задается вычислением = ЩсЦ. Теперь повторим доказательство теоремы 3.8.4. Предположим, что алгоритм содержит t умножений. Тогда s = AS, где S — вектор длины t, содержащий все члены-произведения, и А представляет собой (п X ^-матрицу над полем Е. Так как А содержит п линейно независимых строк, то она содержит и п линейно независимых столбцов, в качестве которых можно вы- брать первые п столбцов. Тогда s = [А' ; A"]S Cs = [I | PJS где С обозначает матрицу, обратную к матрице А'. Следова- тельно, для вычисления первой компоненты вектора Cs требуется самое большое 1 + (t — п) умножений. Но, кроме того, выпол- няется равенство Н, Cs = С Н2 d. Н* /
3.8. Сложность алгоритмов свертки 123 Рассмотрим теперь некоторую линейную комбинацию строк ма- трицы Н. Любая линейная комбинация строк каждой из матриц Н{ содержит лишь линейно независимые столбцы. Следовательно, любая линейно независимая комбинация строк матрицы Н со- держит по меньшей мере п — (k—I) линейно независимых столбцов. Следовательно, по теореме 3.8.2 вычисление первой компоненты вектора CHd требует по меньшей мере п — (k — 1) умножений. Эти верхняя и нижняя границы числа умножений, необходимых для вычисления первой компоненты вектора Cs, приводят к неравенству 1 + (t — п) > п — (k — 1), так что t 2п — k, что доказывает теорему. □ Теперь мы должны завершить незаконченное доказательство теоремы 3.8.4. Теорема 3.8.6. Пусть s = Hd представляет собой матричную запись произведения многочленов s(x) = g (х) d (х) (mod р (х)), где р (х) — неприводимый многочлен, и матрица Н составлена из коэффициентов многочлена g(x). Тогда все элементы любой строки матрицы Н, так же как и все элементы любой линейной комбинации строк матрицы Н, линейно независимы. Доказательство. Шаг 1. Обозначим через Ср сопровождающую матрицу много- члена р (х), определяемую следующей (n х и)-матрицей: О 0 ... О -р0 I 0 ... О -р, Ср = 0 1 • • • 0 -Pi . о О ... I Тогда t-й столбец матрицы Н равен Cpg, и через свои вектор- столбцы матрица Н записывается в виде Н = [g Cpg Cpg ... Ср ]g]. Пусть w — произвольная ненулевая вектор-строка, a wH — соответствующая линейная комбинация строк матрицы Н. Надо показать, что никакая линейная комбинация столбцов wH не равна нулю. Предположим, что о = £ (wCpg) = [w S OiCplg.
124 Гл. 3. Быстрые алгоритмы коротких сверток Так к^к это равенство должно выполняться для любого g, то w-a(Cp) = 0, где j ' п—1 / а (Ср) = S / £=0 представляет собой матрицу размера п X п, вычисленную по матрице Ср. Поскольку строка w отлична от нулевой, то матрица а (Ср) должна быть вырожденной, так как в противном случае wa(Cp) не может равняться нулю. Следовательно, нам надо показать, что единственным многочленом степени не более п — 1, таким что подстановка в него матрицы Ср приводит к вырожден- ной матрице, является нулевой многочлен. . Шаг 2. Легко проверить, что любой простой многочлен р (х) обращается в нуль при подстановке в него его сопровождающей матрицы. Таким образом, р (Ср) = 0, где 0 обозначает нулевую (п X ц)-матрицу. Пусть а (х) обозначает многочлен степени не более п— 1, такой что матрица а (Ср) вырожденна, и пусть v обозначает ненулевой вектор из нулевого пространства матрицы а (Ср). Тогда, так как р (х) является неприводимым многочленом степени п, то существуют многочлены А (х) и Р (х), такие что А (х) а (х) + Р (х) р (х) = 1. Следовательно, (А (Ср) а (Ср) + Р (Ср) р (Ср)] v = Iv. / Но р (Ср) = 0, так что мы имеем А (Ср) а (Ср) v = v, что про-^ тиворечит выбору v : а (Ср) v = 0. Следовательно, за исключен нием нулевого многочлена, не существует многочлена а (х) степенй п — 1 или меньше, такого что матрица а (Ср) является вырожден-^ ной. Это завершает доказательство теоремы. □ Задачи 3.1. а. Комплексное умножение (е+ jf) — (а + jb) (с + jd) можно вычислить с тремя вещественными умножениями и пятью вещественными сложениями по алгоритму е= (а — b) d + а (с — d), / = (a— b)d+ b (с + d). Положить с и d константами и записать алгоритм умножения в матричной форме Г е 1 Г а 1 Ы=воАЫ’ где А и В представляют собой матрицы предсложений и постсложений, a D — диагональную матрицу.
Задачи- 125 б. 2-точечная циклическая свертка $ (х) = g (х) d (х) (mod х8 — 1) может быть вычислена по алгоритму Г-1 - Р -Эй Предположим, что многочлены d (х) и g (х) имеют комплексные коэффи- циенты. Сколько потребуется вещественных сложений и вещественных умножений для выполнения этого алгоритма, если комплексная арифме- тика реализуется обычным классическим способом? в. Представить теперь входные и выходные данные в виде векторов длины четыре и выписать объединенный алгоритм с шестью вещественными умно- жениями, Сколько вещественных сложений содержит этот алгоритм? 3.2. При заданном устройстве для вычисления линейной свертки двух после- довательностей длины п описать, как оно может быть использовано .для п—I вычисления взаимной корреляционной функции этих поеде- но довательностей. 3.3. Построить алгоритм фильтрации 4-точечной последовательности входных данных в КИО-фильтре с тремя отводами, используя для этого алгоритм Кука — Тоома для свертки. 3.4. а. Начиная с алгоритма вычисления 2-точечной линейной свертки J (х) = g^x' + [gjd, + god, — (g, — g„) (d, — d») 1 x + g^, построить алгоритм вычисления s (x) = g (x) d (x) (mod xa — x + 1). б. Повторить задачу, начиная с алгоритма s (х) = gAx’ + [(gi + g„) (d, + do) — g,d, — g„d0] x + gA- Какой из алгоритмов заслуживает предпочтения? 3.5. Допустим, что у нас имеется устройство (жесткий модуль или подпро- грамма) для вычисления 315-точечной циклической свертки, и что требуется пропустить 1000-точечный вектор данных через КИО-фильтр с 100 отво- . дамн. Описать, как надо разбить данные и организовать устройство свертки, чтобы получить требуемый ответ. 316. Построить алгоритм 4-точечной циклической свертки комплексных после- довательностей, содержащий четыре комплексных умножения. Сравнить построенный алгоритм с алгоритмом 4-точечной циклической свертки вещественных последовательностей, используемым для свертки комплекс- ных последовательностей. 3.7. Одним из способов определения поля комплексных чисел является рас- ширение поля вещественных чисел с помощью неприводимого многочлена р (х) = ха + 1. Комплексное умножение при этом определяется равенством е + /х = (а + bx) (с + dx) (mod х2 -j- 1). Используя это определение, преобразуйте алгоритм линейной свертки в алгоритм умножения комплексных чисел. 3.8. а. Сколько умножений содержит алгоритм Винограда вычисления 16-то- чечной циклической свертки, если в качестве модулей используются только разложения х1«- 1 = (х— 1) (х+ 1) (хя + 1) (*4+ 1) (х9+ 1)?
126 Гл. 3. Быстрые алгоритмы коротких сверток б. Предположим, что допускается разложение многочлена над полем ком- плексных рациональных чисел, т. е. чисел вида а + jb, где а и Ь — раци- овальные числа. Сколько теперь потребуется комплексных умножений, если в качестве модулей допускаются многочлены, имеющие числа 1, ±j в качестве коэффициентов? (Замечание-, теперь комплексные числа счи- таются внутренними переменными и умножение на j не считается умно- жением.) в. Имеет ли алгоритм (б) преимущества перед алгоритмом (а)? (Указание: рассмотреть, является ли циклическая свертка вещественной или ком- плексной.) 3.9. Выписать всю последовательность равенств вычисления линейной (4 X X 3)-свертки по алгоритму Винограда, основанному на многочлене т (х) = ха(х + 1) (х- 1) (ха+ 1). 3.10. Для представления в ЭВМ чисел с двойной точностью можно использовать запись числа в виде многочлена ^х4- dg. Для такой записи чисел с двой- ной точностью выписать алгоритм умножения без округления, содержащий три умножения и четыре сложения чисел с одинарной точностью. 3.11. Используя алгоритм и принцип трансформации1), построить пять новых алгоритмов. Чем они интересны? । 3.12. Доказать, что для любого л > 1 в поле вещественных чисел лучший алго- ритм вычисления /’ s W = g (х) d (х) (mod х“+ 1) ' содержит больше умножений, чем лучший алгоритм вычнслег^ия s (х) = g (х) d (х) (mod хп — 1). 3.13. Найти такие целые числа л и л', что л < п', но л-точечная циклическая свертка требует большего числа умножений, чем л'-точечная цикличес- кая свертка. 3.14. Используя знание быстрых алгоритмов свертки, построить алгоритм 3-то- 2 чечного преобразования Фурье, k = 0, 1, 2, содержащий »=о только два нетривиальных вещественных умножения. 3.15. Построить алгоритмы для следующих вычислений: a. s (х) = g (х) d (х) (mod х3 + х + 1). б. s (х) = g (х) d (х) (mod х3). в. s (х) = g (х) d (х) (mod х3 + х2 + 1). 3.16. а. Сколько вещественных умножений требует описанный в разд. 3.7 метод вычисления циклической комплексной свертки по модулю х8— 1? б. Сколько комплексных умножений требуется по теореме Винограда о сложности для вычисления в поле комплексных чисел циклической свертки по модулю многочлена х8 — 1? в. Объяснить все кажущиеся несоответствия. х) См. теорему 9.2.1. —Прим, перев.
Замечания 127 3.17. а. Предполагая, что все переменные являются независимыми веществен- ными величинами, доказать, что для вычисления двух комплексных произ- ведений г+ if = (о+ /*1 (с+ е' + if' = (“' + /*') Iе' + /<!'). требуется выполнить шесть вещественных умножений, б. Сколько потребуется умножений для одновременного вычисления следу- ющих двух комплексных призведений: г + if = (а+ /4) (с+ ДО, + if = (<г — /4) (с+ iifi В данном случае переменные повторяются. в. Сколько потребуется умножений для одновременного вычисления сле- дующих двух комплексных произведений: е + if = (« + jb) (с 4- jd), е' + if' = (а — jb) (с — jd)? 3.18. а. Доказать, что вычисление Г so "1 _ Г Sv gi j Г 1 1 «1 J L £о 1 l>i Г где все переменные являются комплексными, требует шести вещественных умножений. б. Доказать, что вычисление Г 1 = Г й /«Г ] Г + /Ч' ] I»;+к J L /й J L rfj' +' к 1 ’ где все переменные являются вещественными, также требует шести веще- ственных умножений. Таким образом, равенство нулю величин g’o и g[, как и в задаче а, не уменьшает числа необходимых умножений. в. Доказать, что вычисление Г s« I = Г g« Л ] Г 4 ] где все переменные являются комплексными, требует шести вещественных умножений. 9 г. Доказать, что вычисление г + л; 1 г «; isi ] г <<;+/fj 1 l s; + м J I —ig'i g'« J l <*; + /<*; J ’ где все переменные вещественны, требует четырех вещественных умно- жений. В этом случае равенство нулю переменных и g{ уменьшает необ- ходимое число умножений. 3.18. Построить алгоритм 4-точечной циклической свертки над полем комплекс- ных чисел. Сравнить этот алгоритм с алгоритмом, основанным на БПФ и теореме о свертке. Замечания Без какой-либо общей теории первые быстрые алгоритмы сверток коротких длин были описаны Агарвалом и Кули [ 1 ] (1977) в связи с развитыми ими много- мерными гнездовыми методами. Описанный нами общий метод был предложен Виноградом [2] (1978). Примеры использования этого метода приведены в моно- графии (4] 1980 г. Виноград также доказал 13] (1977) теоремы о сложности рассмотренных алгоритмов свертки для полей комплексных и вещественных чисел.
Глава 4 БЫСТРЫЕ АЛГОРИТМЫ ДИСКРЕТНОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ Построение набора методов вычисления дискретного преобра- зования Фурье является одной из основных наших целей. Мы по- строим много таких методов, каждый из которых обладает раз- личными преимуществами перед другими и каждый из которых наиболее пригоден при соответствующих обстоятельствах. Основ- ных стратегий имеется две. Одна из них состоит в сведении дис- кретного преобразования Фурье к свертке, которая затем вы- числяется описанными в предыдущей главе методами. Другая стратегия состоит в переходе от одномерного преобразования Фурье к двумерному, которое вычисляется проще. Хорошие алго- ритмы вычисления дискретного преобразования Фурье для мини- мизации сложности вычислений используют обе эти стратегии. Многие из изучаемых нами алгоритмов не зависят от частных особенностей поля, над которым определено дискретное преобразо- вание Фурье. Поэтому мы часто будем опускать указание на конкретное поле и в этом случае алгоритм справедлив для любого поля. В других случаях, хотя общая идея алгоритма и не зависит от поля, над которым рассматривается дискретное преобразование Фурье, но некоторые детали алгоритма определяются спецификой поля. В этих случаях алгоритм должен строиться для конкретного интересующего нас поля. 4.1. Алгоритм Кули—Тьюки быстрого преобразования Фурье Преобразование Фурье вектора v, vt = (S в том виде, как оно записано, требует порядка п2 умножений и п3 сложений. Если число п является составным, то имеется не- сколько способов перейти от этого преобразования Фурье к дву-. мерному преобразованию или к чему-либо ему аналогичному. Это позволяет перевести вычисления в более эффективную форму,,;
БПФ-алгоритм Кули—Тьюки (1965) п = п п* i= ' I' = 0, .. ., n' — : Г = 0, .. ., д' — k — fl’k' + k* У = 0, . ... д' — k” = 0, . .., n* — 1=0 L r-o J Число умножений «д(д' + д’)+д Рис. 4.1. БПФ-алгоритм Кули—Тьюки. но за это приходится платить усложнением структуры. Алгоритмы подобного сорта известны под общим названием быстрого преоб- разования Фурье (БПФ). На рис. 4.1 приведена структура БПФ- алгоритма Кули—Тьюки, изучаемого в данном разделе. Рис. 4.1 интересно сравнить с рис. 4.8 из разд. 4.3, на котором приведена структура БПФ-алгоритма Гуда—Томаса. Для построения БПФ-алгоритма Кули—Тьюки предположим, что п = n'h*. В выражении для преобразования Фурье сделаем следующую замену записи каждого индекса: i == Г + n'i", i' = 0, п' — 1, J Г = 0, .... п* - 1, k = nk' + F, k’ = 0, ..., п' — 1, k” = 0, ..., п" — 1. Тогда г=о г=о Раскроем скобки в показателе степени и положим (о"' = у и со17" = р. Так как порядок элемента равен л'л", то член _ I можно опустить. Определим теперь двумерные пере- менные, которые тоже обозначим через v и V, задавая их равен- ствами Г = 0, ..., п' — 1, = >" = 0, .... л'-1, k' = 0, ..п' — J, г=0........п,_} 5 Бяейхут р.
iov i л. t. DHupbie алгоритмы дискретного преоиразования ч’урье Индексы 15 точек на входе отображение Индексы 15 точек на выгоде вычисление Индексы 21 точки на входе Индексы 21 точки на выходе отображение отображение 19 вычисление Рис. 4.2. Примеры переивдексации по методу Кули—Тьюки. При этом векторы входных и выходных данных преобразуются в двумерные массивы. Заметим, что компоненты преобразова- ния V упорядочены в таблице не так, как компоненты сигнала v. Это упорядочивание известно под названием адресного тасования. В терминах двумерных переменных формула преобразуется к виду /'=0 L i=Q Хотя для. понимания эта формула более трудна, чем исходная, но число .входящих в нее умножений и сложений существенно меньше. А именно, она содержит не более п (п' + п” + 1) ком- плексных умножений и п (п' + п” — 2) комплексных сложений вместо пъ комплексных умножений и ла комплексных сложений исходной формулы. Визуально БПФ-алгоритм Кули—Тьюки выглядит как ото- бражение двумерной таблицы в двумерную таблицу, как показано на рис. 4.2 для примеров с п = 15 и п = 21. Вычисления состоят из поточечного дискретного преобразования Фурье каждого столбца, поэлементного умножения всех элементов таблицы соот- ветственно на <ог*" и «'-точечного дискретного преобразования Фурье каждой строки. Чтобы для комплексного входного вектора v подсчитать пол- ное число комплексных умножений и комплексных сложений, предположим, что внутреннее и внешнее преобразования Фурье вычисляются обычным способом, содержащим соответственно (л*)2 и (л')а комплексных умножений и л* (л* — 1) и я' (л' — 1)
75 тачек 5-точечное преобразование Фурье 5-точечное преобразование Фурье Рис. 4.3. Структура 75-точечного БПФ-алгоритма Кули — Тьюки. комплексных сложений. Каждое из этих преобразований Фурье используется п' и п" раз соответственно. Помимо этого имеется п'п" комплексных умножений на множители «регулировки» Таким образом, полное число умножений, Л4С (п), и полное число сложений, Ас (л), в данном случае равны Мс(л) = п' (л")3 + л" (л7)3 4- л'л" = п(п' 4- л" 4-1), Ас(л) ^n'n” (п” — 1) 4- n"nf (п* — 1) = п(п' 4~ п” — 2), что и утверждалось ранее. Среди умножений имеются и тривиаль- ные умножения на 1. Это происходит всякий раз, когда в множи- теле регулировки целые числа Г или kH в показателе обращаются б нуль. При желании алгоритм можно перестроить так, чтобы выкинуть этй умножения; тогда число комплексных умножений станет равййм Мс (л) = п (п' 4- п") 4- (п' — О (п" — О = = (п — 1) (п + л ) + (л + 1). Внешнее и внутреннее преобразования Фурье в свою очередь могут быть вычислены с помощью быстрых алгоритмов, не обя- зательно с помощью БПФ-алгоритма Кули—Тьюки. Тогда для числа комплексных сложений и для числа комплексных умноже- ний, входящих в БПФ-алгоритм Кули—Тьюки, получаем соот- ношения Мс (п) = п'Мс (п") 4- л"2Ис (л') 4- п, Ас (п1) = п' Ас (п") 4- n"Ac (п')> где новые члены, стоящие в правых частях равенств, обозначают числа комплексных умножений и комплексных сложений, входя- щих соответственно в и'-точечный и п*-точечный быстрые алго- ритмы преобразования Фурье. Конечно, если и' или и" опять яв- ляется составным числом, то меньшее преобразование опять
Вход ВПФ: 7S точек Выход БПФ: 75 точек Вход БПФ: 25 точек Выход БПФ: 25 точек Вход 5-точечного преобразования I VK = ‘О1 Vi Выход 5-точечного преобразования Вход 5-точечного преобразования [________________________ Выход 5-точечного преобразования Рис. 4.4. Разбиение БПФ-алгоритма Кули—Тьюки на подпрограммы.
можно вычислять с помощью БПФ-алгоритма Кули—Тьюки. На этом пути преобразование длины п = может быть пред- i ставлено в такой форме, в которой требуется выполнения п i комплексных умножений. На рис. 4.3 показан один из многих способов разбиения 75-точечного преобразования Фурье. Каждый из узлов этого рисунка можно представлять себе как обращение к подпрограмме. Если вычисления реализуются с помощью такого разбиения на подпрограммы, то один из способов организации программного вычисления показан на рис. 4.4. На самом нижнем уровне вычислений находятся 3-точечное и 5-точечное преобразо- вания Фурье, выполняемые буквально. Позже мы построим малый БПФ-алгоритм Винограда, который можно использовать на этом уровне в качестве подпрограммы. Малые БПФ-алгоритмы Вино- града представляют собой сильно оптимизированные процедуры вычисления преобразования Фурье для длин, являющихся про- стым числом или степенью простого числа. 4.2. Алгоритм Кули—Тьюки _ по малому основанию Во многих приложениях, в которых используется алгоритм Кули—Тьюки, длина преобразования равна степени двух или четырех. Для построения БПФ-алгоритма длина 2т преобразо- вания представляется в виде 2.2я1-1 или 2я1-1.2. В этом случае говорят £ БПФ-алгоритме Кули—Тьюки по основанию два *). Аналогично, длина 4я2 преобразования разлагается в виде 4-4я,“1 или 4я'—*-4, и тогда говорят о БПФ-алгоритме Кули—Тьюки по основанию четыре. Если в 2Я1-точечном алгоритме Кули—Тьюки по основанию два полагается п = 2 и п" = 2я*-*, то он назы- вается БПФ-алгоритмом Кули—Тьюки по основанию два с проре- живанием по времени. Используя тот факт, что р = ©я^2 = —1, в этом случае уравнения, задающие БПФ, можно записать в следу- ющем простом виде: л/2—! л/2—I 4- МА S ®W*W«l4.1» nZi X А = 0, .... n/2-1, Vk+n/2 = S — И* S W2“«2i+1- z=o z=o J) Термин <по основанию два» относится к факту записи индексов по осно- ванию два. Компоненты данных могут быть представлены в любой системе счис- ления, в частности по основанию два.
i л. **. utjcipbie алгоритмы дискретного преооразования Фурье Прореживание по времени разбивает множество компонент вход- ного вектора на два подмножества: множество компонент с чет- ными индексами и множество компонент с нечетными индексами. Множество компонент выходного вектора разбивается при этом на множество первых л/2 компонент и множество вторых л/2 компонент. ------------- 2т-точечный БПФ-алгоритм Кули—Тьюки по основанию два, в котором п' = 2т~1 и л" = 2, называется Б ПФ-алгоритмом Кули—Тьюки по основанию два с прореживанием по частоте. Уравнения БПФ в этом случае преобразуются к виду л/2-1 У 2k' == S far 4" ^Г-М/й) X .... n/2-i, Vit-+i = S (»<- — ас+п/2)ш''щ2‘''4'. г=о Прореживание по частоте разбивает компоненты входного век- тора на два подмножества, содержащие соответственно первые п/2 компонент и вторые л/2 компонент. Компоненты выходного вектора разбиваются на подмножество компонент с четными ин- дексами и подмножество компонент с нечетными индексами. Алгоритм с прореживанием по времени и алгоритм с прорежи- ванием по частоте отличаются структурой и последовательностью вычислений, хотя имеют одно и то же число операций. Характе- ристики алгоритмов совпадают, но пользователь может предпо-, честь один из них из соображений реализации. Мы подробно рас- смотрим только характеристики алгоритма с прореживанием по времени. Алгоритм с прореживанием по времени сводит л-точечное пре- образование Фурье к двум (и/2)-точечным преобразованиям Фурье с некоторыми дополнительными сложениями и умножениями. Часть из умножений представляют собой умножения на единицу или +/. Они тривиальны и не требуют действительного вычисле- ния. Чтобы обойтись без тривиальных умножений в алгоритме, их следует обрабатывать отдельно. Иногда конструктор предпо- читает включить в процедуру вычисления все умножения, даже тривиальные. Алгоритм с прореживанием по времени работает рекурсивно, разбивая на каждом шаге л-точечное преобразование на два (л/2)-точечных преобразования, которые, в свою очередь, раз- биваются точно таким же образом. Из уравнений ясно видно, что число 7ИС (л) комплексных умножений л-точечного БПФ удовле- творяет рекуррентному уравнению Мс (л) = 2МС (л/2) + л/2,
4.2.* Алгоритм Кули—Тьюки по малому основанию 135 а число Лс (л) комплексных сложений удовлетворяет рекуррент- ному уравнению Ас (л) = 2АС (л/2) + л, где п равно степени двойки. Решения этих уравнений даются равенствами Мс (п) = (n/2) log, п, А, (л) = п logs П. Комплексные умножения можно реализовать алгоритмом с че- тырьмя вещественными умножениями и двумя вещественными сложениями. В этом случае характеристикиБПФ по основанию два даютсяг равенствами (л) == 2л loga n, (л) = Зи log2 п. Альтернативный алгоритм выполнения комплексного умножения содержит три вещественных умножения и три вещественных сложения. В этом случае характеристики имеют вид ТИд (л) = (3/2) л log2 п, Ан (л) = (7/2) л log4 л. Теперь предположим, что мы хотим построить алгоритм, в ко1ором выброшены все тривиальные умножения. Тогда полу- ченные нами характеристики сложности алгоритма улучшатся. Тщательный анализ алгоритма показывает, что все умножения на самом внутреннем шаге алгоритма тривиальны и имеют вид умножений на (—1)* для k = 0, 1; все умножения на следующем шаге тривиальны и имеют вид умножений на /* для k == 0, 1, 2, 3; на последующих шагах число тривиальных умножений равно л/4, л/8, ... . Следовательно, число комплексных умножений равно < ' Мс (п) = (л/2) (—3 + logs п). + 2. Используя для реализации комплексного умножения алгоритм с четырьмя вещественными умножениями и двумя вещественными сложениями, для БПФ-алгоритма по основанию два получаем MR (л) = 2л (—3 + loga rt) + 8, Ar (л) = Зп (—1 + logs л) + 4- Используя для комплексного умножения алгоритм с тремя веще- ственными умножениями и тремя вещественными сложениями, получаем характеристики Л1д (rt) = (3/2) п (—3 4“ logs л) 4~ 6, Ar (л) = (1/2) л (—9 4- 71og2 л) 4- 6. ’ Еще немного можно улучшить алгоритм, если воспользоваться свойством симметрии тригонометрических функций. Заметим, что со«/8 = (1 — /)//2*
оыстрые алгоритмы дискретного преобразования Фурье Основной алгоритм комплексного БПФ по основанию два Полностью оптимизированный алгоритм комплексного БПФ ' по основанию два Алгоритм Рейдера —Бреннера комплексного БПФ по основанию два Длина п Число вещественных умножений Число вещественных сложений Число вещественных умножений Число вещественных сложений Число вещественных умножений Число вещественных сложений 8 48 72 4 52 4 64 16 128 192 24 152 20 192 32 320 480 88 408 68 512 64 768 1 152 264 1 032 196 1 280 128 1 792 2 "88 712 2 504 516 3 072 256 4 096 6 144 1 800 5 896 1 284 7 168 512 9 216 13 824 4 360 13 576 3 076 16 384 1024 20 480 30 720 10 248 30 728 7 172 36 864 2048 45 056 67 584 23 560 68 616 16 388 81 920 4096 98 304 147 456 53 256 151 560 36 868 180 224 Примечания: 1) В полностью оптимизированном алгоритме комплексное умножение проводится посредством трех вещественных умножений и трех вещественных сложений; 2) тривиальные Умножения (на ±1 нли на ±/) не учитываются; 3) полностью использу- ется симметрия тригонометрических функций. Рис. 4.5. Характеристики некоторых БПФ-алгоритмов Кули—Тьюки.
138 ^Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье ( 0 1=0 at I / (у(4-л/2 — ^)/I2sin (2л17л)] i = 1, п/2 — 1 ’ n/2-l Л* = У, а/ш2** А = 0, .... п/2—1 /=0 У«'й= S Pl + !'<+п/2) “2“ * = 0............п/2 - 1 <=0 ’'24-м = At+i - А„ + (VO - t.n/2) k = 0.......л/2 — I Рис. 4.6. БПФ-алгоритм Рейдера—Бреннера. то величины Vafe+1 и Ah связаны равенствами Vtt+i = Лн-1 — Ak -J- (Vo — Уп/г)- Таким образом, умножение на комплексные константы fa* уда. лось заменить на умножения на мнимые константы 12/ sin (2bii/n) что уменьшает вычислительную сложность. Необходимо,! однако, проследить, чтобы не произошло переполнение по длийе слова потому, что когда п велико, а I мало, новые константы становятся весьма большими. Вкратце форма алгоритма показана на рис. 4.6. Каждое из двух (п/2)-точечных дискретных преобразований Фурь^ можно в свою очередь разбить точно таким же образом. На каждом шаге алгоритма требуется (п/2) — 2 умножении комплексных чисел на мнимые, для чего в итоге используется гг — 4 веществен- ных умножений. (Мы предпочли избежать умножения на 1/2 при i, равном п/4.) На каждом шаге алгоритма всего имеется 2п комплексных или 4п вещественных сложений. Характеристики алгоритма Рейдера—Бреннера описываются рекуррентными урав- нениями MR (л) = п — 4 4- 2Л1д (n/2), Ar (п) = 4п -|- 24fi (п/2) при начальных условиях MR (4) = 0, AR (4) = 16. Здесь не учтены имеющиеся на двух самых внутренних шагах умножения на (±1) и (±/). Вместе с другими формами БПФ-алгоритма Кули—Тьюки на рис. 4.5 приведены характеристики БПФ-алгоритма Рейдера— Бреннера. Отметим, что полностью оптимизированные БПФ- алгоритмы по основанию 2 для малых длин содержат меньше сложений. Это позволяет предложить гибридный алгоритм: раз- бивать преобразование Фурье по алгоритму Рейдера-Бреннера до тех пор, пока не достигнем длины 16, а затем переходить на полностью оптимизированный алгоритм. Использование на самом внутреннем этапе рассматриваемого в разд. 4.6 16-точечного БПФ-алгоритма Винограда позволяет еще больше улучшить
4.2. Алгоритм Кули—Тьюки по малому основанию 139 результаты. Характеристики гибридного алгоритма описываются теми же рекуррентными уравнениями, но с начальными условиями Мй (16) = 20, Ar (16) = 148. Очень популярны также БПФ-алгоритмы Кули—Тьюки по основанию 4. Они могут быть использованы в случаях, когда длина преобразования п равна степени 4, и получаются ее разло- жением в виде 4-4/п~1 или 4т~1-4. Мы рассмотрим БПФ-алгоритм Кули—Тьюки по основанию 4 с прореживанием по времени. Уравнения этой формы БПФ можно получить простой подста- новкой п' = 4 и п" = п/4 в приведенные на рис. 4.1 общие урав- нения БПФ-алгоритма Кули—Тьюки. При k = 0, .... п/4 — 1 соответственно имеем V, 1111 I'.../. 1 -j -1 j У,..,2 1-1 1-1 К» + Зл/4 1 J “1 — j '--IL J Для каждого из п/4 рассматриваемых "у-*1 ** 1 = 0 л/4 - 1 Ы* У? 1=0 и/4-1 • г=0 я/4-1 М У"» 4М О! / . О> 1>**} 1=0 значений индекса k такое матричное уравнение определяет четыре компоненты преобразо- вания. Этот метод позволяет n-тоЧечное преобразование Фурье заменить четырьмя (п/4)-точечными преобразования Фурье и не- которыми дополнительными вычислениями. Из выписанного урав- нения следует, что для каждого k имеется только три различных комплексных умножения и 12 комплексных сложений. Самый внутренний шаг — 4-точечное преобразование Фурье — вообще не содержит умножений. Число сложений можно еще уменьшить. Для этого перепишем последние уравнения для k — 0, ..., п/4 — 1 в виде
140 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье Разложив исходную (4х4)-матрицу в произведение двух, мы полу- чили 8 сложений вместо 12. Это дает окончательную форму БПФ- алгоритма Кули—Тьюки по основанию 4. Характеристики алго- ритма описываются равенствами Х (п) = (3/4) п (log, п - 1) = (3/8) п (loga п - 2), Л с (гг) = 2п log, п = п loga п для числа комплексных умножений и сложений соответственно. Если для вычисления комплексных умножений используется алгоритм с тремя вещественными умножениями и тремя веще- ственными сложениями, то характеристики описываются равен- ствами Л4Н (rt) — (9/8) п (1°6а п ~ 2), (") = (25/8) п log3 п — (9/4) п. Можно получить и лучшие результаты, если вложить в про- грамму способность выловить все умножения на’ (±1) и на (±/) или на нечетные степени элемента (1/>/2) (1 — /), поскольку они не требуют трех вещественных умножений, и убрать их из алго- ритма. Тогда характеристики будут даваться равенствами ,» , . 9 । 43 । 16 Mr (П) = -у П l0ga П — -J2- П + — > , , ч 25 , 43 .16 Ar (rt) = -у- п 10gs л “ -12“ л . Характеристики БПФ-алгоритма Кули—Тьюки подытожены на рис. 4.7. Основной алгоритм комплексного БПФ по основанию 4 Полностью оптимизированное комплексное БПФ по основанию 4 Длина Число вещественных умножений Число вещественных сложений Число вещественных умножений Число вещественных сложений 4 0 16 16 36 164 64 288 1 128 256 1 728 5 824 1024 9 216 29 696 4096 46 080 144 384 0 20 208 1 392 7 856 40 642 16 148 976 5 488 28 336 138 928 * Комплексное умножение с использованием 3 вещественных умножений и 3 веществен- ных сложений. Тривиальные умножения на ±1 или ±/ не учитываются. Рис. 4.7. Характеристики некоторых БПФ-алгоритмов по основанию 4.
4.3. Алгоритм Гуда—Томаса быстрого преобразования Фурье 141 4.3. Алгоритм Гуда—Томаса быстрого преобразования Фурье Алгоритм Гуда—Томаса с использованием простых делителей представляет собой БПФ-алгоритм второго типа. Концептуально он несколько сложнее алгоритма Кули—Тьюки, но в вычисли- тельном отношении несколько проще. Показанный на рис. 4.8 алгоритм Гуда—Томаса представляет собой другой способ отобра- жения линейной последовательности , из п = п'п” целых чисел в (п' X п")-таблицу, преобразующего одномерное преобразова- ние Фуцье в двумерное преобразование Фурье. Лежащая в основе отображения идея сильно отличается от идеи алгоритма Кули— Тьюки. Теперь числа п' и п" должны быть взаимно простыми, а основой отображения линейной последовательности в таблицу служит китайская теорема об остатках. Обращаясь к рис. 4.9, мы видим, как переупорядочены входные данные. В двумерную таблицу они выписываются, начиная с верхнего левого угла, вдоль «расширенной диагонали». Поскольку число строк таб- лицы взаимно просто с числом ее столбцов, расширенная диаго- наль последовательно проходит через все элементы таблицы. После выполнения над этой таблицей двумерного преобразования Фурье компоненты преобразования оказываются записанными в двумерной таблице по иному правилу, чем были записаны ком- поненты преобразуемого вектора. Способ упорядочивания вход- ной и выходной таблиц будет описан ниже. БПФ-алгоритм Гуда—Томаса (I960—1963) п == п'п', где п’ и п" взаимно просты Перестановка входных индексов: i' — i (mod n') ) ( i = l*N*n“ + ГЛ"'п' (mod я), >♦*< где Г = i (mod n") J I N'n' -f- N'n' = 1. Перестановка выходных индексов: k’ = N”k (mod я') ) , _ 1 «->- k — я k -f- n k (mod n), k = N k (mod n ) J Vk', k"= k [ S k r=o L r=o J Число умножений « n (n' + n') Рис. 4.8. БПФ-алгоритм Гуда—Томаса.
142 /Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье Индексы 15 точек на входе индексы /5 точек 'на выходе отображение вычисление отображение Индексы 21 точки на входе индексы 21 точки на выходе вычисление отображение 0 L5 9 1 18 12 6 | 16 10 19 13 14 8 2 1? 11 5 20 отображение Рис. 4.9. Примеры переиндексации по методу Гуда—Томаса. Построение БПФ-алгоритма Гуда—Томаса основано на китай- ской теореме об остатках для целых чисел. Входные индексы задаются вычетами по правилу Г === t (mod n'), i" = i (mod n"). Это правило представляет собой отображение индекса i на расши- ренную диагональ двумерной таблицы, элементы которой зану- мерованы парами индексов (Г, Г). Согласно китайской теореме об остатках, существуют такие целые числа ЛГ и NH, что выпол- няется равенство i = I'N^n* 4- fN’n’ (mod п), где N'n' -J- N"n” = 1. Выходные индексы определяются несколько иначе. Пусть k' ~ N”k (mod л'), А" = N'k (mod п"). Эти равенства можно переписать в эквивалентном виде k’ = ((JV* mod п') k mod n'), k” == ((AT mod n") k mod /Г). Выходные индексы k вычисляются по правилу > k = n"kr 4- n’k” (mod и). Для проверки этого равенства выпишем5 fe = n" (N”k 4- Qjn') п' (N'k -j- Q2n") (mod л'лв) = = k (n"N" 4- n'N') (mod n) = k.
4.3. ’Алгоритм Гуда—Томаса быстрого преобразования Фурье 143 В этих новых индексных обозначениях формула = 2 {=0 преобразуется к виду гГ—1 п’~ 1 vn-s-+!,-f= 2 Yi ' r=0 /'=0 Выполним умножения в показателе степени. Поскольку поря- док элемента со равен п'п“, то члены с этим показателем пропа- дают. Тогда выписанное выше преобразование индексов для эле- ментов входной и выходной таблиц дает п'—1 Л*—1 Vf 4- = И 2 <!)"''”’ ('*'ш г = Г=о /’=0 я'—1 п*—I - ;,S i2)₽i'‘’T'”‘'p<-. где р = ©**(»">* и у = Элементы 0 и у являются про- стыми корнями из единицы степеней п' и п", задающими п' -точеч- ное преобразование Фурье и п'-точечное преобразование Фурье соответственйо. Чтобы увидеть это, достаточно заметить, что (3 = ((#«'’)**«•. Так как о”' = е~12п/п' и М"п" = 1 по модулю п', то р = е-/2л/я' Аналогичное утверждение справедливо и- для элемента у. Уравнение теперь записано в форме двумерного (п' х по- точечного преобразования Фурье. Число умножений и число сложений равно примерно n (п' 4- п”). Преобразование Фурье по строкам и по столбцам, если соответствующая размерность задается составным числом, можно в свою очередь упростить, применяй алгоритм БПФ. Таким образом, если длина п преоб- разования разлагается в произведение простых множителей п,, то описанная форма БПФ-алгоритма требует примерно п У пг i умножений и столько же сложений. Для вычисления преобразования Фурье можно пользоваться как БПФ-алгоритмом Кули—Тьюки, так и БПФ-алгоритмом Гуда—Томаса. Можно даже строить алгоритмы, содержащие БПФ-алгоритм Кули—Тьюки и БПФ-алгоритм Гуда—Томаса одновременно. Например, используя БПФ-алгоритм Гуда—То- маса, можно 63-точечное преобразование Фурье разбить на 7-то- чечное и 9-точечное; используя далее БПФ-алгоритм Кули— Тьюки, 9-точечное преобразование можно разбить на два 3-точеч- ных преобразования. Вычисления при этом преобразуются в форму, аналогичную трехмерному (ЗхЗх7)-преобразованию
144 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье Рис. 4.10. Некоторые способы построения 1000-точечного преобразования Фурье. Фурье. На рис. 4.10 показано несколько способов разбиения 1000-точечного преобразования Фурье на преобразования мень- шего объема. Каждый из способов содержит 2-точечный модуль три раза и 5-точечный модуль три раза. Но все процедуры суще- ственно различны, так как малые модули используются в разной последовательности. Число умножений и сложений, чувствитель- ность алгоритма к погрешностям вычислений и легкость реализа- ции алгоритма различны. 4.4. Алгоритм Герцеля Значение одной компоненты преобразования Фурье можно вычислить по правилу Горнера, дающему один из способов вы- числения многочлена О + »„_2ЛГ'-2 Н-+ vrx + и0 в некоторой точке р. Правило Горнера, записанное в виде ° (Р) = ( • ’ • ((УП-1Р ип-2) Р 4“ ^П-з) Р + • • + 01) Р + требует п — 1 сложений и п — 1 умножений в поле элемента р. Если все различные степени элемента р вычислены заранее,
4.4. Алгоритм Герцеля 145 то правило Горнера не дает никаких преимуществ по сравнению с прямым вычислением. Преимущество правила Горнера состоит в том, что оно не требует предварительного вычисления и запоми- нания этих степеней. Если 0 = (&k, то правило Горнера вычисляет k-ю компоненту преобразования Фурье посредством п — 1 комплексных умноже- ний и п — 1 комплексных сложений. Более эффективным для этого вычисления является алгоритм Герцеля. Алгоритм Герцеля представляет собой процедуру вычисления дискретного преобразования Фурье. Он позволяет уменьшить число необходимых умножений, но на очень малый множитель. Он не принадлежит к алгоритмам БПФ, так как его сложность по-прежнему пропорциональна п2. Алгоритм Герцеля полезен в тех случаях, когда требуется вычислить малое число компонент преобразования Фурье, — как правило, не более чем log2 п из п компонент. Так как БПФ-алгоритмы вычисляют все ком- поненты преобразования, то в этих случаях приходится выбрасы- вать ненужные компоненты. Для вычисления одной компоненты преобразования Фурье п—I = S рассмотрим многочлен р (х) = (х — со*) (х — со-*). Он представляет собой многочлен наименьшей степени с веще- ственными коэффициентами, для которого элемент со-* является корнем. Это минимальный многочлен элемента со* над полем вещественных чисел, и он равен р (х) = х2 — 2 cos k) х + 1. Пусть л—1 ц(х) = 2] ViX{ »=0 и запишем и (х) = р (х) Q (х) + г (х). Многочлен-частное Q (х) и многочлен-остаток г (х) могут быть найдены с помощью алгоритма деления многочленов. Тогда вели- чина может быть вычислена по остатку согласно равенству = о (со*) = г (со*), так как по построению величина р (со*) равна нулю. Большая часть работы приходится на деление многочленов. Если коэффициенты многочлена п (х) являются комплексными, то для его деления на многочлен р (х) требуется 2 (п — 2) вещественных умножений; если же коэффициенты многочлена v (х) являются вещественными, то требуется п — 2 вещественных умножений. Аналогично, не- обходимое число сложений в комплексном случае равно 4 (п — 2), а в вещественном 2 (п — 2).
146 Гл.Л'" Быстрые алгоритмы дискретного преобразования Фурье Замечания: • Входные данные вещественные или комплексные. . Д = 2 cos — k. п 1 • г (х) остается в регистре сдвига после завершения деления • Для каждого своя цепь деления. - -h r0. -Рис. 4.11. Блок-схема алгоритма Герцеля. Так как степень многочлена г (х) равна единице, то для вы- числения г (со*) требуется только одно комплексное умножение и одно комплексное сложение. Таким образом, при комплексном входе для вычисления одной выходной компоненты алгоритму Герцеля требуется 2п— 1 вещественных умножений и- 4п— Г вещественных сложений. Блок-схема ‘алгоритма Герцеля показана на рис. 4.11. Эта схема имеет форму авторегрессионного фильтра. Это является следствием того, что схема деления многочленов имеет форму авторегрессионного фильтра. После ввода многочлена v (х) цепь на рис. 4.11 будет содержать остаток г (х) от деления многочлена v (х) на многочлен р (х). Частное Q (х) интереса не представляет и поэтому отбрасывается.
'4.5. Вычисление преобразования Фурье с помощью свертки 147 4.5. Вычисление преобразования Фурье с помощью свертки Одним из эффективных способов вычисления дискретного пре- образования Фурье п—1 c=o является сведение к вычислению свертки. Это может показаться странным, так как мы уже знаем, что хорошим методом вычисле- ния свертки является использование БПФ и теоремы о свертке. И на самом деле, возможно поэтому, многие годы рассматриваемые в данном разделе методы привлекали мало внимания. Сейчас, однако, стало понятно, что иногда выгодно вычислять преобразо- вание Фурье сведением к вычислению свертки, а иногда, наобо- рот, выгоднее вычислять свертку через преобразование Фурье. Что еще удивительнее, иногда выгодно вычислять свертку через преобразование Фурье, реализуя при этом преобразование Фурье через алгоритм вычисления свертки, хотя и на длине, отличной от. исходной. Два различных способа перехода от преобразования Фурье к свертке дают чирп-алгоритм Блюстейна и алгоритм Рейдера для простых чисел (см. рис. 4.12). Алгоритм Блюстейна переводит «-точечное преобразование Фурье в «-точечную свертку и 2« дополнительных умножений. Алгоритм Рейдера переводит «- точечное преобразование Фурье в (п— 1)-точечную свертку, но только для простых чисел п. Алгоритм Блюстейна менее полезен, но проще в описании, так что мы начнем с него. Он описывается равенством v* = ₽-‘,’s где р равно квадратному корню из со. В этом варианте преобра- зования Фурье производятся следующие вычисления: ₽-** Е (₽-'»!) = "е ₽2'Ч = E ““«I = vh. i=l i=0 С=0 Чирп-алгоритм содержит п поточечных умножений vt на р-'1, циклическую свертку с рр в КИО-фильтре с п отводами и следую- щие за этим п поточечных умножений на p~fti. Поэтому полное число операций по-прежнему имеет порядок п2, так что чирп- алгоритм асимптотически не эффективнее прямого вычисления преобразования Фурье. Однако в некоторых приложениях он допускает более простую аппаратурную реализацию. Кроме того,
148 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье Чира-алгоритм Блюстейна i-0 Алгоритм Рейдера для простои длины Длина п преобразовании является простым числом ИспользоВать ОС — примитивный элемент поля GF(n) (1,2, 3, . . . , п - 1} = 1г1, яг2, т3,. . . , я*1-1 mod /»} И* = Е Л, i = к = гп» £-0 ^0 = У2 ui ^* = »0 + U* &а0,...,Л- 1/ l=0 i.=O n-1 ! = Уо + /, <J ve / Z-i n-t И/ = v0 + V I = 0, . . . , n - 1 Рис. 4.12. Сведение преобразования Фурье к свертке.
4.5. Вычисление преобразования Фурье с помощью свертки 149 прямое вычисление свертки можно заменить рассмотренными в гл. 3 алгоритмами быстрой свертки. Алгоритм Блюстейна содержит 2п умножений и свертку длины п. Более предпочтителен следующий алгоритм — алго- ритм Рейдера, — так как он не содержит 2п дополнительных умножений. Алгоритм Рейдера содержит только некоторые опе- рации по переиндексации входных данных и циклическую сверт- ку, длина которой теперь уже равна п—1. Алгоритм Рейдера можно использовать для вычисления пре- образования Фурье в любом поле F, если только длина преобразо- вания п является простым числом. Так как п — простое число, то можно воспользоваться структурой поля GF (н) для переин- дексации компонент входного вектора. Поле GF (п) не следует путать с полем F, в котором вычисляется преобразование Фурье. Выберем примитивный элемент л простого поля GF (/г). Тогда каждое не превосходящее п целое число можно однозначно запи- сать в виде степени элемента л. Преобразование Фурье Vfe = S VikVh k = 0, ..п — 1, /=о можно переписать, заменив индексы i и k соответствующими степенями элемента л. Индексы i и k принимают и нулевые значе- ния; эти компоненты входного и выходного векторов удобнее рассматривать отдельно. Тогда п—I i=0 п— 1 Vk = ц> + S k— 1, ..., /1=1. Z=1 Пусть r (i) обозначает единственное для каждого i от 1 до л — 1 целое число, такое что в поле GF(n) выполняется равенство л/(О =/. функция г (/) является отображением множества j 1, 2, ..., п — 1} на множество |1, 2, ..., п — 1 [; она задает пе- рестановку на множестве |1, 2, ..., п — lj. Тогда Vk можно за- писать в следующем виде: Уяг(А) = п0 + + Так как г (i) задает перестановку, то можно положить I = г (k) и / = п — 1 — г (i) и выбрать / в качестве индекса суммирова- ния* это дает Vn‘ = »о+ S
150 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье ИЛИ у]=ц> + s /=0 где V/ ~ V i и v’j — ияГ1_[_/ — соответственно переставленные компоненты последовательностей входных и выходных данных. Теперь мы получили уравнение для вычисления циклической свертки последовательностей и ((оя/}. Таким образом, пере- ставляя индексы входных и выходных данных, мы записали пре- образование Фурье в виде свертки. Однако для того вида, в кото- ром эти формулы выписаны, необходимое число операций для вычисления свертки опять имеет порядок п2. В следующем раз- деле мы скомбинируем алгоритм Рейдера для простой длины с алгоритмом Винограда для свертки и получим малый БПФ- алгоритм Винограда. Построим, используя алгоритм Рейдера, двоичное пятиточеч- ное преобразование Фурье, для которого 4 k = 0...............4, где со = е-/2«/Б Сначала перепишем преобразование в виде Vo = S i=0 4 4 Vk = t>o + ®ikVi = Vo + S — 1) Vt, = 1...............4, t=l 4 и будем заниматься только членами £ (o)fA — 1) i»,. Элемент 2 i=l в поле GF (5) является примитивным, и, следовательно, в этом поле выполняются равенства 2° = 1, 21 = 2, 22 = 4, 23 = 3, 2° = 1, 2-1 = 3, 2-2 = 4, 2'3 = 2. Таким образом, VJ — Vo = 2 (со2/_/ — 1) Vp 1=0 В этой сумме легко узнается 4-точечная циклическая свертка. Выделим постоянные члены и определим фильтр Рейдера, задавая его многочленом g (к) над полем комплексных чисел, где g (х) = (о? — 1) Xs + (со4 — 1) х2 + (со2 — 1) х + (о — 1) (с коэффициентами gj = со2* — 1). Вход и выход фильтра описы- ваются многочленами, коэффициенты которых равны перестав-
£.5. Вычисление преобразования Фурье с помощью свертки 151 ленным компонентам векторов v и V. Итоговая форма 5-точечного алгоритма Рейдера задается уравнениями: d (х) = и2х8 -|- v4x* -j- v3x -j- vlf s (x) =- (Vs - Vo) x3 + (V4 - Vo) x2 + (V2- Vo) x + (Vi- Vo) и s(x) — g (x) d (x) (mod x* — 1). Многочлен g (x) фиксирован. Многочлен d (x) образуется перестановкой коэффициентов многочлена v (х). Многочлен V (х) получается обратной перестановкой коэффициентов многочлена з (х). Схематически этот алгоритм представлен на рис. 4.13. Поучительно переписать алгоритм Рейдера в матричной фор- мулировке. Для 5-точечного преобразования Фурье такая фор- мулировка имеет вид И.1 1 1 1 1 . 1 Vo и, 1 и ш2 W3 а>4 Vi у> = 1 ш2 ы4 W ы3 V2 V, 1 и5 ш ш4 ш2 Vj и. 1 и4 W3 СО 2 W1 V4 Отсюда получаем V 0 = «0 + «1 + V2 + Уз + И Правило перестановки алгоритма Рейдера приводит это равенство к эквивалентному равенству V, - Vo w1 _ 1 ‘ w3 - 1 w* — 1 w2 — 1 v2 - Va W2 - w1 - w} - ' ы* - 1 IM - Vo it>* - ' w2 - w' - ' w5 - 1 V4 Vy - Vo w3 — w4 - ш2 - : w1 - 1 U2 в котором легко распознать матричную форму записи цикличе- ской свертки и - 8о gi gz gi Vi у г - У„ gi go gi gi Vi У, - У„ gi gi go gi V4 У, - У„ gi gi gl go^ Vi
152 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье Вход (w#, Vi. «I, Wj, V4) Выход (Vo, Vit У,. И». V.) Рис. 4.13. Алгоритм Рейдера вычисления 5-точечкого преобразования Фурье.
f.b. Вычисление преобразования Фурье с помощью свертки 153 где^ g0 = ш — 1, gx = а2 — 1, g2 = (о* — I, ga = и3 — Идея алгоритма Рейдера переносится на случай, когда длина п преобразования равна степени нечетного простого числа. В этом случае, подобно тому, как нулевые компоненты временного и ча- стотного векторов обрабатывались отдельно, еще некоторое коли- чество компонент временного и частотного векторов должны обра- батываться отдельно. Это объясняется тем, что в кольце Z/(pm) не существует элемента порядка рт — 1. Теорема 5.1.8 (которая будет доказана в гл. 5) гарантирует, однако, что для простого нечетного р в этом кольце имеется элемент порядка рт~' (р — 1), и мы этим воспользуемся. При вычислении р7”—г v* = S jfe — о, ..., рт — 1, 1=0 воспользуемся структурой кольца г!{рт) для того, чтобы пере- упорядочить компоненты векторов. Эта структура описывается теоремой 5.1.8. Если q равно степени простого нечетного числа, то z!{pm) содержит циклическую-подгруппу порядка р"1-1 (р — 1). Из (рт х р"*)-матрицы W = [й)‘Ч просто выбросим все вызы- вающие трудности строки и столбцы так, чтобы к оставшейся матрице размерности рт~1 (р — 1) была применима идея Рейдера. Выброшенные строки и столбцы будем обрабатывать отдельно. Как мы увидим в следующем разделе, обработку даже этих вы- зывающих трудности столбцов и строк можно организовать как вычисление еще меньших циклических сверток. Таким образом, вычисление рт-точечного преобразования Фурье, хотя и слишком нерегулярного для того, чтобы быть вы- числяемым как единое целое, можно реализовать в виде всего нескольких разумных фрагментов. Случай, когда длина преобразования равна степени двойки, является несколько более сложным и требует еще одного уровня вычислений. Это объясняется тем, что множество индексов, взаимно про- стых с 2й — множество нечетных индексов — не образует цикли- ческой группы по умножению. Как доказывается в теореме 5.1.8, это множество образует группу, изоморфную группе Zs X Z2m-2- Идея организации процедуры вычислений состоит в следующем. Из (2т х 2т)-матрицы W = Icoife ] выбрасываются все строки и столбцы с четными индексами, так что остается матрица размер- ности 2"*-1. Все оставшиеся индексы являются нечетными и по умножению образуют группу, изоморфную группе Z? X Z2m-2- Этот изоморфизм используется для того, чтобы определить такую
1 Л. •*. ОЫСфИС <1Л1ирп»И11Я rtn'.nyviuv.v **Г' перестановку строк и столбцов матрицы, которая переводит ее в матрицу вида W |w, I Wjl |w7!w,p где Wx и W2 представляют собой (2'”~2х2'п-2)-матрицы, каждая из которых задает структуру циклической свертки. Точнее, пусть л = 3 и <з = 2т — 1. Тогда по модулю 2* имеем о2 = 1. На самом деле группа нечетных целых чисел отно- сительно умножения по модулю 2т порождается элементами л и о: каждый элемент группы может быть однозначно представлен в виде а1'лг, где I' = 0, 1 и Г«0, 2т~2. Следовательно, = ост/ п‘ °г_пГ~, и подходящей перестановкой строк и столб- цов матрица W приводится к виду Г[М"'-+"] [«>-'+-] 1 Lt®’"''*'] R'"+r'] ]’ где Г и г" соответственно индексы строк и столбцов в каждой из подматриц. Каждая из четырех подматриц задает циклическую свертку длины 2т~2. После выполнения перестановки рассматриваемое вычисление приводится к виду матричной 2-точечной циклической свертки Г V1 [v3 Wi W2 WiJlvaJ один из способов вычисления которой дается формулой Этим задача сводится к вычислению двух комплексных цикличе- ских сверток длины 2т~2; мы увидим, что вычисления можно организовать несколько лучше. В качестве примера рассмотрим две 4-точечные циклические свертки, образующие сердцевину 16-точечного преобразования Фурье. Пусть 15 Vh = Е “‘Ч, k = 0.........15, /-0
где со18 = 1. Рассмотрим матрицу, образуемую в результате вы- брасывания всех четных индексов в рассматриваемом диапазоне значений i и k. Получим Чтобы найти нужную перестановку, выпишем индексы в виде чисел 151'-Зг для Г== О, 1 и Г— 0, 1, 2, 3. Степени тройки по модулю 16 имеют вид 3" = 1, з1 = 3, З2 = 9, 3s = И, 3» = 1, З-1 = 11, 3"а = 9, 3-’ = з, и соответственно 15-3° = 15, 15-31 = 13, 15-3» = 7, 15-3» = 5, 15-3» = 15, 15-3-* = 5, 15-3-» = 7, 15-3-» = 13. Выполним перестановку входных индексов, записывая их в по- рядке 15_/' •3“/" (mod 16), и перестановку выходных индексов, записывая их в порядке 15r-3r (mod 16). Тогда Чтобы показать четыре образовавшиеся при этом циклические свертки, матрица разбита на блоки. Если преобразование Фурье вычисляется в поле комплексных чисел, то блоки связаны соот-
ношением комплексной сопряженности. Чтобы наглядно выявить эту связь, перепишем матричное уравнение в виде Отметим, что четыре верхние строки комплексно сопряжены с четырьмя нижними строками; выполнять надо только вычисле- ния, связанные с первыми четырьмя строками. Следовательно, дальнейшие вычисления можно организовать в виде пары цикли- ческих сверток 14? 4- V'9x2 + V'„x + V,' = = (со11*3 4- (ов№ 4- (оэх 4- со) (vux3 4- OgX2 4- 4- yi) + 4- (ш“пх3 4- crt2 + со~3х 4- ОТ1) (суг» 4- и7х2 4- р13х + о1В) (mod*4 — 1). Для комплексного поля можно использовать и альтернативный способ, основанный на выписанной выше 2-точечной циклической свертке блоков: Vt| = Г1 iKhWi+WO vd ~ 1 -1 О 0 If1 М i(Wt - W2)J [1. -1J [v2J где при 9 = 2л,/16
Заметим, что теперь мы получили две циклические свертки, одна из которых чисто вещественная, а другая — чисто мнимая. Для случая вещественного входного вектора необходимо вычис- лить только две вещественные свертки, s (х) — [cos ЗОх3 4- cos 90х2 4- cos 110х 4- cos 9 J d (x) (mod x* — 1) и .s' (x) — [sin ЗЭх3 4- sin 90x2 + sin 110x 4- sin 0] d' (x) (mod x4 — 1). Используя ’китайскую теорему об остатках для разложения х4 — 1 = (х2 — 1) (х2 4- 1), видим, что некоторые вычисления излишни, так как cos ЗЭх3 4- cos ЭОх2 4- cos II Ох 4- cos 0 = 0 (mod х2 — 1) и sin ЗОх3 + sin 96х2 4- sin 110х + sin 0 = 0 (mod х8 — 1). Следовательно, умножения, связанные с модулем ха — 1, не нужны. Вычеты по модулю х2 4- 1 требуют трех умножений каж- дый. Следовательно, для вычисления двух циклических сверток необходимо в общем только шесть умножений. Исходное 16-то- чечное преобразование требует, таким образом, всего 10 нетри- виальных умножений. 4.6. Алгоритм Винограда для быстрого преобразования Фурье малой длины Этот БПФ-алгоритм Винограда предназначен для эффектив- ного вычисления дискретного преобразования Фурье малой длины. В основу алгоритма заложены две идеи: рассмотренный в предыдущем разделе алгоритм Рейдера для простых длин и рассмотренный в разд. 3.4 алгоритм Винограда для свертки. Рас- смотрению подлежат три случая: (1) длина равна простому числу; (2) длина равна степени простого нечетного числа и (3) длина равна степени двойки. Наиболее популярными длинами являются 2, 3, 4, 5, 7, 8, 9 и 16. Характеристики БПФ-алгоритма Винограда для этих длин приведены на рис. 4.14. (Сами алгоритмы выписаны в приложении В.) Число умножений на этом рисунке упоми- нается дважды: один раз приведено число умножений без учета тривиальных умножений, а другой раз — полное число умноже- ний, включающее умножения на (±1) и (±/). Если БПФ-алго- ритм малой длины используется в качестве блока для гнездового алгоритма, который будет изложен в гл. 8, то умножения на (±1) и (±/) в малом алгоритме приводят к нетривиальным умно-
Длина Число вещественных умножений • Число нетривиаль- ных вещественных сложений 2 2 0 2 3 3 2 6 4 4 0 8 5 6 5 17 7 9 8 36 8 8 2 26 9 11 10 44 11 21 20 84 13 21 20 94 16 18 10 74 17 36 35 157 19 39 38 186 * Включая умножения на ±1 или ±/. Рис. 4.14. Характеристики БПФ-алгоритмов Винограда малой длины. жениям (и сложениям) в большем алгоритме. Поэтому мы выпи- сываем как полное число умножений, так и число умножений без учета тривиальных. В характеристики алгоритмов, приведенные на рис. 4.14, включены также некоторые тривиальные сложения. Сюда отно- сятся чисто вещественные и чисто мнимые сложения, которые согласно принятым определениям не являются сложениями. Но при подсчетах сложности мы не будем различать тривиальные и нетривиальные сложения. Если заменить вещественный вектор комплексным, то все сложения становятся нетривиальными ком- плексными сложениями. Длина преобразования равна простому числу. Первый шаг состоит в замене преобразования Фурье сверткой. Если п мало, то воспользуемся алгоритмом Рейдера для замены преобразования Фурье сверткой, которую вычислим затем, используя алгоритм Винограда для сверток малой длины. Длина п выбирается не слишком большой, так как необходимые уравнения выписываются вручную. Переход от преобразования Фурье к свертке с помощью алгоритма Рейдера осуществляется только перестановкой ин- дексов; этот шаг не содержит ни умножений, ни сложений. Струк- тура алгоритма свертки такова, что сначала выполняется некото- рое множество сложений, затем некоторое множество умножений, а затем опять некоторое множество сложений. Рассмотрим 5-точечный двоичный БПФ-алгоритм Винограда, вычисляющий 4 Vh = S (j)lkvit k — 0, .... 4, i=0
4.о. алгоритм ьинограда для быстрого преобразования Фурье 159 где to = е~}2л№. Сначала воспользуемся описанным в разд. 4.5 алгоритмом Рейдера, переводящим рассматриваемое преобразо- вание Фурье в циклическую свертку s (х) — g (х) d (х) (mod х1 — 1), где многочлен Рейдера g (Х) = (Шз _ 1) дЗ + (о? _ 1) ха + (<да — 1) х + (со — 1) имеет фиксированные коэффициенты. Вход и выход фильтра опи- сываются соответственно многочленами d (х) — щх3 + + v3x + ох, s (х) = (V8 - Vo) х9 + (V4 - Vo) x* + (V2 - Vo) x + (Vx- Ko)- Коэффициенты многочлена d (x) получаются перестановкой коэф- фициентов входного многочлена и (х); коэффициенты многочлена V (х) на выходе алгоритма (с точностью до слагаемого Уо) полу- чаются обратной перестановкой коэффициентов многочлена s (х) на выходе фильтра. 5-точе<ный БПФ-алгоритм Винограда получается, если про- изведение g (х) d (х) вычислять с помощью алгоритма Винограда для малой свертки. Воспользуемся приведенным на рис. 3.14 и содержащим пять умножений алгоритмом 4-точечной цикличе- ской Свертки. Его можно приспособить для вычисления преобразо- вания Фурье, введя в матрицу свертки операции перестановок путем соответствующей перестановки ее строк и столбцов. Так как коэффициенты многочлена g(x) фиксированы, то вычисление произведения вектора g на его матрицу также можно выполнить заранее. Если в алгоритме 4-точечной свертки произвести все эти изменения и внести в него члены и Уо, то и получится 5-точеч- ный БПФ-алгоритм Винограда, стандартная матричная форма которого показана на рис. 4.15. Эта стандартная форма окажется очень полезной при построении в гл. 8 гнездовых методов. Заме- тим, что в алгоритме на рис. 4.15 матрицы предсложений и пост- сложений не являются квадратными. 5-точечный входной вектор дополняется до 6-точечного вектора, к компонентам которого применяется умножение. Верхние две строки связующей матрицы не содержат умножений, так как связывают и0 и Уо. Другие пять строк соответствуют алгоритму вычисления 4-точечной цикличе- ской свертки. Одна из констант умножения оказалась равной единице, так что на самом деле алгоритм содержит только пять нетривиальных умножений и одно тривиальное. На рис. 4.15 видна также и другая важная деталь алгоритма. Хотя нет никаких причин ожидать этого, все диагональные эле- менты оказались чисто вещественными или чисто мнимыми х). При желании множитель / можно перенести из диагональной матрицы 0 матрицу постсложений. Тогда элементы диагональной матрицы окажутся чисто вещественными.
И, - I «О V = Wv = CBAv Bi Bl B3 B4 B5 2 (cos 9 + cos 20) - I 2 (cos 0 - cos 20) j sin 0 j (- sin 0 + sin 29) j (sin 9 + sin 29) и 0 = 2т/5 Рис. 4.15. 5-точечный БПФ-алгор итм В иногр ада. Это существенно потому, что означает, что в случае вещественного входного вектора каждому умножению отвечает одно веществен- ное умножение, а в случае комплексного входного вектора каж- дому умножению отвечают два вещественных умножения. Это яв- ление оказывается довольно общим. Если р нечетно, то можно записать хр-1 - 1 = (x(p-i)/2 _ 1) (х(р-1)/2 + Делители многочлена хр~* — 1 делят один из множителей, стоя- щих справа в этом равенстве. Следовательно, когда алгоритм Ви- нограда для вычисления свертки разбивается на подзадачи, соот- ветствующие делителям многочлена — 1, то ситуация опи- сывается следующей теоремой. Теорема 4.6.1. Пусть g(x)—многочлен Рейдера; тогда для каждого нечетного р коэффициенты многочлена g (х) (mod х(р__,)/2 — — 1) являются вещественными, а коэффициенты многочлена g (х) (mod %(р-о/2 j) являются мнимыми.
4.6. Алгоритм Винограда для быстрого преобразования Фурье 161 Доказательство. Так как элемент л примитивен, то пр~1 = 1 и = —1. Так как g (*) = Е (“я‘ — 0*‘, fe=0 то коэффициенты многочлена g (х) (mod ± 1) даются ра- венствами Л=(<»**- 1) Т(ш«‘+1). Утверждение теоремы вытекает теперь из того, что л(₽-1>/2 = = —1.' □ Мы показали, как строится БПФ-алгоритм Винограда малой длины для случая, когда длина преобразования п является про- стым числом. БПФ-алгоритм Винограда малой длины может быть построен и в случае, когда длина п преобразования равна степени простого числа. Эта конструкция также основана на аналогичной алгоритму Рейгера идее перехода от преобразования Фурье длины рт, р простое, к свертке. Однако множество целых чисел по модулю рт не образует поля, так что в этом случае отсутствует элемент л порядка рт — 1. Случаи р = 2 и нечетного простого р решаются двумя различ- ными методами. Сначала рассмотрим случай нечетного простого р. Длина преобразования равна степени простого нечетного числа. Конструкция несколько усложняется. Сначала для выде- ления циклической группы порядка рТ~1 (р — 1) из множества {1, 2, рг— 1) всех индексов удаляются целые числа, крат- ные р. Эта циклическая группа приводит к свертке длины рг~х (р — 1), которая образует ядро алгоритма вычисления пре- образования Фурье. "Как и прежде, она вычисляется быстрым алго- ритмом свертки. Компоненты свертки нужно переставить по правилу, обратному перестановке входных компонент свертки, и подправить членами, учитывающими выброшенные рг~х строк и столбцов. Как мы увидим, эти поправочные члены можно вы- числить алгоритмами еще меньших сверток, так как они пред- ставимы в виде алгоритмов преобразования Фурье малой длины. Например, при N = 9 — З2 удаление номеров 0, 3 и 6 из мно- жества всех индексов приводит к подмножеству {1, 2, 4, 5, 7, 8}, образующему относительно умножения по модулю 9 циклическую группу, изоморфную аддитивной группе z8 целых чисел {0, 1, 2, 3, 4, 5} относительно сложения по модулю 6. Мультипликатив- ная группа порождается степенями 2 по модулю 9, так как эти степени равны соответственно Ц, 2, 4, 8, 7, 5}. Таким образом, 9-точечное преобразование Фурье содержит шесть строк, которые можно изолировать, переставить и вычислить в виде свертки. Нетрудно предвидеть, что остальные строки и столбцы (с индек- сами, равными 0, 3 и 6) имеют структуру, близкую к 3-точечному 6 Блейхут Р.
162 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье / преобразованию Фурье, так что некоторые из поправочных членов могут быть выражены в виде свертки малой длины. ' Построение 9-точечного БПФ-алгоритма Винограда проводится следующим образом. Выпишем матричное уравнение Посмотрев на эту матрицу, можно убедиться, что строки и столбцы с номерами 0, 3 и 6 являются для нас новыми, так как содержат повторяющиеся элементы. Переставим строки и столбцы матрицы так, чтобы эти строки и столбцы оказались в новой матрице пер- выми, остальные строки расположились в порядке степеней двойки по модулю 9, т. е. в порядке 1, 2, 4, 8, 7, 5, а столбцы — в порядке степеней 2-1 по модулю 9, т. е. в порядке 1, 5, 7, 8, 4, 2. Тогда вычисление преобразуется к виду Пунктирные разбиения, сделанные в матрице, показывают сформи- ровавшиеся циклические свертки: одну 6-точечную циклическую свертку и шесть 2-точечных циклических сверток. Те 2-точечные свертки, которые расположены во второй и третьей строках ма- трицы, содержат повторяющиеся вычисления, что позволяет переписать входящие в эти две строки вычисления в виде
4.6. Алгоритм Винограда для быстрого преобразования Фурье 163 Таким образом, подходящим способом выполненные перестановки и разбиения входных данных и матрицы преобразования позво- лили представить рассматриваемое преобразование Фурье в виде одной 6-точечной циклической свертки и двух 2-точечных цикли- ческих сверток. Можно было бы ожидать, что так организованное вычисление потребует 12 комплексных умножений. .Однако, как показывает. следующая теорема, происходят две вещи: 1. Все умножения являются чисто вещественными или чисто мнимыми, так что 12 комплексных умножений превращаются в 12 вещественных умножений. 2. Число необходимых умножений уменьшается до 10, так как два коэффициента оказываются равными нулю. На самом деле мы выпишем алгоритм с 11 умножениями. Одно умножение на единицу необходимо добавить для того, чтобы строку с номером нуль записать в алгоритме в таком же виде, как и остальные строки. Теорема 4.6.2. Пусть т > 1 целое, ар — простое нечетное число. Пусть b = (р — 1) р"1-1. Пусть g (х) — обобщенный мно- гочлен Рейдера, g (х) = £ и)я*хя, где а>—корень из единицы сте- J?=0 пени рт и л — целое число порядка Ь относительно умножения по модулю рт. Тогда: (i) Коэффициенты многочлена g (х) (mod х6/2 — 1) являются вещественными числами: (ii) Коэффициенты многочлена g (х) (mod х6/2 + 1) являются мнимыми числами. (Ш) Коэффициенты многочлена g (х) (mod хЬ!р — 1) равны нулю. Доказательство. Доказательство первых двух утверждений теоремы аналогично доказательству теоремы 4.6.1. Так как поря- док числа л равен b, а Ъ четно, то лй = 1 и лй/2 = —1. Тогда коэффициенты многочлена g (х) (mod х6/2 ± 1) равны gk = сол Т =р й)Л^+ь/2) так Как л6/2 = —1, то отсюда сразу вытекают пер- вые два утверждения теоремы. Для доказательства утверждения (iii) рассмотрим многочлен ь-i g’(x} = g(x) (mod хЪ!р — 1) — (mod хь/р — 1). Коэффициент go равен сумме тех коэффициентов многочлена g (х), индекс k которых кратен числу bfp. Таких членов имеется р штукх и , g'0= 6*
164 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье В общем случае коэффициент g'r дается равенством , /г = s a>”r+w', г-0.......(&/р)— 1. 1=0 Требуется доказать, что g’r равен нулю для всех таких г. Пере- пишем выражение для gr в виде i—0 Так как сояГ опять является корнем степени рт из единицы, то утверждение достаточно доказать только для г, равного нулю, р—1 т. е. для go = Е ©а , где а — лЬ!р представляет собой элемент ;=о порядка р. Последнее равенство можно переписать в виде So = © Е )Л» й=0 где ©' является корнем степени р из единицы. Следовательно, go — 0, и доказательство теоремы закончено. □ Таким образом, мы умеем строить БПФ-алгоритм. Винограда малых длин, равных степени нечетного простого числа. Матрица преобразования Фурье размера рт X рт разбивается на (р'п — рт~^-точечную циклическую свертку и рт~1 + 1 (р — 1)- точечных циклических сверток. Согласно теореме 4.6.2, все эти свертки вычисляются с помощью алгоритма Винограда для цикли- ‘ческих сверток, содержащего только чисто вещественные и чисто мнимые умножения. Длина преобразования равна степени двойки. Преобразование Фурье, длина которого равна степени двойки, приходится рас- сматривать отдельно, так как целые числа, не превосходящие 2'п, взаимно простые с 2, не образуют относительно операции умноже- ния по модулю 2т циклической группы (за исключением случаев т = 1 и т = 2). Это множество чисел образует группу, изоморф- ную группе Z2 X Z2m-2- По этой причине конструкция БПФ- алгоритма Винограда длины 2т. содержит на один шаг больше. Прежде всего, отберем 2т~1 строк и столбцов матрицы с нечет- ными индексами, подобно тому как это было сделано в разд. 4.5. Это подмножество элементов матрицы будет переупорядочено теперь не в одну, а в четыре циклические свертки. Строки и столбцы с четными индексами можно представить в виде преобразования Фурье длины 2т~1 несколькими способами.. Эта часть вычислений представляет собой 2/п-1-точечное преобра-. зование Фурье.
4.6. Алгоритм Винограда для быстрого преобразования Фурье 165 Разбиение в некотором смысле аналогично одному шагу алго- ритма Кули—Тьюки по основанию 2. Предположим, что мы уже умеем строить 2т—’-точечное быстрое преобразование Фурье. п— 1 Для заданного Vk = S k = О, п — 1, компоненты 1=0 с четными значениями индекса k можно записать в виде п/2—1 V2k' = X' (&i + fi'+n/2) к j k = 0, ... , П/2 — 1. Это 2т~1-точечное преобразование Фурье может быть вычислено уже известным алгоритмом. Компоненты с нечетными значениями индекса k можно записать в виде п/2—1 п/2—1 V2S-+I= S»a,Z|a'+14 S o2(.+i<o<2''+')|2‘'+1). i'=0 i'—Q Так как со4 является корнем из единицы степени 2т-2, то неболь- шие вычисления позволяют первую сумму переписать в виде преобразования Фурье длины 2"t-2. Таким образом, п/4—1 V2k’+i= (w2f V21' — (о21 Огг+п/*) k + г=о п/2—1 + S ^'+1<о(2Г+1Н2й'+1,1 k=Q, ..., п/2—1, г=о где первая сумма подлежит вычислению только для первых п/4 зна- чений индекса k', k =~- 0, ..., п/4 — 1, так как потом эти значения суммы повторяются. Если входная последовательность данных является вещественной, то эта часть вычислений состоит из (п/2) — 6 вещественных умножений и (л./4)-точечного преобразо- вания Фурье, а если входная последовательность данных является комплексной, то к (п/4)-точечному преобразованию Фурье добав- ляется (3/4) п — 8 вещественных умножений. Вторая сумма в уравнениях для Vsv+i может быть вычислена рассмотренным в предыдущем .разделе обобщенным алгоритмом Рейдера. Он сводится к вычислению двух циклических сверток длины 2т~2. Следующая теорема показывает, что если эти цикли- ческие свертки вычисляются на основании китайской теоремы об остатках, то часть умножений является умножением на нуль и может быть выброшена. Теорема 4.6.3. Пусть т > 2 есть целое число и g (х, у) — обобщенный двумерный многочлен Рейдера вида g(^)="s i=0 r=o еде io является корнем степени 2п из единицы. Тогда
166 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье (i) Коэффициенты многочлена g (х, у) (mod у — 1) являются вещественными числами. (п) Коэффициенты Многочлена g (х, у) (mod у + 1) являются мнимыми числами. (iii) Коэффициенты многочлена g (х, у) (mod х"'/2 — 1) равны нулю. Доказательство аналогично доказательству теоремы 4.6.2. □ Согласно первой части теоремы циклическая свертка по мо- дулю xrt/4 — 1 представляет собой две вещественные циклические свертки (точнее, одну чисто мнимую и одну чисто вещественную). Вторая часть теоремы утверждает, что вычисление циклической свертки сводится только к вычислениям, связанным с модулем хл/8 так Kaic остальные вычеты обращаются в нуль. В силу неприводимости многочлена хл/8 + 1 на эти вычисления требуется 2 (п/8) — вещественных умножений. Теперь мы получили разбиение преобразования Фурье на следующие фрагменты: (1) 2т~’-точечное преобразование Фурье; (2) 2т-2*точечное преобразование Фурье, которому предшествует 2т~2 — 1 комплексных умножений; (3) два произведения многочле- нов по модулю неприводимого многочлена хп/8 + 1: 8-точечное преобразование Фурье разбивается на две части, 4-точечное преобразование Фурье и Вторую часть сначала выпишем в следующем виде:
Задачи 167 Теперь преобразуем эти равенства несколько иначе, чем в общем случае, а именно, воспользуемся условием со4 = —1 и перепишем уравнения в виде Тогда Циклическую свертку можно вычислить по правилу Описанный 8-точечный БПФ-алгоритм Винограда содержит всего два нетривиальных умножения; кроме того, имеется шесть тривиальных умножений. Если длина преобразования равна большой степени двух, то выписывать все необходимые для вычисления по БПФ-алго- ритму Винограда уравнения становится скучно. Лучше предста- вить этот алгоритм в рекуррентном виде. Мы отложим такое пред- ставление до гл. 10. В разд. 10.4 будет описан эффективный БПФ- алгоритм по основанию два, построенный на идее Винограда, выписанной в рекуррентной форме. Задачи 4.1. Пусть задано устройство вычисления n-точечного комплексного преобра- зования Фурье; описать, как это устройство можно использовать для одновременного вычисления двух вещественных n-точечных преобразова- ний Фурье. 4.2. Пусть задано устройство вычисления n-точечного преобразования Фурье; описать, как это устройство можно использовать для вычисления л-точеч- ного обратного преобразования Фурье. 4.3. Приведите блок-схему устройства вычисления 5-точечного преобразования Фурье, основанного на чирн-алгоритме Блюстейна. 4.4. а. Доказать, что 2 является примитивным элементом поля GF (II). б. Используя алгоритм Рейдера, записать ll-точечное преобразование 10 Фурье над полем комплексных чисел Уд = J] ®ikVi в виде свертки 1=0
168 Гл. 4. Быстрые алгоритмы дискретного преобразования Фурье s (х) — g (х) d (х), выписывая многочлены d (х), s (х) и g (х) через компо- ненты векторов v и V и элемент со. 4.5. Показать, что использование для вычисления линейной свертки двух последовательностей длины п/2 алгоритма Кука — Тоома с п точками 0/ = приводит к тому же самому алгоритму, что и использование преобразования Фурье и теоремы о свертке. 4.6. Указать две различные причины того, что сочетание алгоритма Рейдера для простых чисел с алгоритмом Винограда вычисления свертки приводит к лучшему БПФ-алгоритму, чем сочетание алгоритма Блюстейна с алго- ритмом Винограда вычисления свертки. Можете ли Вы указать третью причину? 4.7. Найти простые целые числа пип', такие что п < п', но п-точечный БПФ-алгоритм Винограда содержит больше умножений, чем п'-точечный БПФ-алгоритм Винограда. 4.8. Сколько умножений содержит 25-точечный БПФ-алгоритм Винограда, если все составляющие свертки оптимальны? Как это соотносится с про- цедурой, основанной на алгоритме Кули — Тьюки, сочетающем два 5-то- чечных БПФ-алгоритма Винограда? 4.9. Показать, что связывая вход с выходом, любой БПФ-алгоритм можно использовать для вычисления обратного преобразования Фурье. 4.10. В алгоритме Гуда — Томаса вход и выход переиндексируются по-разному. Показать, что можно поменять местами схемы индексации входа и выхода без принципиальных изменений алгоритма. 4.11. Даны вычисляемые непосредственно 2-точечное и 5-точечное преобра- зования Фурье (с 4 и 25 умножениями соответственно). а. Найти число умножений, необходимых для вычисления 100-точечного преобразования Фурье по каждой из нижеследующих схем: 100 100 100 2 2 Использовать всюду, где можно, алгоритм Гуда — Томаса; в других слу- чаях использовать алгоритм Кули — Тьюки. Найти число умножений, включая тривиальные (на ±1, ±/). б. Найти число умножений без учета тривиальных умножений на ±1, ±/. в. Теперь предположим, что имеется подпрограмма вычисления 2-точеч- ного преобразования Фурье без нетривиальных умножений и подпрограмма 5-точечного преобразования Фурье с пятью (нетривиальными) умноже- ниями. Повторить п. б) задачи. 4.12. Из того, что возникаюшие в алгоритме Рейдера свертки вычисляются оптимальными алгоритмами, еще не вытекает оптимальность БПФ-алго- ритма Винограда. Это следует и из того, что коэффициенты фильтра Рей- дера не произвольные числа, а степени элемента (о, которые, вообще говоря, могут оказаться зависимыми, и эта зависимость может быть использована для уменьшения числа умножений. А именно, мы видели, что комплексные умножения сводятся к вещественным и иногда коэффициенты оказываются равными нулю. Доказать, что 5-точечный БПФ-алгоритм Винограда опти- мален по критерию числа умножений. 4.13. 16-точечный БПФ-алгоритм Винограда содержит 18 умножений, 8 из кото- рых тривиальны, и 74 сложения.
а. Построить 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 г. Наше изложение не отражает всей значи- мости оригинальной работы; развитие ее результатов включено в другие темы. Мы затабулнровали те БПФ-модули для малых длин, которые представляются нам наиболее полезными. БПФ-модули для больших длин были построены Джон- соном и Баррасом [12] (1981). Другие методы вычисления преобразования Фурье изучались Герцелем [13] (1968) и Сервейтом [14] (1978).
ТЕОРИЯ ЧИСЕЛ И АЛГЕБРАИЧЕСКАЯ теория полей В предыдущей главе при построении БПФ-алгоритмов мы уже пользовались некоторыми результатами теории чисел, которые, однако, доказаны не были. В настоящей главе, представляющей собой математическую интерлюдию, доказываются все использо- ванные ранее результаты, а также результаты, которые понадо- бятся в дальнейшем. Мы также вернемся к рассмотрению пол^й, поскольку нам понадобится более глубокое развитие идеи расширения полей. Алгебраическая структура поля будет играть важную роль в сле- дующей главе при построении теоретико-числовых преобразова- ний, а также в гл. 7 и 8 при построении многомерных алгоритмов свертки и преобразования Фурье. 5.1. Элементарная теория чисел В кольце целых чисел zq по модулю q некоторые элементы взаимно просты с q, а некоторые делят q. Нам важно знать, сколько именно элементов относится к каждому типу. Определение 5.1.1 (Эйлер). Функция Эйлера, обозначаемая ф (<?), для q > 1 определяется как число ненулевых элементов в Zq, взаимно простых с q\ ф (q) = 1 для q = 1. Если q — р простое, то все ненулевые элементы кольца zq взаимно просты с q, так что ф (р) = р — 1. Если q равно степени простого числа, q — рт, то не взаимно простыми с q являются только те элементы, которые кратны р. Следовательно, ф (рт) = = рт~1 (р — 1). Все остальные значения функции Эйлера можно получить, используя следующую теорему. Теорема 5.1.2. Если НОД (q’, q") = 1, то ф {q'q") = ф (?') ф (?"). Доказательство. Занумеруем элементы кольца Zqur индек- сом i для i = 0, ..., q'q" — 1, а затем выпишем их в виде двумерной таблицы, нумеруя каждый элемент кольца Zq'q* парой индексов по правилу i' = i (mod q'), i” = i (mod q"),
так что i' и i* являются соответственно элементами колец Zq' и Z<f. Так как НОД (д', q”) = 1, то отображение индекса i в пару индексов (Г, 1") является взаимно однозначным, и для некоторых Q' и Q” выполняются равенства i — я'О! + i', i = q^Q" + i"- Предположим, что i' не имеет общих делителей с q', а Г не имеет общих делителей с q". Тогда i не имеет общих делителей ни с д', ни с q", и, следовательно, общих делителей с q'q". Следовательно, ф (<?'?’) > ф (?') ф (?')• Обратно, если i не имеет общих делителей с q'q", то i не имеет общих делителей ни с д', ни с д". Следовательно, Г не имеет общих делителей с д', а I” не имеет общих делителей с д". Таким образом, 9 W) -С 9 (/) 9 (?*)» и теорема доказана. □ Следствие 5.1.3. Если разложение числа q на простые множи- тели дается равенством q = pfpz* ... prr, то ф (?) = • Р,’ ' (01 ~ 1)(₽2- 1) ••• <Рг 1). □ Часто оказывается полезным другое важное свойство функции Эйлера. Предположим, что d делит g и обозначим через f (g) не- которую функцию от д. Под символом Yif GO будем понимать d t q сумму значений f (d) для всех d, делящих g. Очевидно, что 2ф(^) = 2<|)(-г)> d 1 q d\q так как (g/d) делит g всякий раз, когда d делит д. Более удивитель- ной является следующая теорема. Теорема 5.1.4. Функция Эйлера удовлетворяет равенству Е ф W = ?• Доказательство. Для каждого d, делящего д, рассмотрим в zq множество {I | НОД (i, д) = d}. Каждый элемент кольца Zq принадлежит точно одному такому множеству. Следовательно, суммируя числа элементов во всех этих множествах, мы должны получить д. Теперь рассмотрим эквивалентное определение этого же мно- жества, {Г|НОД(-^-, -j-) — 1|. Это множество содержит
<j. лсирип snvwi n лшеираиножаи 1еирия нолей точно ф (q/d) элементов. Суммируя по всем подмножествам, по- лучаем d) q откуда вытекает утверждение теоремы. □ Элементы кольца zq относительно сложения образуют группу. Относительно умножения ненулевые элементы кольца zq также могут образовывать группу, хотя и не обязательно. Однако в zg всегда можно указать подмножество, образующее относительно умножения в кольце группу, и, следовательно, являющееся под- группой группы ненулевых элементов кольца Zq в том случае, когда ненулевые элементы также образуют подгруппу относи- тельно умножения. Пусть а — произвольный элемент кольца zg. Порождаемая элементом а циклическая группа равна множеству (а, а2, а3, ... ..., ат~х, 1}. Порядком элемента а называется число элементов в ци- клической подгруппе, порождаемой элементом а. Пусть <}q обо- значает множество положительных целых чисел, меньших q и взаимно простых с q. Относительно умножения по модулю q множество Gq образует группу с ф (q) элементами. Следующая теорема дает информацию о порядке элементов нз группы Gq. Теорема 5.1.5 (теорема Эйлера). Если НОД (а, <7) = 1, то ая>(9) = 1 (mod?), так что порядок элемента а делит Ф (<?). Доказательство. Утверждение вытекает из теоремы 2.1.5, так как группа Gg содержит ф (q) элементов. □ Следствие 5.1.6 (теорема Ферма). Если р простое, то для.- каждого а выполняется равенство = 1 (mod р), или, экви- валентно, ар = a (mod р). Доказательство является тривиальным следствием теоремы J Эйлера, так как ф (р) = р — 1 для любого простого р. □ Теорема Ферма является также простым следствием следующей теоремы. J Теорема 5.1.7. Если р просто, то относительно умножения , по модулю р ненулевые элементы кольца Z/(p) образуют цикличе- скую группу, порождаемую примитивным элементом л. ; Доказательство сразу вытекает из теоремы 5.6.2, которую мы,? оставляем на конец главы. □ 4 Согласно теореме Эйлера, если а и q взаимно просты, то по- ] рядок элемента а делит ф {q}, но не обязательно равен ф {q). Сле- .* дующая теорема дает более подробную информацию об этом для j
5.1. Элементарная теория чисел 173 случая q, равного степени простого числа. Это весьма сложная теорема теории чисел, и ее доказательство занимает всю остав- шуюся часть настоящего раздела. Оно опирается на еще не дока- занную теорему 5.1.7, что, однако, не создает порочного круга, так как в доказательстве теоремы 5.1.7 не используется тео- рема 5.1.8. Прежде чем переходить к этой теореме, приведем два примера. Пусть q = 9; тогда С9 = {1, 2, 4, 5, 7, 8|. Легко проверить, что порядок элемента 2 равен 6, так что его можно использовать в ка- честве образующей циклической группы G9. Пусть q = 16. Тогда {1, 3, 5, 7, 9, 11, 13, 15}. Пере- бирая все элементы, можно убедиться, что наибольший порядок всех элементов равен 4. (Таким элементом порядка 4 является элемент 3.) Следовательно, группа Gie не является циклической. Так как в следующей теореме q равно степени простого числа р, q - рт, то <р (р'п) — рт — рт~1 = рт~1 (р — 1). Теорема 5.1.8. Пусть число р простое; тогда: (i) Если р нечетно, то группа Qpm является циклической и изоморфной группе Zpm~i (₽-[>• (ii) Если р = 2 и рт 8, то группа Gpm не является цикли- ческой и-изоморфна группе z.2 X Z2m—2- (iii) Если рт = 4, то группа Gpm изоморфна группе za. Доказательство. Утверждение п. (iii) теоремы тривиально, так как существует только одна группа с двумя элементами. Дока- зательство остальных утверждений теоремы разбивается на пять шагов. Шаг 1 и шаг 2 содержат доказательство п. (i). На шаге 1 доказывается, что для нечетного р найдется элемент порядка рт~1', на шаге 2 доказывается, что для нечетного р найдется элемент порядка р — 1. Так как рт~1 и (р — 1) взаимно просты, то произ- ведение этих двух элементов является элементом порядка рт-' (р — 1)» что и доказывает п. (i) теоремы. Доказательство п. (ii) теоремы дается шагами 3 и 4. На шаге 3 доказывается, что если р = 2, то порядок каждого элемента делит 2т~2. На шаге 4 доказывается, что найдется элемент по- рядка 2т~2. Начнем с доказательства на шаге 0 одного полезного соот- ношения. Шаг 0. Для всех целых чисел а и b и произвольной степени рт простого числа р выполняется сравнение (a -f- bpf* 1 “ арт 1 (mod рт). Доказательство этого шага проведем индукцией по т. Для т — 1 утверждение проверяется непосредственной проверкой.
Предположим, что для некоторого т справедливо (а 4- Ьр}рт 1 = арт ' (modpm). Тогда для некоторого целого k (а+М^'1 = apm~l +kpm. Возведем это выражение в р-ю степень: (, I L. \Рт^\Р ( Pm~l I L «V ((а + М J =1“ + kP ) • (а + Ьр)рП = арт + ркрта,р-'-'""' ' +2(9 к'р‘та,р-‘' рт~1 . Второй член справа, так же как и все члены суммы, делится на pm+J; следовательно, (а -|- Ьр)рП = арт (modpm+1), так что утверждение справедливо при переходе от т к т + 1, что и завершает индукцию. Шаг 1. Положим в утверждении шага 0 числа а и Ь равными 1. Тогда (1 + Р)""1”1 = 1 (mod/1), так что порядок элемента (1 + р) делит р™—1. Покажем теперь, что при нечетном р порядок этого элемента в точности равен рт~х t для чего докажем, что этот порядок не делит числа р^2. А именно, для завершения доказательства шага 1 докажем, что если т > 1, то (l+pf~2 = 1 + /-1 (mod/1). Непосредственно проверяется справедливость утверждения для т. == 2. Предположим, что оно выполняется для некоторого т. Тогда для некоторого k выполняется равенство (i+pr“2 = i+ /-+*/. Следовательно, (1 + р)рт~1 = 1+р (/~‘ + А/) + 2(<) + kPnY + (=2 + (/-*+ kpmy. с (р\ (р\ ( р \ Если р нечетно, то каждое из чисел I I, IJ.... I I де- лится на р. Каждый член в сумме делится по меньшей мере на р2 И1 следовательно, делится на рт+1 при m > 2. По-
м.1. теория чисел 175 следний член в правой части равенства делится на p₽(zn—и, следовательно, при р 3 и щ > 2 делится на рт+}. (Заметим, что доказательство не проходит при р = 2.) Следовательно, по- рядок элемента (1 4- р) (mod рт) не делит р'п~'2. Это завершает до- казательство того, что порядок элемента (14-/0 равен рт~х. Шаг 2. Так как группа Gpm содержит рт~] (р — 1) элементов, то порядок каждого ее элемента делит рт~} (р — 1), Чтобы найти элемент группы порядка (р — 1) (mod рт), выберем л равным примитивному элементу кольца Zl(p). Тогда порядок л равен (р — 1) (mod р). Покажем, что а = лрГП~1 -представляет собой искомый элемент порядка (р — 1) (mod рт). Так как лрГЛ-1 = = 1, то порядок элемента а должен делить р — 1; поэтому надо только показать, что порядок элемента а не меньше, чем р — 1. Так как л примитивен'в кольце Zj(p), то р — 1 степеней nf для I = 0, р — 2, могут быть записаны в виде целых чисел = а, 4- Ь|Р, где at пробегает все различные ненулевые целые числа, не превосходящие р — 1. Следовательно, используя шаг 0, имеем (л1)'’"';1 = (а, + Ь^-' = аЧт-' (mod рт), или ct = ар!п 1 (mod pm), где at пробегает все различные ненулевые целые числа, не превос- ходящие р — 1. Следовательно, если мы докажем, что для любых двух целых чисел а и Ь, не превосходящих р — 1, выполняется соотношение Z”"1 * (modp”1), то отсюда следует, что порядок элемента а больше, чем р — 2. Но ар = а для любого элемента кольца Z/(p), так что ар = ~ a (mod р). Следовательно, если а₽т-1 = (modpm), то, конечно, арт 1 = Ьрт 1 (mod р), и, таким образом, а = b (mod р), что противоречит предположению о том, что а и b различные не превосходящие р — 1 целые числа. Следовательно, порядок эле- мента а равен р — 1 и п. (i) теоремы доказан. Шаг 3. Порядок каждого элемента группы G2m делит 2т~2. Чтобы доказать это, сначала докажем, что для любых целых а и b выполняется сравнение (а 4- 4b)2"1 2 = а2т 2 (mod2m).
Поскольку элементами группы G2m являются только нечетные числа, то, полагая а = ± 1 и варьируя Ь, сразу получаем из этого сравнения нужное утверждение. Сравнение доказывается индукцией. Для т ~ 2 оно прове- ряется непосредственно. Предположим, что оно справедливо для некоторого положительного целого т. Тогда для некоторого целого k + + k2m,' и, следовательно, (а + = (а2”*”2 + = Z1' + to2m'22'n+1 + k22lm. Таким образом, (a+W)2"^1 = а2^' (mod2”+1). Шаг 4. Нам осталось найти элемент порядка 2т—2 при т 3. Покажем, что 3' 1 (mod 2m), так что 3 должно быть эле- ментам порядка 2т-2. При т ~ 3 это утверждение проверяется непосредственно. Доказательство утверждения при m > 4 со- состоит в доказательстве сравнения (1 + 2)2”*-3 = 1 + 2"1'1 (mod 2га). Эго сравнение просто проверяется для т — 4. Предположим, что оно справедливо для некоторого т > 4. Тогда для некоторого k (1 + 2)2""3 = 1 + 2""~‘ + k2m. Следовательно, (1 + 2)2",_2 = (14- 2"~1 4- k2my = = 1 4- 2m 4- 22 (m-'1 + fe2m+l 4- k22m 4- , и, таким образом, так как т больше трех, (1+2Г“2 = 1 + 2" (mod 2'"+’). Следовательно, при всех т > 3 выполняется сравнение (1 4- 2)2"1”3 = 1 4- 2'"“1 (mod 2m). Таким образом, порядок 3 (mod 2m) не делит 2т~3, и, следова. тельно, он равен 2'п'~2, что и завершает доказательство. □ 5.2. Конечные поля, основанные на кольце целых чисел Имеется очень важная конструкция, позволяющая по задан- ному кольцу построить новое кольцо, называемое его фактор- кольцом. В случае произвольного кольца построение его фактор-
и.л. гаечные поля, основанные на кольце целых чисел 177 кольца опирается на смежные классы. В случае кольца целых чисел факторкольцо строится просто: оно представляет собой кольцо целых чисел по модулю q, с которым мы уже встречались ранее, и обозначается через z/(g) (или, более кратко, zQ); в этом случае его называют кольцом вычетов. Пусть q — положительное целое число. Кольцом вычетов Z/(q) называется множество (0, 1, q— 1} с операциями сложения и умножения, определяемыми равенствами а + b = = Ь 4* Я, a b = Rq lab]. Элементы, обозначенные через {0, 1, ..., q—1}, принадлежат как z, так и zl{q). Элементы кольца z/(q) названы так же, как и первые q элементов кольца Z- Дело вкуса, подразумевать ли под ними те же самые математические объекты или некоторые другие объекты с теми же именами. Два элемента а и Ъ кольца z, отображаемые в один и тот же элемент кольца Z/(q), называются сравнимыми по модулю q, и а — b 4* mq для некоторого целого т. Теорема 5.2.1. Кольцо вычетов Z/(q) является кольцом. Доказательство. Непосредственная проверка выполнения свойств кольца. □ . Теорема 5.2.2. Ненулевой элемент s кольца z/(q) обратим относительно умножения тогда и только тогда, когда s и q взаимно просты. Доказательство. Пусть s — такой ненулевой элемент кольца, что s и q взаимно просты. Тогда согласно следствию 2.6.4 най- дутся целые числа а и Ь, такие, что 1 — aq 4* bs. По модулю q соответственно имеем 1 = [Ц = Rq [aq 4- И = Rg [aq] Ц- Rq [bs]} = Следовательно, относительно умножения по модулю q мультипли- кативный обратный к s равен Пусть теперь $ такой элемент кольца, что s и q не взаимно просты. Сначала рассмотрим случай, когда s делит q: q = s-r. Пусть у элемента s есть обратный s'1. Тогда Г = Rq [Г] = Rq = 0. Но г Ф 0 (mod 17), так что получаем противоречие. Таким образом, если s является делителем q, то он не имеет обратного. Теперь рассмотрим случай, когда s и q не взаимно просты, но s не делит q. Пусть d = НОД [s, q]. Тогда s = ds' для неко- торого s', взаимно простого с q, и делителя d числа q. Если эле- мент s обратим, то и элемент d также обратим: d"1 = s‘*s', что
противоречит только что доказанному утверждению. Следова- тельно, s не может быть обратимым, и теорема доказана. □ Поскольку обращение в кольце z/(<?) возможно не всегда, то в общем случае ненулевые элементы кольца Z/(q) группы по умножению не образуют. Однако в z/(<?) можно найти подмно- жества, образующие подгруппы. Выберем в кольце z/(q) ненуле- вой элемент {3 и сформируем подмножество £2, ..., = 1|, остановив процесс, как только получим единичный элемент. Мы уже видели, что единичный элемент всегда достижим и что конструкция приводит к циклической группе. Она является под- группой кольца z/(<?)> и целое число г называется порядком эле- мента р в Z/0?). Мы уже видели в примерах разд. 2.3, что арифметика полей GF (2) и GF (3) может быть задана как сложение и умножение по модулю 2 и 3 соответственно, но арифметика поля GF (4) так описана уже быть не может. В символической записи GF (2) = = z/(2), GF (3) ~ z/(3), GF (4) У= Z/(4). Общий результат опи- сывается следующей теоремой. Теорема 5.2.3. Кольцо вычетов z/{q) является полем тогда- и только тогда, когда q равно простому числу. Доказательство. Предположим, что q просто. Тогда каждый элемент кольца z/(<?) взаимно прост с q и, следовательно (по теореме 5.2.2), обратим относительно умножения- Предположим теперь, что q составное число- Тогда q = r-s и согласно теореме 5.2.2, г н s не могут иметь обратных элемен- тов. □ Если кольцо вычетов Z/{q) является полем, то чтобы подчерк- нуть этот факт, оно обозначается через GF {q). Конечные поля, построенные как кольца вычетов целых чисел, не исчерпывают всего множества полей, но конечные поля с простым числом эле- ментов всегда могут быть построены как кольца вычетов. Если поле GF (р) не содержит квадратного корня из —1, то его можно расширить до GF (р2) точно таким же способом, как поле вещественных чисел расширяется до поля комплексных чи- сел. Например, в поле GF (7) выполняется равенство 6 = —1, но, как легко проверить, поле не содержит элемента, квадрат которого равен 6. Следовательно, поле GF (49) можно задать множеством элементов вида GF(49) = (a + jb:a, b£GF{7)}, определив на нем операции сложения и умножения так же, как- для комплексных чисел: (а + jb) + (с + jd) = (а + с) + / (Ь + d), {а + jb) (с + jd) = {ас — bd) + / {ab + cd),
и.х. гчинечные поля, основанные на кольце целых чисел 179 где во всех скобках справа операции обозначают сложение и ум- ножение в поле GF (7). При таком определении множество GF (49) является полем. Целыми поля *GF (49) являются элементы поля GF (7), так что. характеристика поля GF (49) равна 7. Теорема 5.2.4. Каждое поле содержит однозначно определяе- мое наименьшее подполе, которое либо изоморфно полю рациональ- ных чисел, либо содержит конечное число элементов. Следовательно, характеристика каждого поля Галуа либо бесконечна, либо равна простому числу. Доказательство. Каждое поле содержит 0 и 1. Для построения подполя рассмотрим подмножество G = |0, 1, 1 + 1, 1 + 1 + + 1, ...}, обозначая его элементы соответственно |0, 1, 2, 3, ...[. Это подмножество содержит либо бесконечное множество эле- ментов, либо конечное множество, скажем р. Мы покажем, что если это число конечно, то оно просто и G = GF (р). Так как G является циклической группой, то сложением в нем служит сло- жение по модулю р. В силу наличия в поле дистрибутивного за- кона умножение в G также является умножением по модулю р, так как а-Р = (1 + 1 + ... + 1) ₽ = р + р + ... + р, где сумма содержит а копий элемента р и сложение выполняется как сложение по модулю р. Следовательно, умножение также яв- ляется умножением по модулю р. Относительно умножения каж- дый ненулевой элемент р имеет обратный, так как последователь- ность р, 2р, ЗР, ... образует в G циклическую подгруппу. Поскольку сс-р=/=О для любых ненулевых а и р из исходного поля, то аР += 0 по модулю р для всех целых поля, и, следова- тельно, р должно быть простым. Таким образом, подмножество G образует в точности простое поле, описываемое теоремой 5.2.3. Альтернативным является случай, когда множество G беско. нечно. В этом случае оно изоморфно кольцу целых чисел. Наимень- шее содержащее G подполе F изоморфно наименьшему полю, содержащему кольцо целых чисел, каковым является поле рацио- нальных чисел. □ В поле Галуа GF (р) всегда можно найти простое подполе GF (р). В частности, если то q, с которого мы начинаем, само яв- ляется простым числом, то это простое подполе можно интерпре- тировать как поле вычетов целых чисел по модулю q. Следова- тельно, на самом деле имеется только одно поле с заданным числом элементов, которое, конечно, допускает много различных пред- ставлений.
1OU i л. о, 1еория чисел и алгеораическая теория полей 5.3. Поля, основанные на кольцах многочленов Поля можно строить, отталкиваясь от колец многочленов, та- ким же образом, как были построены конечные ноля из кольца целых чисел. Такая конструкция приводит как к конечным, так и к бесконечным полям в зависимости от того, было ли исходное кольцо многочленов определено над конечным или бесконечным полем. Эти расширения оказались полезными в нескольких направлениях дискретной обработки сигналов. Они были ис- пользованы для построения теоретике-числовых преобразований, рассматриваемых в гл. 6, и для построения алгоритмов много- мерной свертки, рассматриваемых в гл. 7. Пусть имеется кольцо многочленов F [х ] над полем F. Так же как для кольца 2 были построены кольца вычетов, можно по- строить и для кольца F [х ] его факторкольцо. Выбирая из F [х] произвольный многочлен р (х), можно определить такое кольцо, используя р (х) в качестве модуля для задания арифметики этого кольца. Мы ограничим рассмотрение только приведенными мноп> членами, так как это ограничение снимает ненужную неопреде- ленность построения. Определение 5.3.1. Для произвольного приведенного много- члена р (х) ненулевой степени над полем F кольцом многочленов по модулю р (х) называется множество всех многочленов над F, степень которых-не превосходит степени многочлена р (х), с опе- рациями сложения и умножения многочленов по модулю р (х). Это кольцо принято обозначать через F [х ]/(р (х)). Произвольный многочлен г (х) из F [х] можно отобразить в F [х]/(р (х)), отображая г (х) в RP(Xy [r(x)J. Два сравнимых по модулю р (х) элемента а (х) и b (х) из F (х) отображаются в один и тот же многочлен из F [х ]/(р (х)). Теорема 5.3.2. Кольцо многочленов по модулю р (х) является кольцом. Доказательство. Доказательство проводится прямой провер- кой выполнения свойств кольца. □ В качестве примера рассмотрим кольцо многочленов над GF (2), выбирая модуль равным р (х) = х3 + 1. Тогда кольцо многочленов по модулю р (х) равно GF (2) [х1/(х* 4- 1). Оно состоит из эле- ментов {0, 1, х, х + 1, х2, х2 -г 1, х2 + х, х2 + х + Ц и умно- жение в этом кольце выполняется, например, следующим образом: (х2+ !)• (*2) = ^3+1 [(х3 + 1) х2] = [X (х3 + 1) + х2 + X] = = х2 + х, где использована редукция по правилу х4 = х (х3 + 1) + х.
й.З. Поля, основанные на кольцах многочленов 181 В качестве другого примера рассмотрим кольцо многочленов над полем рациональных чисел Q, выбирая р (х) = х2 + 1. Тогда кольцо многочленов по модулю р (х) есть Q [х]/(х2 + 1). Оно содержит многочлены вида а + xb, где а и 6 — рациональные числа. Умножение выполняется по правилу (а + xb) (с + xd) = (ас — bd) + х (ad + be). Умножение имеет ту же структуру, что и комплексное умножение; на самом деле рассматриваемое кольцо является полем. Это вы- текает из следующей общей теоремы. Теорема 5.3.3. Кольцо многочленов по модулю приведенного многочлена р (х) является полем тогда и только тогда, когда много- член р (х) прост х). Доказательство. Пусть многочлен р (х) прост. Чтобы доказать, что рассматриваемое кольцо образует поле, достаточно показать, что каждый ненулевой элемент имеет мультипликативный обрат- ный. Пусть $ (х) — некоторый ненулевой элемент кольца. Тогда deg $ (х) < deg р (х). Так как многочлен р (х) прост, то НОД [s (х), р(х)] = 1. Согласно следствию 2.7.7, 1 = а (х) р (х) + Ь (х) s (х) для некоторых многочленов а (х) и b (х). Следовательно, 1 = Rp <ч [1 ] = R? (*) [а (х) р (х) + b (х) S (х)] = = Rpm[b(x)]-R„ w [s(x)] = Rp (4[fc(x)] s(x). Таким образом, в кольце многочленов по модулю многочлена р (х) многочлен Rp (х) [Ь (х) ] является мультипликативным об- ратным к s (х). Теперь предположим,Г что многочлен р (х) не прост. Тогда р (х) = г (х) s (х) для некоторых г (х) и $ (х). Если кольцо явля- ется полем, то многочлен г (х) имеет -обратный г-1 (х), и поэтому s(x) = Rt (х) [s (X)l = Rp т [Г1 (х)• г (х) • S (х)] = = ЯР (,)[Г1(х)-р(х)] = 0. do s (х) =/= 0, и мы получаем противоречие. Следовательно, такое кольцо не может быть полем. □ Теорема описывает один из способов построения поля комплекс- ных чисел С как расширения поля вещественных чисел R. Так как многочлен ха + 1 является простым над полем вещественных г) Напомним что простой многочлен является одновременно приведенным и неприводимым. Для построения поля достаточно только неприводимости р (х), но мы условились рассматривать только приведенные многочлены, так что даль- нейшие результаты носят менее общий характер.
182 1л. ь. 1еория чисел и алгеораическая теория полей чисел, то R можно расширить до множества {а + Ьх\, где а и b вещественны, задавая сложение и умножение по модулю х*4- 1. Тогда (а 4- bx) (с + dx) = (ас — bd) 4~ (ad + be) х, (а + bx) + (с + dx) = (а + с) + (b + d) х. Эти формулы будут более привычны, если вместо х поставить /: (а 4- jb) + (с 4- jd) = (а + с) + / (Ь 4- d), (а 4- jb) (с 4- jd) = (ас — bd) 4- j (ad 4- be). Эта же самая конструкция может быть использована для расшире- ния любого поля, над которым многочлен х2 4- 1 простой. Таким полем является, например, GF (7), и его можно расширить до поля GF (49) точно так же, как поле вещественных чисел до поля комплексных чисел, что и было формально проделано перед до- казательством последней теоремы. С другой стороны, многочлен х2 4- 1 не является простым мно- гочленом над полем GF (5) и не может быть использован для его расширения. Чтобы построить расширение GF (25) поля GF (5), надо воспользоваться многочленом х2 4- х 4- 1, который является простым над GF (5). При этом модуле правило умножения прио- бретает вид (а 4" xb) (с 4- xd) = (ас — bd) 4- х (ad 4- be — bd) Умножение в этом поле отлично от умножения в комплексном поле. Умножение всегда будет задаваться этим правилом, если поле GF (р2) получается как расширение поля GF (р) с помощью многочлена х2 4- х 4- 1, и такое расширение всегда возможно, если х2 4- х 4- 1 является простым над GF (р). В частности, этот многочлен можно использовать при расширении GF (2) до GF (4). 5.4. Минимальные многочлены и сопряжения Элемент некоторого поля может быть корнем многочлена, ко- эффициенты которого принадлежат некоторому меньшему полю. Если элемент является корнем хотя бы одного такого многочлена, то с ним оказывается связанным один специальный многочлен, представляющий особый интерес. Определение 5.4.1. Пусть F — некоторое поле, а элемент р принадлежит некоторому расширению поля F. Минимальным многочленом f (х) элемента р над полем F называется ненулевой приведенный многочлен наименьшей степени, такой что коэффи- циенты его принадлежат основному полю F, а элемент р является корнем.
ол. минимальные многочлены н сопряжения 183 Минимальный многочлен над полем F существует не для вся- кого элемента расширения — элементы вещественного поля, не имеющие минимальных многочленов с рациональными коэффи- циентами, называются трансцендентными числами — но если для данного элемента минимальный многочлен существует, то он единственен. Действительно, если (х) и (х) оба являются минимальными-многочленами элемента 0, то они оба приведенные, имеют одну и ту же степень и 0 является их корнем. Тогда мно- гочлен f (х) = (х) — /<2) (х) имеет меньшую степень и 0 яв. ляется его корнем. Следовательно, f (х) = 0 и /(1) (х) равен /(2) (х). Теорема 5.4.2. Каждый минимальный многочлен является единственным и простым. Если f (х) — минимальный многочлен элемента 0, a g (х) — некоторый многочлен, для которого 0 яв- ляется корнем, то f (х) делит g (х). Доказательство. Единственность минимального многочлена мы уже доказали. По определению многочлен f (х) является при- веденным. Предположим, что / (х) разлагается в произведение двух многочленов, f (х) = а (х) Ъ (х). Тогда / (0) = а (0) b (0) = 0, так что хотя бы один из многочленов а (х) и b (х) имеет степень, мень- шую чем степень f (х), и элемент 0 служит его корнем. Следова- тельно, минимальный многочлен является простым. Для доказательства второй части теоремы запишем g W = f И h(x) + s (х). Степень многочлена s (х) меньше степени / (х), так что s (х) не может иметь элемент 0 своим корнем. Но О = g (0) = f (0) h (0) + s (0) = s (0), так что многочлен s (х) равен нулю, и теорема доказана. □ Каждый элемент 0 поля F имеет над F минимальный много- член первой степени, равный f (х) = х — 0. Если элемент 0 не принадлежит полю F, то степень его минимального многочлена равна двум или больше. Следовательно, минимальный многочлен может иметь и другие корни. Но тогда минимальный многочлен элемента 0 является минимальным многочленом и для других, отличных от 0, элементов. Определение 5.4.3. Два элемента некоторого расширения поля F, имеющие общий минимальный многочлен над F, называются сопряженными (относительно F). В общем случае один элемент может иметь более одного сопря- женного элемента, на самом деле столько, какова степень его ми- нимального многочлена. Подчеркнем, что отношение сопряжен-
184 Гл. 5. Теория чисел и алгебраическая теория полей ности двух элементов зависит от основного поля. Два элемента комплексного поля могут быть сопряженными относительно поля рациональных чисел, но не быть сопряженными относительно поля вещественных чисел. Ндпример, минимальный многочлен над Q комплексного числа /i/"2 равен х* — 2, а над R равен ха + т/"2. Множество сопряженных с / элементов, содержащее этот элемент, относительно поля Q равно {^2, —У~2, j ^2, —д/"2}» а относительно поля R равно {jy/r2t — 5.5. Круговые многочлены Над произвольным полем F можно выписать разложение мно- гочлена хп — 1 в произведение его простых делителей: I хп — 1 = Pi (х) (х) ... рк (х). Если F — поле рациональных чисел, то простые делители нахо- дятся сравнительно легко. Они представляют собой многочлены, которые даются следующим определением. Определение 5.5.1. Над произвольным полем F для каждого п круговой многочлен определяется равенством Qn(x)= П (х—&/„), НОД (Г. п)=1 где о)п равно корню 1) степени п из единицы в некотором расши- рении поля F. Главным образом нас будут интересовать круговые многочлены над полем рациональных чисел Q. В этом случае con = e~i2nln принадлежит полю комплексных чисел, а для 105 коэффи- циентами круговых многочленов являются —1, 0 или +1. В достаточно большом расширении поля F — для поля рацио- нальных чисел таковым является комплексное поле — многочлен хп — 1 может быть разложен в виде ха — 1 = п (х—<о'), где о)п — корень степени п. из единицы. Следовательно, каждый круговой многочлен можно выразить в виде произведения неко- торых из этих линейных множителей. Определение кругового многочлена специально построено так, чтобы все его коэффици- енты были рациональными. Имеется в виду, конечно, первообразный корень степени п из единицы. — Прим, перед.
5.5. Круговые многочлены 185 При малых п круговые -многочлены можно легко вычислить, разлагая многочлен хп — 1. Очевидно, что (х) = х — 1. Для выяснения общей ситуации найдем несколько начальных много- членов. Пусть п = 2. Тогда х2 — 1 = (х — 1) (х + 1) = Qj (х) Q, (X). Пусть п = 3. Тогда X* _ I = (х _ 1) (Ха + х + 1) = (х) Qs (х). Пусть п = 4. Тогда X* _ 1 = (X - 1) (X + 1) (х2 + 1) = ft (X) ft (Х) ft (X). Отметим, что на каждом шаге появляется только один новый множитель. Пусть п = 5. Тогда Xs — 1 = (х — 1) (х4 + х3 + х2 + х + 1) = Qj (х) ft (х). Пусть п = 6. Тогда х> — 1 = (х — 1) (х + I) (х2 + х + I) (х2 — х + 1) = = Qi (X) ft (X) ft (х) ft (х). Пусть п = 7. Тогда х’ — 1 = (х — 1) (Xе + Xs + х4 + х3 + х2 + х + 1) = =01 (х) Q, (х). Пусть п = 8. Тогда Xs — 1 = (х — 1) (х + 1) (х> + 1) (х4 + 1) = = 01 (х) Qs (х) Q. (х) Q8 (х). Пусть п = 9. Тогда х* — 1 = (х — 1) (х2 + х + 1) (Xе + Xs + 1) = = Qi (х) Qs (х) Q, (х). Общий случай описывается следующей теоремой. Теорема 5.5.2. Для каждого п deg Qn (х) = q> (га), где q> (п) — функция Эйлера. Доказательство, ф (п) определяется как число целых чисел, меньших п и взаимно простых с п, и это в точности совпадает с числом линейных множителей, входящих в определение Qn (x).fj Теорема 5.5.3. Для каждого п X"- 1 = П ft(x). k ] л
186 Гл. 5. Теория чисел и алгебраическая теория полей Доказательство. Непосредственные вычисления дают: х" — 1 = П (х — raj,) = П П (х — 0)!,) = 1=1 kin НОД О- п)=п/Л = nQ„(x). kin Теорема 5.5.4. Над произвольным полем коэффициенты кру- гового многочлена всегда являются целыми этого поля. Доказательство. Воспользуемся индукцией по п. Коэффици- енты многочлена Qi (х) = х — 1 являются целыми. Согласно теореме 5.5.3, Деление приведенного многочлена с целыми коэффициентами на приведенный многочлен с целыми коэффициентами дает в виде частного приведенный многочлен с целыми коэффициентами. Следовательно, утверждение теоремы верно для любого п, если оно верно для всех меньших положительных целых п. □ Теорема 5.5.5. Над полем рациональных чисел все круговые многочлены являются простыми и, следовательно, минимальными многочленами для соответствующих корней из единицы. Доказательство. Приведенность круговых многочленов оче. видна. Доказать надо только неприводимость круговых многочле- нов над полем рациональных чисел. Пусть f (х) обозначает мини- мальный многочлен элемента соп над полем рациональных чисел. Пусть h — произвольное целое число, взаимно простое с л, и пусть g (х) — минимальный многочлен элемента над полем рациональных чисел. Предположим, что g (х) — f (х) для каж- дого такого h. Тогда многочлен / (х) должен быть кратным много- члену Qn (х), и так как (х) приведен и имеет рациональные коэффициенты, f (х) — Qn (х). Тогда наша задача сводится к до- казательству того, что для каждого взаимно простого с п числа h минимальный многочлен g (х) элемента со„ равен многочлену / (х). Шаг 1. Докажем сначала это утверждение для случая, когда h равно простому числу р, не являющемуся делителем п. Пусть g (х) — минимальный многочлен элемента со* и предположим, что он не равен многочлену f (х). Тогда х- - 1 - / (X) g (X) t (X), для некоторого многочлена t (х), коэффициенты которого целые числа, так как оба многочлена f (х) и g (х) являются делителями
5.6. Примитивные элементы 187 многочлена хп — 1 и имеют целые коэффициенты. Так как эле- мент (оп является корнем многочлена g (хр), то многочлен g (хр) кратен многочлену f (х): g (X") = / (х) k (х) для некоторого многочлена k (х) с целыми коэффициентами. За- меним теперь оба равенства вычетами по модулю р: хп — 1 = / (х) g (х) t (х) (mod р), j(x') = f(W) (modp). Согласно теореме 2.2.4, второе равенство записывается в виде (g (х))’= / (х) А (х) (modp). Рассмотрим разложение этого уравнения над полем GF (р). Каж- дый простой делитель р (х) многочлена / (х) должен быть простым делителем многочлена (g (х))р, и, следовательно, многочлена g(x). Следовательно, (хп — 1) должен делиться на (р (х))2. Но тогда формальная производная пхп~1 от многочлена (хп — I) делится над.б/*' (р) на р (х). По предположению р не делит п, а х не может быть делителем f (x)(mod р), так как f (х) делит хп — 1. Полу- ченное противоречие показывает, что g (х) не может быть не рав. ным f (х). Шаг 2. Теперь докажем утверждение для произвольного h, взаимно простого с п. Запишем разложение h на простые множи- тели: h = Р1р2 ... ps- Каждый из этих множителей взаимно прост с п, так как h взаимно просто с п. Согласно утверждению шага 1, если ып— корень многочлена f (х), то также является корнем этого многочлена. Теперь опять воспользуемся шагом 1: если ©«* —корень много- члена f (х), то и сдп1рг является корнем этого многочлена. Исполь- зуя индукцию, получаем, что и <о£ является корнем / (х)-□ 5.6. Примитивные элементы Согласно данному в разд. 2.3 определению, примитивным эле- ментом поля Галуа называется такой элемент а, что каждый не- нулевой элемент поля можно однозначно записать в виде степени этого элемента. Например, в поле GF (7) выполняются равенства З1 = 3, З2 == 2, З3 == 6, З4 = 4, З5 = 5, З6 = 1, так что 3 является примитивным элементом поля GF (7). Примитивные элементы полезны при построении полей, так как, коль скоро один из них найден, то, перемножая степени этого примитивного элемента, можно построить таблицу умножения в этом поле. В полях Галуа
188 Гл. 5. Теория чисел и алгебраическая теория полей примитивные элементы играют роль основания логарифмов. В данном разделе будет доказано, что каждое конечное поле со- держит примитивный элемент. Конечное поле образует абелеву группу двояким способом. Множество всех элементов поля образует абелеву группу по сло- жению, и множество всех элементов поля, исключая нуль, обра- зует абелеву группу по умножению. Мы будем работать с группой по умножению. Согласно теореме 2.1.5, порядок этой группы де- лится на порядок каждого ее элемента. Теорема 5.6.1. Пусть 0Х, 02, • ••, Pq-i — ненулевые элементы поля GF (q)‘, тогда: 1 — 1 = (х — pi)(x — р2) ... (х - Доказательство. Множество ненулевых элементов поля GF (q) образует конечную группу по умножению. Пусть 0 — какой- либо элемент из GF (q), и пусть h — мультипликативный порядок этого элемента. Тогда, согласно теореме 2.1.5, h делит q — 1. Следовательно, I (рА)(«г—1)/А _ |(?—i)/ft __ । так что 0 является корнем многочлена 1 — 1. □ Теорема 5.6.2. Группа ненулевых элементов поля GF (q) по умножению является циклической. Доказательство. Если число q — 1 простое, то теорема триви- альна, ибо порядок всех-элементов, за исключением нуля и еди- ницы, равен q — 1, так что каждый такой элемент примитивен. Доказывать теорему надо только для составного числа q— 1. Рассмотрим разложение числа q — 1 на простые множители^ q — 1 = П/ф. Так как GF (q) — поле, то среди его q — 1 ненулевых элементов должен найтись хотя бы один, не являющийся корнем многочлена x(4-i)/Pt — поскольку этот многочлен может иметь не более (q — l)/pi корней. Следовательно, для каждого i можно найти (о—!)/₽• Iр такой элемент at поля GF (q), что 1 1. Пусть &/ = at S и пусть b = П Ь|- Покажем, что порядок b равен q — 1, и, i=i следовательно, группа является циклической. Шаг 1. Порядок элемента bi равен р{г. Доказательство.
Задачи 189 Р, ‘ v. Очевидно, что bi = 1, так что порядок bi делит pi1. Он ра- вен числу вида р”1. Если п{ меньше у{, то =1. Но Л*” . bt —at 1, и, следовательно, порядок элемента bi V, равен рД. Шаг 2. Порядок элемента b равен q — 1. Доказательство. Предположим, что bn — 1. Покажем сначала, что из этого вы- текает равенство п = 0 (mod рГ) для всех i = 1, s. Для каждого i можно записать (п П Загченив b на Ц bt и используя равенство ЬД =1, находим Таким образом, п П pjj = 0 (mod рр). /¥=» Поскольку pt представляют собой различные простые числа, то п 0 (mod pt1) для каждого t. Следовательно, п =0 (mod?—I). Теорема доказана. □ Теорема 5.6.3. В каждом поле Галуа имеется примитивный элемент. Доказательство. Так как ненулевые элементы поля GF (q) образуют циклическую группу, то среди них имеется элемент порядка q— 1. Этот элемент является примитивным. □ Задачи a 1. а. Приводим ли йад полем рациональных чисел многочлен р (х) — х4 + -f- 2х8 х2 — 2? Если приводим, то разложить его. б. Приводим ли над полем вещественных чисел многочлен р (х) == х4 -4- 4 2х3 -4- х2 — 2? Если приводим, то разложить его. в Приводим ли многочлен р (х) = х4 + 2х3 -|- х2 — 2 над полем комплекс- ных чисел? Если приводим, то разложить его. ° Над полем рациональных чисел пусть PiW-x3+l, р3(х)-^+х3Т-х+ 1.
190 Гл. 5. Теория чисел и алгебраическая теория полей а. Найти НОД [рх (х), р2 (х) ]. б. Найти НОК [pi (х), р3 (х)]. в; Найти многочлены А (х) и В (х), удовлетворяющие равенству НОД [pi (х), ра (х)I = А (х) Pi (х) + В (х) ра (х). 5.3. Пусть rrii (х) = ха Д- х + 1, т2 (х) — х2 4- 1> (х) = х2 — 1. Пусть даны сх (х) = с (х) (mod (х)), с2 (х) — с (х) (mod т2 (х)), Сд (х) — с (х) (mod/n3(x)), где степень многочлена с (х) не превосходит 5. Найти все многочлены, необ- ходимые для вычисления многочлена с (х) по этим вычетам. 5.4. Сколько круговых многочленов делят х18 — 1? Найти их. 59 5.5. Пусть р (х) == *1- Используя соотношение 1=0 Х«° — I = (Х — I) р (х), найти Rp [х120 + x70 -f- х80]. 5.6. Доказать, что для формальной производной многочлена выполняется равенство [г (х) S (X) 1' = г' (л) S (X) + г (х) s' (х), и что если а2 (х) делит г (х), то а (х) делит г' (х). 5.7. Доказать, что в кольце Z/(15) целых чисел по модулю 15 многочлен р (х) = — х2 — 1 имеет более двух корней. Этот же многочлен над полем имеет только два корня. В каком месте в случае кольца не проходит доказатель- ство теоремы? 5.8. Многочлен р (х) = х4 4- х3 + х2 + х + 1 неприводим над полем GF (2). Следовательно, кольцо многочленов по модулю р (х) является полем GF (16). а. Доказать, что в этой конструкции элемент поля, соответствующий многочлену х, не является примитивным. б. Показать, что многочлену хД- 1 соответствует примитивный много- член. в. Найти минимальный многочлен элемента х4* 1. 5.10. 5.11. 5.12. 5.13. 5.14. 5.15. Над полем GF (16): а. Сколько имеется различных приведенных многочленов второй степени вида х2 + ах -1- b, b Ф 0? б. Сколько имеется различных многочленов вида (х — ₽) (х — у), 0, у =# 0? в. Доказывает ли это существование неприводимых многочленов второй степени? Сколько простых многочленов второй степени имеется над по- лем GF (16)? а. Построить расширение поля вещественных чисел IR, используя простой многочлен х4 4~ 1- Объяснить, почему это расширение является полем ком- плексных чисел С, которое можно построить также, используя простой многочлен Xs+ 1. б. Построить расширение поля рациональных чисел Q, используя простой многочлен х*4- 1. Объяснить, почему это расширение отличается от рас- ширения поля рациональных чисел с помощью простого многочлена х2 4- 1- Построить поле GF (7). задавая его таблицами сложения и умножения. Вычислить З200 (mod 7). Доказать, что кольцо вычетов Zq является кольцом. Найти элементы порядка рт~1 (р — 1) в каждом из следующих полей: GF (9), GF (25), GF (27), GF (49). Доказать, что многочлен хв + х8 + 1 неприводим над полем рациональных чисел.
Замечания 191 Замечания Материал данной главы обычен для математической литературы. Хорошее изложение теории чисел можно найти у Ope [1] (1948) и Харди и Райта [2] (I960). Свойства полей Галуа описываются во многих книгах по абстрактной алгебре, например, в книгах Биркгофа и Маклейна [31 (1941), а также Ван дёр Вардена [4] (1949). В большинстве материала, однако, это стандартное изложение является формальным, уделяет основное внимание абстрактным свойствам и содержит мало примеров и приложений. Большее внимание вычислительным аспектам полей Галуа уделил Берлекэмп [5] (1968). Более детальное изложение колец многочленов и круговых многочленов можно найти в книге Маклеллана и Рейдера [6] (1979).
Глава 6 ВЫЧИСЛЕНИЯ В СУРРОГАТНЫХ полях Часто задачу вычисления в заданном поле можно вложить в другое поле, произвести там необходимые вычисления, а затем ответ вернуть в заданное поле. Целесообразность такого перехода может мотивироваться различными причинами. Может оказаться, что в новом поле необходимые вычисления выполнить легче, и это уменьшает объем работ или упрощает реализацию вычислений. Иногда электронные компоненты для вычислений в некотором поле доступнее, чем для заданного поля, и тогда, если требуемые вы- числения допускают подходящую переформулировку, резоннее перейти в это поле. Возможны ситуации, когда желательно раз- работать стандартный вычислительный модуль обработки боль- ших массивов данных и использовать его при решении разнооб- разных задач для обработки дискретных сигналов. Подгонка одного типа вычислений к другому может осуществляться тогда с целью стандартизации. Другой важной причиной использования суррогатных полей является улучшение точности вычислений. Вычисления в полях Галуа не содержат погрешностей округления и поэтому всегда точны. Если задачу вычисления в поле вещественных или комп- лексных чисел удастся погрузить в поле Галуа, то это может при- вести к увеличению точности результата. В большинстве задач, обработки дискретных сигналов можно ограничиться вычисле- ниями с фиксированной запятой; обычно оказывается достаточной,j 16-битовая арифметика с фиксированной запятой. Если поле' Галуа достаточно велико, чтобы содержать 16-битовые целые; числа, то в его пределах можно правильно осуществлять многие', целочисленные операции, если только результаты не выходят^ за пределы 16-битовых целых чисел. 6.1. Свертка в суррогатных полях Свертка в поле вещественных чисел часто может быть заме йена сверткой в подходящем поле Галуа. В реальных задача вещественные числа записываются в виде конечного числа Д< сятичных или двоичных знаков; в цифровой обработке сигнале
обычно используется запись с фиксированной запятой. Двоич- ное представление с конечным числом знаков может ограничива- ться 12 или 16 битами. При вычислениях можно предполагать, что двоичная точка находится справа — все числа являются целыми. Сдвиг двоичной точки во входных данных с целью вклю- чения остальных случаев является очень простым делом. Итак, линейную свертку S W = g И d (х) в поле вещественных чисел мы заменяем сверткой в кольце целых чисел. Для этого нужно только входные данные интерпретировать как целые числа. Внешний вид уравнения, описывающего свертку, не меняется, но операции приобретают смысл стандартной цело- численной арифметики. Затем уравнение в кольце целых чисел можно погрубить в подходящее поле Галуа, скажем, простое поле Галуа, GF (р), если простое число р достаточно велико. Если все входящие в свертку целые числа положительны, то задающее про- стое поле GF (р) простое число р должнб быть столь большим, чтобы выходные коэффициенты свертки не превосходили р — 1. Тогда выполняется сравнение s (х)' = g (х) d (х) (mod р), и условие вычислений по модулю р излишне. Если sf могут при- нимать и отрицательные значения, то задающее простое поле GF (р) простое число р надо выбирать так, чтобы Sj попадали в диапазон — (р — 1)/2 <С s, <Нр — 1)/2. Тогда отрицательные целые числа могут быть представлены положительными целыми числами в ин- тервале от (р + 1)/2 до р — 1. Свертка в поле Галуа'может быть вычислена любым из при- годных в данном поле методов. Некоторые прямые методы рас- сматриваются в следующем разделе. Можно также воспользо- ваться преобразованием Фурье в данном поле и теоремой о свертке. На рис. 6.1 приводится сравнение такого вычисления в поле Га- луа и в поле комплексных чисел. Мы видим, что на обеих сторо- нах рисунка выписаны одинаковые уравнения, хотя, конечно, заложенные в них арифметики различны. Так как циклическая свертка в поле Галуа приводит к тому же самому ответу, что и циклическая свертка в кольце целых чисел, то использование преобразования Фурье данного поля Галуа также приводит к правильному ответу. Так как арифмети- кой поля GF (р) является арифметика по модулю р, то перепол- нения по модулю р в промежуточных вычислениях роли не играют, но могут оказаться существенными в выходных вычислениях; если р выбрано достаточно большим, то переполнения в выходных Данных невозможны. 7 Блейхут Р.
194 Гл. b. Вычисления в суррогатных полях Вычисление целочисленной свертки Процедура /: вложение целых чисел 6 С; арифметика поля С Процедура 2: вложение целых чисел 8 6F(p), арифметика поля GF(P). J(X) S(X) Рис. G.i. Сравнение двух процедур свертки. В качестве примера рассмотрим вычисление 5-точечной цикли- ческой свертки, s (х) = g (х) d (х) (mod х5 — 1). Выберем простое р равным 31 и будем работать в поле GF (31). Это поле подходит к рассматриваемой задаче постольку, поскольку нам известно, что коэффициенты свертки s (х) не превосходят 30. Для реально возникающих задач поле GF (31) слишком мало и мы его выбрали только для примера. Так как 5 делит р — 1 = 30, то в данном поле существует преобразование Фурье длины 5. Ядром преобразования можно
6.1. Свертка в суррогатных полях 195 выбрать элемент 2, так как его порядок равен 5. Пусть d0 = 2, dt = 6, ii> = 4, d, — 4, dt = О, «Го = 3, gj = 0„ g2 = 2, g, = 1, gi = 2. 5-точечное преобразование вектора d задается равенствами Dk=^2ll‘dl, fe=0, 4; 1=0 для вектора g имеют место аналогичные соотношения. В матрич- ной записи соответственно имеем Таким образом, компоненты векторов-преобразований даются равенствами Do = 16, Pi = О, Dz = 5, D3 = 29, Dt = 22, Go = 8, Gi = 20, G2 = 22, G3 = 0, Ga = 27. Перемножая Di и Git для St получаем: 50 = 4, Sj = 0, S2 = 17, S3 = 0, S4 = 5. Так как 5-25 = 1 в поле GF (31), то 5-1 = 25. Следовательно, обратное преобразование Фурье задается равенством определяющим окончательный результат. Непосредственное вы- числение этой свертки в кольце целых чисел дает тот же результат. Если мы выберем большие входные компоненты, то некоторые ком- поненты свертки окажутся больше 30. В этом случае вычисление свертки в GF (31) приведет к переполнению выходных компонент и даст неправильный результат. Тогда нужно использовать большее поле; в практических приложениях полезны поля, содержащие по меньшей мере 218 элементов. Если длина слова слишком велика для поля желаемой мощно- сти, то можно воспользоваться китайской теоремой об остатках и работать с вычетами целых чисел, разбивая таким образом длин- ные слова на короткие подслова. Это использование китайской тео- 7*
196 Гл. 6. Вычисления в суррогатных полях ремы об остатках отличается от ее предыдущего использования при построении переупорядочивания линейного потока данных в таблицу. Теперь она используется только для разбиения самих чисел, не затрагивая индексацию данных: данные следуют в своем естественном порядке. Новые свертки, конечно, можно вычислять, используя опять китайскую теорему об остатках, но на сей раз, в отличие от предыдущего, она будет использоваться для вновь сформированных многочленов и их индексов. Пусть sltl) обозначает вычет s( (mod т() для г взаимно простых целых чисел mlt пц, .... тг. Тогда n—I 1 = 0 L -k V — 1 (mod mi), . n.........r + где = gj (mod mJ и d\l} — di (mod mJ. По китайской теореме об остатках величины восстанавливаются по вычетам st-Z)- Следовательно, вычисление свертки, содержащей большие це- лые числа, мы свели к вычислению г сверток, содержащих малые целые числа. Для вычисления этих составляющих сверток можно пользоваться уже описанными способами или быстрыми алгорит- мами вычисления сверток в кольце целых чисел. 6.2. Числовые преобразования Ферма Простейший вид алгоритмы вычисления преобразования Фурье имеют в полях Галуа вида GF (2m + 1), которые действи- тельно являются полями, если р = 2т + 1 — простое число. Известно, что число 2т + 1 не является простым, если т не равно степени двух. Однако обратное утверждение неверно, так как число 232 + 1 является составным. Но при т = 2, 4, 8 и 16 число 2т + 1 является простым, равным соответственно 5, 17, 257 и 65 537. Это множество целых чисел известно под назва- нием простых чисел Ферма. Если q — простое число Ферма, то в поле GF (q) число q — 1 и любой его делитель равны некоторой степени двойки. Преобразование Фурье = S й'Ч, к = 0, , n — 1, 1=0 определено, если п делит 2т и существует элемент <о порядка п х). Таким образом, в поле GF (21в + I) определены преобразования Фурье длин 218, 215, 214, ..., 22, 2. Используя алгоритм Кули— Тьюки, преобразование Фурье в поле GF (2т + 1) можно пред- Такое преобразование Фурье называют часто числовым преобразованием 1 Ферма. — Прим, перед.
6.2. Числовые преобразования Ферма 197 ставить в виде последовательности преобразований по основанию два. для реализации которой требуется всего лишь примерно (л/2) logs п умножений и (л/2) log2 п сложений. Преобразования длины 32 и меньше в поле GF(21S4- 1) дела- ются на самом деле намного проще. Это обусловлено тем, что по- рядок элемента 2 в этом поле равен 32. Чтобы увидеть это, доста- точно заметить, что 21в 4- 1 = 0 в поле GF (21в + 1). Следовательно, 216 = —1 и 232 = 1 . Преобразование Фурье записывается в виде 31 Vs = L k = 0..............31, £=0 и умножение в данной арифметической системе сводится просто к циклическому сдвигу, так как представляет собой умножение на степени двойки. Такое преобразование вычисляется чрезвычайно просто, но длина 32 слишком мала для многих приложений. В общем случае простого числа Ферма 2те 4- 1 порядок эле- мента 2 в поле GF (2m + 1) равен 2т, так что 2 может быть ис- пользовано в качестве ядра преобразования длины 2т. Для по- строения преобразования Фурье длины 4т можно воспользоваться ядром >Л2. В этих полях, как легко проверить возведением в квад- рат и использованием соотношения 2т = —1, выполняется ра- венство У 2 — 2",/4 (2т/2 — 1). Поэтому каждая степень элемента > 2 имеет вид 2° ± 2Ъ. Например, преобразование Фурье длины 64 в поле GF (21в + 1) записывается в виде 63 = S (212 - 24)“ vt, k = 0, ... , 63. t=0 Если для этого вычисления воспользоваться БПФ-алгоритмом Кули—Тьюки по основанию два, то все умножения на константы будут умножениями на числа вида 2а ± 2Ь и, следовательно, могут быть реализованы как пара циклических сдвигов и вычита- ние. В общем случае поля GF (2m + 1) преобразование Фурье длины большей чем 2т всегда содержит нетривиальные умноже- ния. Число этих умножений можно уменьшить сведением БПФ- алгоритма Кули—Тьюки в форму многомерного преобразования, в каждом из измерений которого используется не более чем 2т- точечное преобразование. Например, рассмотрим 1024-точечное преобразование в поле GF (216 + 1): 1023 V„ = s ш"4> k = 0........ 1023, t=0 где о — элемент порядка 1024, который можно полагать равным п64, где л — примитивный элемент поля. Элемент 3 в поле
198 Гл. 6. Вычисления в суррогатных полях 1024 32 -точечный БПФ-алгоритм Кули-Тьюки без умножений “ 32-точечный БПФ-алгоритм Кули-Тьнзки „без умножений'1 Рис. 6.2. Структура 1024-точечного БПФ-алгоритма в поле GF (216 + I). GF (218 + 1) является примитивным, но, возможно, такой выбор не является лучшим. Мы хотим со выбрать так, чтобы выполнялось равенство со32 = 2; следовательно, п надо выбрать так, чтобы л2048 — 2. БПФ-алгоритм Кули—Тьюки приводит преобразование к виду = 2 2? k Га»1k 2 2‘k Vi'+n'i" ]. r=o L r=o J Для каждого значения Г внутренняя сумма является 32-точечным преобразованием Фурье, и для каждого k" внешняя сумма явля- ется 32-точечным преобразованием Фурье. Каждое 32-точечное преобразование Фурье в свою очередь может быть разбито по БПФ-алгоритму Кули—Тьюки по основанию два и вычислено с помощью только циклических сдвигов и сложений. Умножения на представляют собой нетривиальные умножения, но та- ких умножений имеется всего 1024, и все они являются целочис- ленными. На самом деле при Г или k", равном нулю, эти умноже- ния тривиальны, и остается только 931 нетривиальных умноже- ний. Структура этого БПФ-алгоритма показана на рис. 6.2. В общем случае преобразование Фурье в поле GF (216 -j- 1) может быть вычислено с помощью примерно п (rlog32 — 1) умноже- ний в поле GF (21в + 1), (1/2) п log2 п сложений в этом поле и (1/2) п log2 л циклических сдвигов. Арифметикой поля GF (2le + 1) являются обычные целочис- ленные сложение и умножение с последующим приведением ре- зультата по модулю 21в + 1. Но так как 216 = —1, то 216+z = == — 2Z, так что биты порядка больше чем 16 переводятся в млад- шие разряды и вычитаются. 6.3. Числовые преобразования Мерсенна Полями Галуа, в которых умножение выглядит наиболее естественным образом, являются поля вида GF (2т — 1), которые являются на самом деле полем только для простых т, так как
6.3. Числовые преобразования Мерсенна 199 если т — число составное, то 2ой — 1 делится на 2а— 1. Про- стые числа вида 2т— 1 называются простыми числами Мерсенна. Наименьшие значения т, для которых число 2т — 1 является простым, равны 3, 5, 7, 13, 17, 19 и 31; соответствующие им простые числа Мерсенна равны 7, 31, 127, 8191, 131 071, 524 287 и 2 147 483 647. Арифметика поля GF (2т — 1) очень хорошо согласуется с представлением целых чисел в виде m-битовых чисел, так как в этом поле 2т = 1. Следовательцо, арифметикой поля является обычная целочисленная арифметика, в которой биты переполнения переносятся слагаемыми в соответствующие низшие разряды. Это и есть арифметика 1-дополненийх). Поле GF (2т — 1) существует для всех простых чисел 2т — 1. В поле Галуа GF (q) преобразование Фурье существует для всех длин п, которые делят чцсло q—1. Следовательно, в простом поле GF (2т—1) преобразование Фурье существует для всех длин п, которые делят число 2т — 2. Эти преобразования иногда называют числовыми преобразованиями Мерсенна. Так как число (2т — 1) — 1 не равно степени двух, то число- вые преобразования Мерсенна нельзя вычислять с помощью БПФ-алгоритма Кули—Тьюки по основанию два. Этим они су- щественно отличаются от числовых преобразований Ферма, для которых БПФ-алгоритм Кули—Тьюки оказался вполне подходя- щим. Для вычисления числового преобразования Мерсенна мо- жно воспользоваться любым БПФ-алгоритмом по смешанному основанию. Например, поле GF (218 — 1) можно рассматривать как поле, элементы которого заданы в виде 13-битовых представлений це- лых чисел. Свертка двух векторов, компоненты которых заданы 12-битовыми числами, может быть вычислена в этом поле, если только не происходит переполнения выходных коэффициентов свертки. Таким образом, линейная свертка s (х) = g (х) d (х), где коэффициентами многочленов g (х) и d (х) служат 12-битовые положительные целые числа (что эквивалентно 13-битовому пред- ставлению целых чисел в обратном коде), может быть выражена в виде s (х) = g (х) d (х) (mod 213 — 1), если известно, что коэффициенты многочлена s (х) меньше чем 2i3 — 1. Для длин п, которые делят число 213 — 2, в поле GF (213 — 1) существует преобразование Фурье. В данном случае выбор воз- 1) Напомним, что речь идет о двоичном представлении целых чисел в обрат- ном коде, в котором взятое с обратным знаком число записывается в виде допол- нения его двоичной записи. Например, при т = 3 и р — 7 число 2 записывается в виде 010, а число — 2 = 5 в виде 101. — Прим, перев.
200 Гл. б. Вычисления в суррогатных полях можной длины п преобразования дается разложением 213 — 2 = = 2-5-7-9-13. В качестве ядра преобразования Фурье можно выбрать элемент —2, так как 213 — 1 = 0 (mod 213 — 1), и, сле- довательно, порядок —2 равен 26. Таким образом,преобразование Фурье записывается в виде 25 Vk = Е (-2)“ Vi, k = 0, ..., 25. i=0 В этом преобразовании Фурье все умножения исчерпываются умножениями на степени двух, и, следовательно, вычисление мо- жно реализовать одними циклическими сдвигами, без умножений. С другой стороны, делители числа 26 не очень пригодны в качестве длин БПФ-алгоритмов; на этой конкретной длине трудно приду- мать что-то лучшее, чем вычислять преобразование Фурье как оно записано посредством 252 циклических сдвигов и 26-25 сло- жений. Для построения преобразований на других длинах приходится допустить наличие умножений. Алгоритм на большой длине, скажем 70, строится из алгоритмов малых длин, в данном случае 2, 5 и 7, подобно тому, как рассматриваемый в гл. 8 БПФ-ал- горитм Винограда большой длины для поля комплексных чисел строится из БПФ-алгоритмов Винограда малых длин. Эти алго- ритмы полностью аналогичны, за исключением того, что по-раз- ному определяются константы умножения, связанные с различ- ным определением ядра со. В качестве примера построим 5-точечный БПФ-алгоритм Винограда в поле GF (213 — 1). Непосредственной проверкой мо- жно установить, что 3 является примитивным элементом поля GF (213 — 1); следовательно, порядок элемента З2*7*943 (что равно 4 794) равен 5. Далее, порядок элемента 1904 также равен 5, так как 1904 = (4794)3. Тогда 5-точечное преобразование Фурье в поле GF (218 — 1) имеет вид: 4 V„ = S (1904)%;, k = 0..........4. f=0 Сначала воспользуемся алгоритмом Рейдера для замены этого вычисления сверткой. Так как алгоритм Рейдера оперирует только с индексами компонент данных, то эта конструкция пол- ностью повторяет конструкцию для поля комплексных чисел. Этим задача сводится к вычислению циклической свертки s (х) = = g (х) d (х) (mod х4 — 1), в которой многочлен Рейдера равен g (х) = (со3- 1) X3 + (со4 — 1) X2 + (й)2 — 1) X + (со — 1) ~ и = ЗОО1Х3 — 1511х2 + 4793х 4- 1903 d (х) = ^х3 4- t^x2 4- vsx 4- tfi,
6.3. Числовые преобразования Мерсенна 201 S W = (У, — Уо) х3 + (У, - Уо) х2 + + (У» - Уо) X + (У, - У,). Теперь воспользуемся быстрым алгоритмом вычисления 4-то- чечной циклической свертки. Так как разложение многочлена х* — 1 в поле GF (2В * * * * 13 — 1) дается равенством х4 * * — 1 — (х — — 1) (х + 1) (х2 + 1), то этот алгоритм циклической свертки имеет тот же самый вид, что и для полей комплексных и вещест- венных чисел. Это позволяет воспользоваться выписанным на рис. 4.13 алгоритмом, интерпретируя арифметические операции как операции в поле GF (213 — 1). Итак, г°« |С. i 1 1 Г 1903 4793 Гб 142’ 2245 |Сг — J 1-2-2 2 - 1511 = 811 IG, 2 2-2-2 3001 2603 р._ 2 0 -2 0_ [1707 и 5-точечный БПФ-алгоритм Винограда записывается в виде в поле GF (218 — 1) В качестве второго примера рассмотрим поле GF (217 — 1), элементы которого записаны как 17-битовые представления це- лых чисел в обратном коде. Линейная свертка последовательно- стей 16-битовых целых чисел может быть вычислена как свертка в полеО/г(217— 1): здесь не происходит переполнения выходных компонент свертки. Для вычисления свертки можно воспользо- ваться БПФ-алгоритмами в поле GF (217 — 1) и теоремой о свертке. Длины преобразования Фурье в поле GF (217 — 1) исчерпы- ваются делителями числа 217 — 2, которые полностью определя- ются разложением 217 — 2 = 2-3-5-17-257. Можно выбрать, например, п = 510, и строить 510-точечное БПФ-преобразование из 2-точечного, 3-точечного, 5-точечного и 17-точечного БПФ- алгоритмов. Модули для 2-точечного, 3-точечного и 5-точечного преобразований очень просты и даются малыми БПФ-алгорит- мами Винограда. Хотя эти малые алгоритмы рассматриваются над полем GF (217 — 1), записываются они точно так же, как и в слу- чае поля комплексных чисел. 17-точечное преобразование тоже представляет собой простой модуль, но строится он другим способом. А именно, элемент 2
лиг ui. о. оычисления в суррогатных полях поля GF (217— 1) имеет порядок 17, так как 217 = 1. Следова- тельно, 17-точечное преобразование в этом поле задается равен- ствами 16 Ь = 2 2№vt, k = 0, ... , 16, ?=а и может быть вычислено с помощью одних циклических сдвигов и сложений. Умножения не нужны. Если необходимо вычислить свертку, длина которой больше 510, то надо использовать также множитель 257. 257-точечное преобразование Фурье с помощью алгоритма Рейдера сводится к 256-точечной циклической свертке, которая затем вычисляется с помощью БПФ-алгоритма Кули—Тьюки по основанию два и алгоритма свертки. 6.4. Алгоритмы свертки в конечных полях В полях Галуа вместо того, чтобы пользоваться преобразова- нием Фурье и теоремой о свертке, можно строить прямые методы вычисления свертки. Для построения алгоритмов свертки приме- нимы все описанные в гл. 3 методы. Другой путь построения пря- мых алгоритмов свертки состоит в модификации уже построенных алгоритмов свертки для поля вещественных чисел. Для преобразования алгоритма свертки, построенного для поля вещественных чисел, в алгоритм свертки в поле Галуа GF (q) характеристики р начнем с алгоритма свертки, записанного в виде s = C[(Ag).(Bd)L где А, В и С — матрицы с рациональными элементами. Умно- жим обе части равенства на наименьшее целое число L, такое, чтобы ликвидировать все знаменатели во всех компонентах; тогда равенство перепишется в виде Ls = C'[(A'g)-(B'd)l, где L — целое число и А', В', С' — целочисленные матрицы. Это равенство можно рассматривать как алгоритм вычисления целочисленной свертки; следовательно, его можно рассматривать и как уравнение по модулю р: Ls = С [(A'g) • (B'd)] (mod р). Если L Ф 0 (mod р), то, разделив обе части равенства на L по модулю р, получаем алгоритм свертки в GF (р), и, более того, алгоритм в любом расширении поля GF (р).
о.1*. Алгоритма свертки в конечных полях 203 Если L сравнимо с нулем по модулю р, то алгоритм свертки для поля вещественных чисел не переносится в поле Галуа, и надо строить такой алгоритм прямо в самом поле Галуа. Эта задача возникает даже тогда, когда L не равно нулю по модулю р, так как может оказаться, что алгоритм свертки, построенный спе- циально для данного поля Галуа, лучше алгоритма, перенесенного из другого поля. Для построения такого алгоритма можно поль- зоваться разработанными в гл. 3 методами; конечно, при этом требуетсЯ| чтобы разложение m(x) = mW (x)...mW(x) было разложением в том поле, в котором вычисляется свертка. В большей части данной главы мы будем интересоваться по- лями, характеристика р которых велика. Так как для таких по- лей L будет намного меньше р, то все алгоритмы свертки для поля рациональных чисел могут быть перенесены в GF (/?) и будут выглядеть точно так же. В оставшейся части этого раздела мы займемся противоположным случаем — случаем полей малой характеристики, или, еще конкретнее, случаем полей характери- стики два. Поля Галуа характеристики два играют важную роль в нескольких приложениях. Начнем с построения алгоритма 3-точечной циклической сверт- ки для полей характеристики два. В поле бесконечной характери- стики этот алгоритм записывается уравнением f (go + g, - 2g2)J [1 1-2 Ни один из знаменателей не кратен двум. Следовательно, алгоритм может быть перенесен в поля характеристики 2. Арифметикой целых чисел в полях характеристики два является арифметика по модулю два, так что .все целые числа равны нулю или единице. Соответственно новый алгоритм записывается в виде I 1 О 1 (g0 + g, + gj "1 | Г d(: 1110 (g0 + Sz) 1 0 1 rf, 1 0 1 ij (g, + gj Oil L (So + g.Jj b 1 o|
С другой стороны, алгоритм 2-точечной свертки содержит эле- 2 (i'o менты с четным знаменателем и, следовательно, не может быть I перенесен в поля характеристики два, так как знаменатели 1 обратятся в нуль. Лучший алгоритм 2-точечной циклической сверт- 3 ки в.полях характеристики два задается равенством - | и содержит три умножения. Причина необходимости трех умно- | жений кроется в том, что над полем QF (2) многочлен х2 — 1 не j разлагается в произведение двух взаимно простых множителей, 1 так как в полях характеристики два —1 — 1, и, следовательно, а х2 + 1 = (х + I)2; следовательно, в конструкцию алгоритма | в качестве модуля входит многочлен х2 + 1 степени два. 1 Такая ситуация, когда число умножений в конечном поле j больше числа умножений в рациональном поле, .встречается для 4 циклических сверток многих ,длин. Это происходит потому, | что несколько простых делителей многочлена хп — 1 оказываются 1 равными. С другой стороны, некоторые циклические свертки в по- Я лях конечной характеристики требуют меньше умножений, чем | свертки тех же длин в рациональном поле. Это происходит потому, | что круговые многочлены в конечных полях могут распадаться Л в произведение простых множителей. Например, над полем ра- а циональных чисел разложение на неприводимые множители мно- я гочлена х7 — 1 имеет вид | х7 - 1 - (х - 1) (хй + х5 + хф + х3 + х2 + х + 1), I а над полем характеристики два это разложение можно продол- жить: • j х’ — 1 = (х - 1) (х3 -Ь х + 1) (х3 + х3 + 1). J Следовательно, согласно выписанной в разд, 3.8 общей границе, j оптимальный (относительно числа умножений) алгоритм 7-то- j чечной циклической свертки над полем рациональных чисел дол- | жен содержать 12 умножений, а оптимальный алгоритм 7-точеч- ;] ной циклической свертки над полем характеристики два должен.-J содержать 1) умножений. Для первого случая известен хороший 1 с практической точки зрения алгоритм, содержащий 16 умноже- j ний, а для второго — хороший алгоритм с 13 умножениями.'!
t>.4. алгоритмы свертки в конечных палях 205 Последний алгоритм строится методами главы 3 и задается равен- ством . i i i i i i Л И П i i i I i Г] Такого сорта улучшения можно найти и в полях большей ха- рактеристики. Например, в поле GF (11) разложение на простые множители того же многочлена х7 — 1 имеет вид х7 — 1 = (х — 1) (х3 + 5Х2 + 4х — 1) (х3 — 4х2 — 5х — 1). Следовательно, в полях характеристики одиннадцать алгоритм вычисления 7-точечной циклической свертки содержит 11 умно- жений. Таким алгоритмом является В алгоритм входит только 11 умножений общего вида, но умножений на малые фиксированные константы (±2, ±3, ±4, ±5) он содержит достаточно много. Каждое из таких умножений можно заменить несколькими сложениями, но тогда мы получим' большое число сложений. Возможности улучшения этого алго- ритма и являются открытой задачей. Ее решение зависит от стоимости сложений и умножений. В достаточно больших расши- рениях поля GF (11п) умножения обходятся существенно дороже сложений, так что такой алгоритм может оказаться вполне при- годным. В простом поле GF (11), по-видимому, замена умножений сложениями не дает преимуществ.
6.5. Комплексная свертка в суррогатных полях В последних двух разделах мы видели, как свертку в ве- щественном поле можно вложить в поле Галуа, где ее удобнее вычислять. Теперь мы займемся этой же задачей для свертки комплексных чисел. В зависимости от наличия в поле GF (р) элемента /—1 здесь имеются два различных случая, которые приводят к совершенно разным действиям. Мы рассмотрим только два класса простых чисел: простые числа Мерсенна и простые числа Ферма. В случае простых чисел Мерсенна поле GF (р) не содержит элемента У—1; в случае простых чисел Ферма элемент у/ —Л принадлежит полю GF (р). Мы будем рассматривать лишь эти два класса простых чисел, но к любому другому простому числу можно применить один из этих методов. Мы начнем с простых чисел Мерсенна, р = 2т — 1, где т — нечетное простое число. Эго поле не содержит элемента у7—1. Расширим поле GF (2,п — 1) до поля GF ((2т — I)2) подобно тому, как поле вещественных чисел R расширяется до поля комп- . лексных чисел С. Тогда преобразование Фурье в поле GF ((2т — — I)2) можно использовать для вычисления свертки в поле комплексных чисел. В поле вещественных чисел многочлен х2 4~ 1 не имеет корней. Обозначим через / некоторый новый элемент и присоединим его к полю вещественных чисел, образуя множество С = {я + bj}f где а и b — вещественные числа, а сложение и умножение за- ' даются правилами j (а 4- Ь/) + (с 4- dj} = (а 4- с) 4“ (b d} j, J (а 4- bjj (с 4- dj} = (ас — bdj 4- (ad 4- be} j. Легко проверить, что это множество образует поле. Аналогично, в поле Галуа GF (2т — 1) многочлен Xs 4- 1 не имеет корней. Расширим это поле, присоединив к нему некоторый \ обозначаемый через / элемент и сформировав множество GF ((2т — 1 — I)2) — |а 4- bj\, где а и b — произвольные элементы поля ; GF (2т— 1). Сложение и умножение опять зададим правилами J (а + bj) + (с + dj) - (а + с) + (b + d) /, (а 4- &/) (с 4- dj} = (ас — bd) 4- (ad 4- be} jt | где операции справа являются операциями в исходном поле 1 GF (2т — 1). Легко проверить, что такое определение задает полв| | содержащее (2я1 — I)2 элементов. ] Подытожим сказанное в виде двух теорем. 1
б.Ь. Комплексная свертка в суррогатных полях 207 Теорема 6.5.1. Если 2т— 1 — простое число Мерсенна, то поле. GF (2т — 1) не содержит среди своих элементов квадратного корня из —lj следовательно, многочлен х2 4- 1 не имеет в этом поле корней. Доказательство отложим до конца раздела. Теорема 6.5.2. Относительно определенных выше операций сло- жения и умножения множество GF ((2т — I)3) образует поле. Доказательство. Утверждение вытекает непосредственно из того, что многочлен х2 + 1 прост. □ Теперь рассмотрим преобразование Фурье в поле GF ((2™ — — I)2). Длина преобразования равна (2m — I)2 — 1 или делит это число. Так как имеет место разложение (2т — I)2 — 1 = = 2т+1 (2т~1 — 1), то возможной длиной преобразования Фурье в поле GF ((2т — I)2) является 2m+1, и тогда это преобразование можно вычислять с помощью БПФ-алгоритма Кули—Тьюки по основанию два. Другие возможные длины преобразования Фурье задаются делителями числа 2т~1—1. Выберем, например, т = 17. Тогда (217 — I)2 — 1 = 218 X X 3-5-17-257. В качестве длины преобразования можно взять любую степень двойки вплоть до 218, а большие длины получа- ются присоединением остальных делителей. Пусть п делит 219 и пусть п-1 Кь == 2 k = 0, ... ? п — I, t=a где со— элемент поля GF ((21*—I)2)' порядка п. (В табл. 6.1 приведены найденные на ЭВМ соответствующие элементы со.) Так как п равно некоторой степени двух, то для вычисления преоб- разования Фурье можно воспользоваться БПФ-алгоритмом Кули— Тьюки по основанию два. Возможности выбора длины преобразования Фурье в поле GF ((217 — I)2) существенно шире, чем в поле GF (217 — 1); в част- ности, это относится к длинам, равным степени двойки. Поэтому для вычисления циклической свертки в GF (217 — 1) можно перейти в поле GF ((217 — I)2), рассматривая исходную свертку как свертку целых чисел поля GF ((217— I)2). В случае, когда р является простым числом Ферма, у7"—1 явля- ется элементом простого поля, и построение расширения GF (р2) с операцией умножения, аналогичной умножению в поле комплекс- ных чисел, невозможно. Действительно, для р = 2т + 1, где т равно степени двух, возведением в квадрат легко убедиться, что
t J(2”
b.o. Комплексная свертка в суррогатных полях 209 у—I = 2т/4 (2'”;2 — 1). Для вычисления свертки s (х) = = g (х) d (х), где g (х) = gR (х) + jg, (х) и d (х) = dR (х) + /d, (х), приходится вычислять четыре свертки gH (х) dR (х), gR (х) d; (х), gi (х) dR (х) и gI (х) d, (х) и пользоваться равенствами Sr (х) = gB (х) dR (х) - gr (х) d; (х), si (х) = gR (х) 4 (х) + gt (х) dR (х). Лучшая процедура, содержащая вдвое меньше умножений, осно- вана на определении в кольце GF (р) [х]/(хп—1) многочленов а (х) = - j- (g« (х) ~ 2т/& (х)) (4 (х) - 2m/2 d, (х)), Ъ (х) = -1- (gH (х) + 2mJzg1 (х)) (dB(x) + 2m/2dr (x)), для вычисления которых надо сделать только две свертки. Все вычисления проводятся в кольце GF (р) [х]/(хп — l)s и свертка s (х) вычисляется по правилу Sb - = (а (х) -F b (х)), S{ (х)' = 2m/2 (а (х) b (х))\ Для завершения раздела нам осталось провести доказательство теоремы 6.5.1. Оно достаточно длинно и опирается на понятие квадратичного вычета. Те элементы простого поля GF (р), для которых в этом поле существуют квадратные корни, называются квадратичными вычетами (поскольку по модулю р они равны квад- ратам своих квадратных корней). Если р нечетно, то ровно поло- вина элементов поля GF (р) имеют квадратные корни. Чтобы это показать, заметим сначала, что каждая четная степень примитив- ного элемента а имеет квадратный корень. С другой стороны, каж- дый элемент, равный квадратному корню, может быть записан в виде а1 для некоторого i, так что его квадрат равен где двойные скобки в показателе степени использованы для обозна- чения того, что вычисления проводятся по модулю р — 1, так как мультипликативная группа поля является циклической по- рядка р — 1. Но число р— 1 четно, и, следовательно, ((2/)) также четно. Таким образом, только четные степени элемента а могут иметь квадратный корень. Теорема 6.5.3. Для нечетных р в поле GF (р) элемент г яв- ляется квадратичным вычетом тогда и только тогда, когда rtp-D/Z— j. Доказательство. Предположим, что 1. Тогда У г не может существовать в данном поле, так как в противном случае
21U 1л. t>. Вычисления в суррогатных полна должно бы было выполняться равенство (/"г)^1 = 1} которое не выполняется. Предположим, что г(₽'“О/2= 1, и пусть сс — примитивный эле- мент поля GF (р). Очевидно, что все четные степени элемента а являются квадратичными вычетами, а все нечетные степени эле- мента а квадратичными вычетами не являются. Надо только по- казать, что г равно четной степени элемента а. Допустим против- ное: г = а2*+ь тогда, так как порядок элемента а равен р — 1, имеем (р-1)/2 _ / 2/+IVP-D/2 __ i (Р-I) (P-D/2 _ „(Р-О/2 , < Г — I — U> 1Л — W, 1. Таким образом, из равенства r(p-I)Z2= I вытекает, что г равно четной степени элемента а и, следовательно, является квадратич- ным вычетом. □ Теперь у нас уже все готово для доказательства теоремы 6.5.1. Теорема 6.5.1. Элемент —1 поля GF (2т — 1), где 2т — 1 — простое число Мерсенна, не имеет в этом поле квадратного корня. Следовательно, многочлен х2 + 1 не имеет в этом поле корней. Доказательство. Предположим, что —1 имеет квадратный ко- рень, равный г. Тогда г2 = —1 и, согласно теореме 6.5.3, Fp~1)/2 — = 1. Так как р = 2т — 1, то /2 ~2^2 = 1 или г2 r“l = 1. Но г2 — —1 и т — 1 четно. Следовательно, г2 = 1 и г-1 = 1. Но тогда г2 не равно —1. Полученное противоречие показывает, что в данном поле не существует квадратного корня из —1. □ 6.6. Преобразования в числовом кольце Если поле F содержит элемент порядка п, то в этом поле сущест- вует преобразование Фурье длины п. Если преобразование Фурье существует, то оно обладает всеми элементарными свойствами такого преобразования. Часто возможно также определить преобразование в кольце, но при этом ситуация не является столь простой. В настоящем разделе рассматриваются преобразования в кольце 2/(?) целых чисел по модулю q. Если q — простое число, то z/(.q) является полем, и, как мы уже видели, в нем существует преобразование Фурье со всеми его основными свойствами. Поэтому надо рассмо- треть только случай составного числа q. Как мы увидим, даже для составных q можно дать осмысленное определение преобразования Фурье. Однако структура этих преобразований представляет со- бой точную копию преобразований Фурье для простых делителей' числа q, так что переход к составному q прибавляет мало возмож- ностей.
o.o. i хреооразозания в числовом кольце 211 Мы хотим определить в целочисленном кольце преобразование п—I Vh ~ S (aikVi, k = 0, ... , п — 1, г=о вектора v над кольцом Z/(<?) так, чтобы существовало обратное преобразование = п^ 2 (o~ik VA, i = 0, ... , п ~ 1, fe=O и была справедлива теорема о свертке. Для того, чтобы такое опре- деление преобразования Фурье было возможным, необходимо выполнение двух условий: (1) должен существовать элемент <о порядка п; (2) элемент п в кольце Z/(<7) должен быть обратимым. Нужна, конечно, еще и обратимость элемента <о, но из условия = 1 автоматически следует, что со-1 — <оя~1. Итак, надо определить те значения п, для которых существует элемент со порядка п. Начнем с простейшего случая q, равного сте- пени простого нечетного числа р, q = рт. Кольцо zl{pm) не об- разует поля, так как его умножением является умножение по модулю рт. Согласно теореме 5.1.8, в этом кольце имеются эле- менты порядка {р— 1) рт~\ и согласно теореме 5.1.5 (теореме Эйлера), порядок каждого взаимно простого рт элемента делит (р — l)pm_1. Согласно этому условию, для каждого делителя п числа (р— 1) р"1'1 можно выбрать элемент со порядка п. Однако теорема 5.2.2 утверждает, что число п обратимо тогда и только тогда, когда п и рт взаимно просты. Следовательно, п не может делиться на р. Таким образом, в качестве ш можно выбрать только элементы, порядок которых п делит р — 1. Следующая теорема показывает, что для каждого такого п существует соответствующее преобразование Фурье. Однако длины такого преобразования в Zl(pm) в точности совпадают с теми длинами, которые допустимы для преобразования Фурье в поле GF (р). Изменения' касаются только разрядности используемых чисел, которая увеличивается примерно с log2 р до т log2 р. Но обычно разрядность является достаточно большой и для преобразований в поле GF (р), что еще больше уменьшает преимущества перехода к Z 1{рт). , Ситуация для произвольного q аналогична и описывается следующей тоеремой. Теорема 6.6.1. Обратимое преобразование Фурье длины п над кольцом Z/(q} существует тогда и только тогда, когда п делит р — 1 для всех простых делителей р числа q. Доказательство. Сначала мы приведем доказательство для случая, когда q равно степени простого числа. Затем используем
1Л, о. вычисления в суррогатных полях китайскую теорему об остатках, чтобы связать этот случай со случаем произвольного числа q. Проще всего доказывается обратная часть теоремы. Длина п преобразования обратима, только если п. и q взаимно просты, так как nn~l = 1 4- Qtj, и, следовательно, любой делитель чисел п и q должен быть и де- лителем единицы, так что он должен равняться единице. Далее, теорема 5.1.5 утверждает, что если порядок п элемента (о вза- имно прост с q, то он делит <р (q) = (р — 1) рт~1. Следовательно, преобразование Фурье в кольце 21(рт) существует только на длинах п, которые делят- р— 1. Теперь докажем прямое утверждение теоремы. Полагать р равным 2 смысла нет, так как тогда п равно 1 и утверждение три- виально. Следовательно, р — нечетное простое число и согласно теореме 5.1.8 существует элемент л порядка (р — 1) Для любого делителя b числа р — 1 положим ю = л ; тогда по- рядок элемента w равен (р — 1)/Ъ. Таким образом, для любого делителя b числа р — 1 имеется элемент ш этого порядка, и остается доказать существование обратного преобразования Фурье. Для этого запишем л—1 л—1 л—I ~2ш~'ч'‘;'т2с,г“ 2®'’^' Л=0 А=0 Г-0 п-I Гп— 1 l'=Q Если Г = I, то сумма по k равна п. Для I I' имеем 2(»-,''-,,)‘ = й=0 l-e-U'-O» Так как оба индекса i и i' меньше ли /' —i =£ 0 (mod л), то вы- ражение справа равно нулю. Таким образом. п—1 л—1 v2“_“K‘=4'2t’,'(',e''')=v'’ • г=о что и требовалось доказать. , , от, т т Теперь предположим, что q = pi р?а ... рг . Воспользуемся китайской теоремой об остатках и алгоритмом Гуда—Томаса для/
о./, числовые преобразования Шевилла 213 отображения кольца z/(q) в прямое произведение z/(p?‘) х X z/(p22) X... X Z/(p?r). Условия существования преобразо- вания Фурье в кольце z/(<?) связаны с условиями существования преобразований Фурье в каждом из z/(p г *)» так что условие де- лимости pi — 1 на п должно выполняться для всех £.□ По-видимому, описываемое теоремой 6.6.1 преобразование Фурье в целочисленном кольце Z/(q) при составном q может иметь весьма ограниченные приложения. Тем не менее они могут в, не- которых специальных случаях оказаться весьма подходящими. Рассмотрим, например, разложение 240 + 1 = (257) (4278255361) - р^. В кольце z/(240 4- 1) существует преобразование Фурье длины 256, так как 256 делит и pt — 1 и р2 — 1. Это преобразование при разрядности чисел в 41 бит обеспечивает точность вычисле- ний в 40 бит. Кольцо допускает БПФ-алгоритм Кули—Тьюки по основанию два. Арифметика переполнения легко учитывается равенством 240 = —1. Элемент 2 нельзя в этом случае использо- вать в качестве ядра преобразования, так как порядок 2 равен 80, а порядок ядра должен быть равен 256. Следовательно, умножения не могут быть реализованы в виде циклических сдвигов, а явля- ются умножением 40-битовых чисел общего вида. Таким образом, такая конструкция приводит к процедуре 256-точечной цикличе- ской свертки, содержащей примерно 256 + 256Jog2 256 умноже- ний общего типа для 40-разрядных двоичных чисел с точностью в 40 битовых разрядах. По сравнению с комплексным БПФ-ал- горитмом для 40-разрядных двоичных чисел эта процедура явля- ется и более точной и содержит меньшее число умножений. 6.7. Числовые преобразования Шевилла Числа Шевилла (как правило, простые, но не всегда) в нестро- гом определении задаются как числа q, для которых в кольце z/(qj существует преобразование Фурье по одному основанию для' больших длин преобразования. Числа Шевилла связаны только с хорошими преобразованиями Фурье и не имеют специального теоретико-числового значения. Таблица этих чисел, построен- ных с помощью ЭВМ, приведена на рис. 6.3. Если элемент со кольца Z/(q) имеет порядок, равный степени малого простого числа, то преобразование Фурье П—I Vk = 2 k — 0, ... , п — 1, i— о
zi*t 1л. о. оычисления в суррогатных полям в этом кольце удобно вычислять с помощью БПФ-алгоритма Ку- ли—Тьюки по одному основанию. В приведенной на рис. 6.3 таблице для каждого q указан порядок, определяющий длину пре- образования п, равную степени малого простого числа. Длина слова Ч зтвелтибнао длина Максимальная преовраяаваная Максимальная длина б пФ по одному основанию 8 163 162 81 193 7.6 192 64 197 7.6 196 49 241 7 9 240 16 251 8 0 250 125 9 257 8 0 256 256 401 8.6 400 25 449 8 8 448 64 487 8 9 486 243 491 8 9 490 49 10 751 9.6 750 125 769 9.6 768 256 883 9 8 882 49 919 9.8 918 27 929 9.9 928 32 1009 10.0 1008 16 а 13’3 104 1372 343 1409 10 5 1408 128 (459 10.5 1458 729 14’1 10 5 1470 49 (601 10.6 1600 м 1783 108 1782 81 1951 (0 9 1950 25 1999 11.0 1998 27 2017 11 0 2016 32 12 29(7 115 29J6 729 3329 11 7 3328 256 3457 11.8 3456 128 3889 11 9 3888 243 4001 12.0 4000 32. 125 4019 12.0 4018 49 4049 12.0 4048 16 4051 12 0 4050 81, 25 5347 12 4 5346 243 7001 12 8 7000 (25 7547 12.9 7546 343 7681 12.9 7680 5J2 7841 12.9 7840 49 7937 13.0 7936 256 8101 13.0 8100 81. 25 8161 13.0 8160 32 Рис. 6.3. Таблица алгоритмов Шеэилла для преобразовав
6.7. Числовне преобразования Шенилла 215 Длина слаба Я длина слава Максимальная блина преобразование Максимальная длина 5П9 ПО одному основанию 14 8263 13.0 8262 243 13751 13.7 13750 625 14407 13.8 14406 2401 15361 13.9 15360 1024 16001 14.0 16000 128, 125 16073 14.0 16072 49 16193 14.0 . 16192 64 16301 14.0 16300 25 16363 14.0 16362 81 16369 14.0 16368 16 15 17497 14.1 17496 2187 18433 14.2 18432 2048 2560! 14.6 25600 1024 28751 14.8 28750 625 28813 14.8 28812 2401 30871 14.9 30870 343 32077 15.0 32076 729 32251 15.0 32250 125 32257 15.0 32256 512 32401 15.0 32400 25 32537 15.0 32536 49 32563 15.0 32562 243 32609 15.0 32608 32 32689 15.0 48 16 16 39367 15.3 39366 19683 40961 15.3 40960 8192 52489 15.7 52488 6561 61441 15.9 61440 4096 62501 15.9 62500 15625 63001 15.9 250 125 64153 16.0 64152 729 64513 16.0 64512 1024 65089 16.0 65088 64 65101 16.0 65100 25 65171 16.0 65170 343 65269 16.0 65268 49 65281 16.0 96 32 65449 16.0 65448 81 65521 16.0 65520 16 Фурье по одному основанию.
216 Гл. 6. Вычисления в суррогатных полях Для вычислений в кольце z/(?) необходимо знать вычеты по модулю q, которые в общем случае вычисляются не столь просто, как в случае простых чисел Ферма или Мерсенна. Это является одним из основных недостатков числовых преобразований Ше- вилла; возможным выходом является предварительное вычисление и табулирование вычетов по модулю простых чисел. 6.8. Алгоритм Препараты—Сервейта Так же как вычисления в поле комплексных чисел вкладыва- ются в поля Галуа, вычисления в полях Галуа можно вложить в поле комплексных чисел. Для вычисления свертки в GF (д) можно воспользоваться комплекснозначным БПФ-алгоритмом. Предположим, что в поле GF (7), где q равно степени простого числа р, требуется вычислить произведение s (х) = g (х) d (х). Представим элементы поля GF (q) в виде многочленов; тогда произведение элементов поля в GF (q) можно интерпретировать как свертку многочленов по модулю неприводимого многочле- на р (х). Вычисление всех вычетов по модулю этого неприводи- мого многочлена можно отложить до тех пор, пока не будут вычислены все свертки. Исходная свертка при этом превращается в двумерную свертку. Запишем элементы gt и dt поля GF (qj над простым полем GF (р) в виде многочленов I gi = Е gitz‘ и dt = s duZ1, где q = pm, a gn и du обозначают неотрицательные целые числа, не превосходящие р — 1. Тогда линейная свертка векторов g и d равна ft—г si = S gkdi-ь = д=о = Е S S (modp) (modp (x)), l=Q r=Q где p — характеристика поля, a p (x) — простой многочлен сте- пени tn. Определим двумерную целочисленную свертку равенство^ вх-1 i — 0, ... , п — 1, sir = S 2j gkk^d^k) (r-w, ft _ п 9™ _ 1 i k=o k‘=o i — u, — 1.
Задачи 217 Каждый элемент такой двумерной таблицы представляет собой число между 0 и р — 1. Тогда 2m—1 st — sh'Z{ (modp) (modp(x)). Вычисления вычетов делаются на последнем этапе вычислений, причем сначала вычисляются вычеты целых чисел по модулю р, 2m—1 а затем вычеты многочленов st (г) = У sn>zl по модулю много- i’=0 члена р (х). Сложностью вычисления вычетов можно пренебречь по сравнению со сложностью вычисления двумерной свертки. Двумерную свертку можно вычислять в любом подходящем сурро- гатном поле, например в поле вещественных или поле комплекс- ных чисел. Вместо поля комплексных чисел можно использовать как сур- рогатное поле любое подходящее конечное поле, даже с харак- теристикой, отличной от характеристики исходного поля. На- пример, для свертки последовательностей над GF (2), длина п которых меньше, чем половина простого числа Ферма 2т + 1 (при т ~ 2, 4, 8, 16 соответственно 2п + 1 = 5, 17, 257, 65537), можно использовать поле GF (2™ 4- 1). Для этого доста- точно проинтерпретировать последовательность над GF (2) как последовательность целых чисел, которые принимают только зна- чения, равные 0 и 1. Длина линейной свертки таких целочисленных последовательностей, хотя и больше п, но не превосходит 2т, и, следовательно, эту линейную свертку можно вычислять как цик- лическую свертку в поле GF (2т 4- 1) с последующим приведе- нием целых чисел по модулю 2. Для вычисления циклической свертки в поле GF (2т 4- 1) можно воспользоваться любым допустимым быстрым алгорит- мом. Так как в поле GF (2т 4- 1) существует преобразование Фурье длины п, равной любому делителю числа 2т, то одной из возможных схем вычислений является использование преобразо- вания Фурье и теоремы о свертке. Преобразование Фурье при этом можно вычислять по БПФ-алгоритму Кули—Тьюки, содер- жащему (n/2) log2 п умножений, и столько же сложений в поле GF (2т 4- 1). Далее, так как элементы поля GF (2т 4- 1) допу- скают запись в виде (т 4- 1)-разрядных двоичных чисел, то слож- ность такого алгоритма свертки сравнима со сложностью в поле комплексных чисел. Задачи 6.1. а. Построить логические схемы, реализующие операции умножения и сло- жения в поле Мерсенна GF (7). Позволяет ли представление 0 в двух видах получить какое-то преимущество?
218 Гл. 6. Вычисления в суррогатных полях б. Построить логические схемы, реализующие операции умножения и сло- жения в поле Ферма GF (5). Позволяет ли представление чисел 0, 1 и 2 получить какие-то преимущества? 6.2. а. Проверить, что если ядро преобразования Фурье в поле GF(2?m -f- 1) равно 2, то все необходимые умножения на самом деле являются умноже- ниями на степени двойки и могут быть заменены циклическими сдвигами, б. Элемент to = 8 в поле GF (193) имеет порядок, равный 32, и, следова- тельно, может быть выбран в качестве ядра 32-точечного преобразования Фурье в этом поле. Можно ли как-то осмысленно утверждать, что все умно- жения такого преобразования являются умножениями на степени двойки и могут быть заменены циклическими сдвигами? 6.3. Порядок элемента 2 в кольце Z/(15) равен четырем. Выписать (4Х ^-ма- трицы 4-точечного преобразования Фурье и ему обратного преобразования. Показать, что эти матрицы не ведут себя стандартным для матриц преобра- зования Фурье образом. Какие свойства оказываются неверными? Почему? 6.4. а. Чему равен порядок элемента 2 в простом поле Ферма GF (17)? б. Описать 8-точечный БПФ-алгоритм Кули — Тьюки по основанию два для поля GF (17). Сколько умножений содержит этот алгоритм? в. Описать 4-точечный БПФ-алгоритм Кули — Тьюки по основанию два, ядром которого является элемент 4. г. В поле GF (17) имеет место равенство V2 = 11. Является ли II при- митивным элементом поля? Описать 16-точечный БПФ-алгоритм Кули — Тьюки для поля GF (17) с минимальным числом умножений. 6.5. Пусть q — (2§ + 1) (216-)- 1). Чему равен порядок элемента 2 в кольце Z/(?)? 6.6. Число 31 является простым числом Мерсенна. а. Чему равен порядок элемента 2 в поле GF (31)? б. Выписать 5-точечный БПФ-алгоритм Винограда в поле GF (31). в. В поле GF (31) элемент —1 не имеет квадратного корня. Чему равен порядок элемента 1 + / в расширении GF (31а) поля? г. Чему равна наибольшая допустимая длина преобразования Фурье в поле GF (312)? д. Описать структуру 8-точечного БПФ в поле GF (31s). 6.7. Показать, что порядок элемента 1 + J в поле комплексных чисел Мер- сенна GF ((21?—I)2) равен 136. Это означает, что в данном поле существует преобразование Фурье длины 136. Описать структуру быстрого алгоритма вычисления этого преобразования. 6.8. Построить 5-точечный БПФ-алгоритм Винограда для поля GF (41). (Ука- зание: чему равен порядок элемента 2 в поле GF (41)?) 6.9. В поле GF ((217—I)2) существует 17-точечное преобразование Фурье. а. Описать алгоритм вычисления этого преобразования с помощью 26-то- чечного преобразования Фурье в поле комплексных чисел. Выписать блок- схему такого вычисления. б. Сколько потребуется вещественных умножений и сложений, если 16-то- чечное преобразование Фурье в поле комплексных чисел вычислять с по-, мощью малого БПФ-алгоритма Винограда? в. Каковы должны быть разрядность и процедура округления для того', чтобы комплексные вычисления приводили к правильному ответу в пол GF ((217—I)2)? 6.10. В поле комплексных чисел имеется 17-точечное преобразование Фуры а. Описать, как это преобразование может быть вычислено с помощь: двух 16-точечных преобразований в поле комплексных чисел Мерсенн! б. Сколько умножений и сложений в суррогатном поле потребуется пр таком вычислении? 6.11. а. Показать, что многочлен х92 — 1 имеет в поле GF (2Ie4- 1) 32 ра: ных корня.
Замечания 219 б. Сколько умножений общего типа содержит 32-точечный алгоритм Вино- града вычисления циклической свертки в расширении GF ((21в + 1)'”) поля OF (21® -Ь 1)? в. Сколько умножений общего типа требуется для вычисления 32-точечноЙ циклической свертки в GF ((21® -j- I)2) при использовании БПФ и теоремы о свертке? г. Объяснить взаимосвязь между п. (б) и (в) задачи. 6.12. ..Выпишите детально 16-точечный БПФ-алгоритм Винограда для поля GF (17) и его расширений. Сколько требуется нетривиальных умножений? Замечания Преобразования Фурье рассматривались в произвольных полях, но тот факт, что вещественную свертку можно вычислять, переходя в поле целых чисел по модулю простых чисел Мерсенна или простых чисел Ферма, впервые отметил Рейдер [1] (1972). Это погружение было разработано им в связи с приложением к цифровой обработке сигналов, как существенно упрощающее необходимые вычисления. Агарвал и Баррас [2] (1973) также описали применение числовых преобразований Ферма и разработали их структуру [3, 4] (1974, 1975). Ше- вилла [11 ] (1978) рассмотрел возможности использования других простых полей. Некоторые вопросы реализации этих числовых преобразований были рассмотрены Макклелланом [5] (1976) и Лейбовицем [6] (1976). Предложение использовать комплексные расширения полей Галуа для вычисления комплексных сверток сделали Рид и Труонг [7] (1975) и Нуссбаумер [8] (1976). Приведенная нами табл. 6.1 основана на работе Рида и Труонга. Алгоритмы свертки в полях Галуа малой характеристики могут отличаться от алгоритмов свертки в поле вещественных чисел. Алгоритмы свертки в полях малой характеристики рассмотрел Райс [9] (1980), и мы воспользовались не- которыми его примерами. Идея использования суррогатных полей принадлежит Препарате и Сервейту [10] (1977), Которые вложили вычисление свертки в полях Галуа в поле комплексных чисел. Использование китайской теоремы об остатках для представления данных (в противоположность использованию для переупорядочивания индексов) хорошо известно; можно сослаться на учебник Сабо и Танаки [12] (1967) или более не- давнюю работу Дженкинса и Леона [13] (1977).