/
Author: Акритас А.
Tags: алгебра вычислительная математика численный анализ математика монография естественные науки компьютерная алгебра
ISBN: 5-03-002016-0
Year: 1994
Text
Elements of
Computer Algebra
with Applications
Alkiviadis G. Akritas
University of Kansas
WILEY
A WILEY-INTERSCIENCE PUBLICATION
JOHN WILEY & SONS
New York • ChlchMUr • Brisbane • Toronto • Singapore
А.Акритас
Основы
компьютерной алгебры
с приложениями
Перевод с английского
Е.В. Панкратьева
Москва «Мир» 1994
BBK 22.14+22.19
А38
УДК 512+519.6
Акритас А.
А38 Основы компьютерной алгебры с приложениями: Пер. с
англ. — М., Мир, 1994. — 544 с, ил.
ISBN 5-03-002016-0
Монография американского специалиста описывает введение в
компьютерную алгебру, основные результаты и приложения. В ней
содержится материал, дополняющий литературу на русском языке
по данной тематике: вычисление полиномиальных остатков, нахож-
нахождение корней многочленов с высокой точностью и др. Изложение
иллюстрируется большим числом примеров, дается много задач для
¦ самостоятельного решения.
Для разных специалистов, занимающихся разработкой и реализа-
реализацией алгоритмов компьютерной алгебры, для аспирантов и студентов
университетов.
ББК 22.14+22.19
Издание осуществлено при финансовой поддержке
Российского фонда фундаментальных исследований
согласно проекту 94-01-01322
Редакция литературы по математическим наукам
ISBN 5-03-002016-О(русг.к.)
ISBN 0-471-61163-8(англ.)
© John Wiley k Sons, Inc. 1989
All Rights Reserved
Authorized translation from
English language edition published
l>y John Wiley k, Sons, Inc.
(?) 11<ф<>нод на русский язык,
Панкратьев Е.В., 1994
ОТ ПЕРЕВОДЧИКА
Компьютерная алгебра является одной из областей математи-
математики и информатики, особенно активно развивающейся в последние
годы. Усилия специалистов в этой области направлены как на
разработку новых алгоритмов, так и на создание систем компью-
компьютерной алгебры, которые все шире используются и в научных
исследованиях, и в практических приложениях. Полученные ре-
результаты находят отражение не только в периодической печати,
но и в монографиях, опубликованных в последние годы.
В монографии американского ученого греческого происхож-
происхождения А. Акритаса наряду с фундаментальными результатами
в области компьютерной алгебры рассматриваются ее приклад-
прикладные аспекты, в частности теория кодирования. Автор уделяет
большое внимание историческим исследованиям, касающимся рас-
рассматриваемых проблем; он от дает, должное как древнегреческим
математикам, так и ученым сравнительно недавнего прошлого,
в частности Доджсону, более известному современному читате-
читателю под псевдонимом Льюис Кэрролл. Особо следует отметить
большое количество задач, приведенных в книге, что позволяет
весьма успешно использовать ее в учебном процессе. Собствен-
Собственно, книга появилась на свет в результате преподавания автором
в течение ряда лет курса компьютерной алгебры в Канзасском
университете.
Во время пребывания автора в Московском университете в
1990 г. в качестве стипендиата Фонда Фулбрайта и моего пребы-
пребывания в таком же качестве в Канзасском университете в 1993 г.
мы подробно обсуждали различные разделы книги. Автор пре-
предоставил для русского издания список замеченных опечаток и, что
особенно ценно, обширный список дополнительных задач, за что
я пользуюсь случаем выразить ему глубокую благодарность. Не-
Некоторые доказательства по сравнению с английским оригиналом
изменены, сделаны более короткими или более строгими.
Пользуюсь случаем выразаить мою глубокую благодарность
В.В. Борисенко, выполнившему перевод гл. 2.
Надеюсь, что данная книга будет представлять интерес для
широкого круга читателей, как для разработчиков алгоритмов
и систем компьютерной алгебры, так и для многочисленных
пользователей, применяющих системы компьютерной алгебры в
своей работе.
Е.В. Панкратьев
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ
Мне доставляет большое удовольствие быть свидетелем воз-
возрастающего интереса к компьютерной алгебре во всем мире и
особенно в бывшем Советском Союзе. Мне посчастливилось про-
провести весенний семестр 1990 г. в МГУ в качестве фулбрайтского
стипендиата, и я встречался лично и установил деловые контакты
с большинством моих советских коллег. Их энтузиазм, результаты
и возможности дальнейшего вклада в рассматриваемую область
впечатляют, и я надеюсь, что данная книга принесет некоторую
пользу в этом деле. Я хотел бы воспользоваться случаем побла-
поблагодарить тех из моих русских коллег, кто своим конструктивным
критицизмом способствовал улучшению этого издания.
Алкивиядис Г. Акритас
ПРЕДИСЛОВИЕ
Памяти моего отца
Компьютер прежде всего является устройством для обработ-
обработки информации, а что представляет из себя эта информация —
не столь важно. Компьютеры нужно было «научить» выпол-
выполнять арифметические операции, чтобы они стали «переваривать»
числа. Деловой мир породил текстовый процессор, который
«переваривает» слова. А теперь существует и возможность «пе-
«переваривать» символы — компьютерная алгебра. Имея дело в
основном с точными числами и алгебраическими выражениями
в их символьном представлении, системы компьютерной алгебры
могут помочь ученым лучше представить себе изнутри различные
рассматриваемые физические явления.
Компьютерная алгебра отличается от численного анализа, где
упор делается на ошибки, которые могут появиться при выполне-
выполнении некоторого алгоритма. Эти ошибки, усечение и округление,
возникают из-за использования арифметики с плавающей точкой
одинарной и двойной точности. В общем, чем меньше итоговая
ошибка, тем лучше алгоритм.
Начиная с 1960 г. было разработано много программных систем,
предназначенных для различного рода символьных вычислений;
эффективность и возможности этих систем постоянно возрастают
и в будущем можно ожидать расширения их использования. Опе-
Операции над полиномами и рациональными функциями составляют
основу любой системы символьных преобразований, поэтому ис-
исследования в этой области включают в себя развитие и анализ
эффективных алгоритмов для разложения на множители, вычис-
вычисления наибольших общих делителей и отделения вещественных
корней полиномов.
Компьютерная алгебра включает в себя большое количество
различных тем, а поскольку она до настоящего времени находится
в стадии развития, к имеющемуся списку тем постоянно добавля-
добавляются новые. В книге нашли отражение только те темы, которые
автор считает «классическими», которые можно использовать как
справочное пособие для исследователей и в качестве руководства
при обучении численным методам, информатике или математике.
Поскольку в курсах численного анализа и компьютерной алгебры
существует очень мало общих тем (если таковые вообще имеют-
имеются), эта книга может послужить основой курса, дополнительного
или альтернативного курсу численного анализа.
8 Предисловие
При преподавании математики, с одной стороны, эта книга
дает прекрасное средство обучения как теории, так и приложени-
приложениям алгебры и эффективного соединения традиционной алгебры с
информатикой. С другой стороны, студент, специализирующийся
в области информатики, изучая компьютерную алгебру, исполь-
использует большое число понятий, освоенных в предыдущих курсах, и
осознает красоту работ некоторых гигантов-математиков преды-
предыдущих столетий (Галуа, Гензеля, Лагранжа, Штурма, Сильвестра
и Винсента, если перечислить лишь немногих из них), чей фунда-
фундаментальный подход к вычислениям не может уложиться в рамки
численного анализа, но весьма напоминает то, что современ-
современные исследователи пытаются сделать, используя компьютерную
алгебру.
Основные результаты, впервые опубликованные в этой книге
A) Лучшая версия метода вычисления субрезультантных по-
последовательностей полиномиальных остатков, разрабо-
разработанная автором в 1986 г. на основе статьи Сильвестра
(Sylvester, 1853).
B) Показаны значимость теоремы Бюдана и ее связь с тео-
теоремой Фурье.
C) Самый быстрый из существующих методов отделения ве-
вещественных корней полиномиального уравнения, разрабо-
разработанный автором в 1978 г. на основе теоремы Винсента
(Vincent, 1836).
Чего нет в этой книге
В этой книге главное — не доказательства; доказательства
включены только в тех случаях, когда они помогают лучшему
пониманию материала или их можно найти лишь в научных
журналах. Эта книга и не о структурах данных; на ее основе
может быть разными способами выполнена реализация различных
алгоритмов, описанных в ней, но это оставлено преподавателю и
изобретательности студентов.
Основой для данной книги послужил куре «Компьютерная ал-
алгебра» для студентов старших курсов и аспирантов, который я
читал как н Канзасском университете, США, так и в Националь-
Национальном 'гпхничпгмом унииорситете Афин, Греция. Курс был успешно
нш-примнт гтудсмшми, |||<ч1иали(ирую1цимися в области инфор-
МН1ИМИ, ми тми шин, плсктро техники и вычислительной техники.
Предисловие 9
Что касается предварительной подготовки — желательно, но не
обязательно прослушать хороший курс по структурам данных, а
также курс по современной и/или линейной алгебре.
Материал в данной книге разделен на три части:
A) Часть I является вводной и состоит из гл. 1, объясняющей,
что такое компьютерная алгебра.
B) Часть II содержит основные математические результаты
и базисные алгоритмы. Поскольку компьютерная алгебра
имеет дело в основном с целыми числами и полиномами
с целыми коэффициентами, в гл. 2 описываются основные
свойства целых чисел, а в гл. 3 — полиномов.
C) В части III мы находим приложения идей, развитых в
предыдущих частях, а также более специальные разделы,
а именно гл. 4 посвящена кодам, исправляющим ошибки,
и криптографии, гл. 5 — вычислению полиномиальных
наибольших общих делителей и последовательностей по-
полиномиальных остатков, гл. 6 — разложению на неприво-
неприводимые множители полиномов с целыми коэффициентами, а
гл. 7 — отделению и аппроксимации вещественных корней
полиномиальных уравнений.
Отбор преподавателем материала имеет очень большое значе-
значение, поскольку я обнаружил, что даже не приближаюсь к тому,
чтобы за семестр охватить весь этот материал. Разумный подход
состоит в том, чтобы детально разобрать ч. I (введение) и II
(основные математические результаты и базисные алгоритмы), а
затем некоторые разделы из ч. III (приложения и специальные
разделы), насколько позволит время, имея в виду, что разд. 7.2
зависит от разд. 5.2. Наконец, настоятельно рекомендуется в
таком курсе использовать систему компьютерной алгебры maple.
Я благодарен моему редактору Марии Тейлор и всему коллек-
коллективу издательства John Wiley за наше чудесное сотрудничество.
Я благодарю Замира Бавеля, моего коллегу и друга из Кан-
Канзасского университета за ценные советы, Манолиса Протонотари-
оса, председателя Отделения электротехники и вычислительной
техники Национального технического университета Афин, за пре-
предоставленную мне возможность прочитать курс компьютерной
алгебры в Греции и мою мать, взявшую на себя заботу обо всем
во время моей работы над книгой в Греции.
Алхивиядис Г. Акритас
Канзасский университет
Часть I
ВВЕДЕНИЕ
Эта часть книги — о компьютерной алгебре и системах компь-
компьютерной алгебры; основные понятия алгоритмов и их сложности
представлены в ней наряду с понятиями структур данных. Разъ-
Разъясняется различие между компьютерной алгеброй и численным
анализом:
В численном анализе вещественные числа аппроксимируются
числами с плавающей точкой, поскольку внутреннее устройство
большинства компьютеров ориентировано на работу с числами,
состоящими не более чем из 10 десятичных цифр. Это приводит
к неточным вычислениям, которые выполняются очень быстро,
поскольку арифметические операции реализованы на аппаратном
уровне.
Компьютерная алгебра имеет дело в основном с целыми числа-
числами произвольной точности, употребляя соответствующие структу-
структуры данных; это приводит к безошибочным вычислениям, которые
выполняются несколько медленнее, так как арифметические опе-
операции должны быть реализованы в программном обеспечении.
Глава 1
Что такое компьютерная алгебра?
Термин компьютерная алгебра (или символьные и алгебраические
вычисления) объясняется способностью компьютеров манипулиро-
манипулировать математическими выражениями, заданными символьно, а не
численно, подобно тому, как это делается в алгебре при помощи
карандаша и бумаги. Имея дело главным образом с точными чис-
числами (целыми и рациональными числами бесконечной точности)
и алгебраическими выражениями в их символьном представлении,
системы компьютерной алгебры могут освободить ученых от уто-
утомительной рутинной работы, связанной с численными ошибками
(усечение и округление), и, таким образом, помочь им глуб-
глубже понять различные изучаемые физические явления — «цель
вычислений в проникновении в суть, а не в цифрах» (согласно
Р. Хэммингу). Это проникновение в суть достигается иногда при
вычислении значений математических выражений, но во многих
случаях при использовании алгебраических средств соотношения
между величинами становятся яснее.
Компьютерная алгебра применяется к широкому кругу проб-
проблем. Рассмотрим, например, теорию гравитации, где исследуются
возможные варианты общей теории относительности. Лля того
чтобы согласовываться с экспериментальными данными, эти ва-
ринанты должны удовлетворять теоретическому критерию Бир-
кгофа; компьютерная алгебра является подходящим средством
для применения этого критерия. Другой пример можно взять из
неврологии, где система уравнений моделирует распространение
сигнала по нерву. При некоторых условиях эти уравнения могут
порождать повторяющиеся серии сигналов, так называемые wamn.
Для того чтобы проверить устойчивость волнового пакета, дос-
достаточно вычислить знак некоторого математического выражения.
Получить само это выражение вручную — кропотливый труд, но с
использованием компьютерной алгебры это становится рутинным
вычислением (Pavelle et al., 1981).
12
1.1
Что такое компьютерная алгебра?
Компьютерная алгебра и численный анализ
Прежде чем обсуждать точную арифметику, посмотрим более
пристально на неотъемлемые недостатки численных расчетов с
использованием компьютеров. Читатель должен помнить, что
компьютер — это машина с конечной памятью, состоящей из слов
конечной длины; обычно длина компьютерного слова составляет
16 или 32 бита, при этом максимальное целое число, которое можно
разместить в слове, составляет 216—1 или 232—1, что соответствует
пятизначным или десятизначным числам в десятичной системе
счисления.
При выполнении численных расчетов на компьютере мы обычно
сталкиваемся с проблемой представления бесконечного множества
вещественных чисел в компьютере с конечной памятью и дан-
данной длиной слова. Наиболее распространенный способ решения
этой проблемы в численном анализе — приближать вещественные
числа, используя конечное множество чисел с плавающей точкой.
Множество F чисел с плавающей точкой характеризуется основа-
основанием счисления /?, точностью t и областью значений экспоненты
[L, U], где параметры P,t,LviU явным образом зависят от компью-
компьютера. Каждое число с плавающей точкой / из множества F может
быть представлено в виде
где целые числа di, i = 1,2,...,t, удовлетворяют неравенствам
О ^ di ^ /3 — 1 и L ^ е ^ {/; если мы потребуем, чтобы rfj ф О
для всех / 6 F, f ф 0, то будем иметь дело с нормализованными
числами с плавающей точкой.
Следует отметить, что при использовании чисел с плавающей
точкой (или целых чисел, помещающихся в одном компьютерном
слове) арифметические операции +, * и т.д. выполняются очень
быстро. Это происходит потому, что эти операции выполняются
не программным обеспечением, а электронными схемами компь-
компьютера; мы говорим, что арифметические операции +, * и т.д.
ргализопаны аппаратно.
Нпимптгльпмй читатель будет теперь иметь представление, ка-
кати о роли и|м|Гикм|,| пошикают из такого приближения веществен-
4i.i« 'аи «'л числами <• планающей точкой. Прежде всего множество
Компьютерная алгебра и численный анализ
13
F не является непрерывным или даже бесконечным множеством.
В множестве F существует в точности 2(/? - 1)^'~г({/ — L + 1) + 1
нормализованных чисел с плавающей точкой (включая нуль);
более того, эти числа распределены равномерно не на всей об-
области значений, а только между последовательными степенями
/?. В качестве примера рассмотрим 33-точечное множество F при
/? = 2, t = 3, L = — 1 и U = 2, которое показано на рис. 1.1.1.
-4
-3
-2
-l _:
Рис. 1.1.1.
Система чисел с плавающей точкой при /? = 2, t =
3, L = -1 и U = 2. (Forsythe, G.E., М.А. Malcolm,
СВ. Moler. Computer methods for mathematical com-
computations, 1977, p. 12. Воспроизведено с разрешения
издательства Prentice-Hall, Inc., Englewood Cliffs, New
Jersey.)
Из сказанного выше следует, что сумма (или произведение)
данных чисел /i и /г из множества F может не принадлежать
F и должна быть приближена ближайшим числом с плавающей
точкой. Разность между истинным и приближенным значением
суммы (или произведения) является ошибкой округления. Следует
также отметить, что операции сложения и умножения в F не
являются ассоциативными и закон дистрибутивности тоже не
выполняется. Рассмотрим, например, в нашем игрушечном 33-
точечном множестве F выражение 5/4 + C/8 + 3/8) = 2, где числа
5/4, 3/8 и 2 принадлежат F. Однако в этом выражении E/4 +
3/8) + 3/8 ф 2, поскольку сумма E/4 + 3/8) не принадлежит F
и должна быть приближена либо числом 3/2, либо числом 7/4.
Ошибки округления встречаются не только при использовании
чисел с плавающей точкой; они могут возникнуть и при работе с
целыми числами, например в случае, когда мы хотим вычислить
произведение двух s-значных чисел в компьютере, который не
может обрабатывать числа, содержащие больше s цифр.
Таким образом, мы видим, что в численном анализе нужно тща-
тщательно оценивать ошибки округления (и вычислять их границы),
возникающие при работе любого алгоритма, а не фокусировать
все внимание на самом алгоритме и его эффективности. Это вмес-
14 Что такое компьютерная алгебра1?
те с тем фактом, что храниться в памяти и обрабатываться могут
только численные значения математических выражений, указыва-
указывает на необходимость программных систем, способных обрабаты-
обрабатывать выражения в символьном виде и производить безошибочные
вычисления (именно таким образом «родилась» компьютерная
алгебра). Как мы сейчас (в разд. 1.2) убедимся, эти системы из-
избегают чисел с плавающей точкой и работают с целыми числами
произвольной точности, используя соответствующие структуры
данных. В разд. 1.3 мы укажем некоторые из многочисленных
имеющихся систем и кратко опишем возможности двух из них.
1.2
Компьютерная алгебра: точная целочисленная и полиноми-
полиномиальная арифметики
Как отмечалось выше, для того чтобы иметь возможность
представлять целые числа произвольной точности и выполнять
точные арифметические операции, нам необходимо ввести (если
их еще нет) соответствующие структуры данных (или восполь-
воспользоваться модулярной арифметикой, как мы увидим в гл. 2) и
избегать чисел с плавающей точкой; это и делается в компь-
компьютерной алгебре. В этом разделе мы вводим вычислительную
модель для целочисленного и полиномиального представлений и
анализируем некоторые алгоритмы «с карандашом и бумагой»
выполнения над ними арифметических операций. Очевидно, что
для представления целых чисел и полиномов можно пользоваться
массивами, но они не являются «динамическими» структурами
данных; мы будем обсуждать только их представление в виде
списков (Horowitz et al.. 1976).
Списки и базисные операции над списками. Прежде всего
рекурсивно определим список над произвольным множеством S
как конечную последовательность (oi, аг,... ,ап), п ^ 0, в кото-
которой каждый элемент а,- является либо элементом множества 5,
либо списком над 5; пустой список представляется символом 0 и
соответствует п = 0. Когда мы пишем а = {а\,п2 ап), мы ин-
интерпретируем это двояко: A) а рассматривается как указатель на
начало списка и B) а представляет весв список, так что, когда мы
пишем it ф х, ivu' Ф — одна из бинарных операций над скалярами,
мм имсгм п пилу, что операция ф должна быть произведена над
Целочисленная и полиномиальная арифметики 15
каждым элементом списка а и скаляром х. (Из контекста всегда
будет ясно, что в данный момент имеется в виду.)
Если дан список а = (ai,a2, ••.,<>„), где о рассматривает-
рассматривается как указатель на начало списка, то на нем можно опре-
определить различные операции. Для нас представляют интерес
следующие: длина(о) = п; первый(о) = а\; последний(а) = а„;
хвост(а) = (ог.аз, • •• ,а„); развернутый(о) = (ап,... ,а{); присо-
присоединить bx,...,bk к о, k ^ 1, что дает в результате список
(bi,... ,bjfc,ai,... ,о„); отделить bi,... ,6* от о, к ^ п, что приводит к
тому, что Ь,- становятся равными at, 1 ^ г ^ к, и о = (ajt+i,... ,а„).
Если а = 0, пустой список, то мы определяем результат операции
«присоединить а\ к а» как о = (oj). В дальнейшем списки и спис-
списковые элементы списка можно будет легко отличить от элементов
множества S.
Списочное представление целых чисел. Для того чтобы
иметь возможность хранить в памяти компьютера целые числа
произвольной точности и выполнять над ними точные арифмети-
арифметические операции, мы должны представлять их в виде списков. На
этом пути, однако, мы утрачиваем возможность выполнять над
этими целыми числами аппаратно реализованные операторы +, *
и т.д.; вместо этого, как будет показано ниже, мы должны разра-
разработать специальное программное обеспечение, выполняющее эту
работу.
Мы различаем два типа целых чисел: те, которые представ-
представляются списками, называются целыми числами кратной точ-
точности или длинными-целыми числами, остальные называются
целыми числами одинарной точности или короткими целыми
числами. Целые числа первого типа представляются в ви-
виде t = (t'o,i'i,... ,tn), n ~? 1, где ij удовлетворяют неравенст-
ВУ 1ъ1 ^ /? — 1> служат коэффициентами при $ в выражении
i = X)o<i<n ijf& и являются все неотрицательными или неположи-
неположительными в соответствии с тем i > 0 или i < 0; /? — 1 = 2Ц — 1 —
наибольшее значение, хранимое в компьютерном слове.
Каждое ij хранится в отдельном компьютерном слове и, за
исключением in, занимает ц бит. Список может быть образован
одним из двух способов, а именно, »„ — наиболее значимая /?-
цифра — может находиться либо в начале, либо в конце списка.
Большей частью мы будем следовать второму подходу, в котором
порядок обратен естественному представлению целого числа,
но такое представление выбирается потому, что большинство
арифметических операций выполняется, начиная с цифр младших
16
Что такое компьютерная алгебра?
разрядов; однако при изучении деления длинных целых чисел
наиболее значимая /?-цифра будет в начале списка. ЗнакA-) = ±1,
зависит от того будет »п > 0 или in < 0, т.е. знак числа« «хранится»
только в »'„.
Например, предположим, что /? = 103, т.е. компьютерное слово
может содержать только три десятичные цифры, и что нам нужно
запомнить число i = +23456789. Мы можем разместить его в
памяти, как показано на рис. 1.2.1.
+23
Рис. 1.2.1.
Внутреннее представление целого числа i = +23456789
в компьютере, слово которого может содержать только
три десятичные цифры.
Стрелки на рис. 1.2.1 указывают, что звенья, или ячейки (сос-
(состоящие из одного или нескольких машинных слов) ссылаются на
следующие. Ко всей структуре адресуются с помощью пере-
переменной *'. Аналогично, рациональное число n/d представляется
списком г = (n,d), где п и d - целые числа п и d, представленные
списками.
Структуры данных. Первое, о чем необходимо позабо-
позаботиться при работе со ссылочными структурами, — как построить
звено, т.е. сколько_ компьютерных слов используется для одного
звена, сколько полей данных мы собираемся иметь в звене и каков
должен быть размер этих полей. На рис. 1.2.1 эти характеристики
звена опущены, однако разумный выбор может состоять в исполь-
использовании двух слов для звена (или ячейки), разделенного на три
поля, функции которых будут разъяснены ниже: поле типа Т, поле
элемента Е и поле ссылки S, как это показано на рис. 1.2.2.
Е
Рис. 1.2.2.
Внутреннее представление ячейки, или звена.
Рассмотрим список общего вида (zi,Z2,. •• ,хп)- Компьютер-
Компьютерное иргдстлилгниг итого списка состоит из п ячеек, связанных
их ноля ссылок, имеете с предполагаемыми уже данными
Целочисленная и полиномиальная арифметики 17
представлениями каждого из значений г,-, являющихся в свою оче-
очередь списками. Поле ссылки »-й ячейки содержит адрес (i + 1)-й
ячейки A ^ i < п), а поле ссылки n-й ячейки содержит 0. (Разуме-
(Разумеется, предполагается, что 0 не является адресом никакой ячейки.)
Поле типа i-й ячейки содержит нуль или единицу в зависимости
от того, является х\ атомом или списком. Если я,- является ато-
атомом, то поле элемента г'-й ячейки содержит г,-; если xt — список,
то поле элемента t'-й ячейки содержит координаты некоторого
представления списка х{. Координаты списка (xi,Z2 хп) —
это адрес первой ячейки его представления. В соответствии с
этим внутреннее представление целого числа t, изображенного на
рис. 1.2.1, является таким, как показано на рис. 1.2.3.
789
456
+23
Рис. 1.2.3.
Полное внутреннее списочное представление целого
числа на рис. 1.2.1.
Раз такое решение принято, то во время вычислений все не-
неиспользуемые звенья связаны вместе в произвольном порядке и
образуют список свободного места. Когда требуется новое звено,
первое звено списка свободного места отщепляется и присоединя-
присоединяется к соответствующему списку данных. Когда список данных
становится не нужным в дальнейших вычислениях, его звенья при-
присоединяются к голове списка свободного места. В упражнениях
по программированию 1 и 2 к этому параграфу (в конце главы,
перед библиографией) читателю поручается написать некоторые
из этих процедур. Как для новичка, так и для опытного прог-
программиста представляет интерес техника, позволяющая на языках
высокого уровня проверить значение данного поля и/или обно-
обновить его, не разрушая имеющейся в данном слове информации.
Мы разъясним это на следующем примере, использующем деся-
десятичную систему счисления.
Пример. Предположим, что число п — 123456789 хранится в ма-
машинном слове, разделенном на три поля, содержащих 1, 3 и
5 десятичных цифр соответственно, т.е. это число можно пре-
представлять себе как 1-234-56789, хотя компьютер воспринимает это
девятизначное число как единое целое. Лля того чтобы изменить
2—274
18
Что такое компьютерная алгебра?
значение центрального трехсимвольного поля с 234, например, на
432, мы должны сделать следующее:
Разделить число и = 123456789 на 105, получив частное gi = 1234
и остаток г\ = 56789.
Затем разделить gi = 1234 на 103, получив 92 = 1 и г2 = 234 (в
этот момент значение гг несущественно).
Затем умножить дг = 1 на 1000 и прибавить число 432 (которое
должно заменить число 234), чтобы получить промежуточный
результат пр — 1432.
Наконец, умножить пр = 1432 на 105 и прибавить ri = 56789,
чтобы получить число 143256789 в требуемом измененном виде.
Чтобы досконально понять эту технику, читателю требуется
самостоятельно выполнить несколько примеров.
Алгоритмы и их сложность. Алгоритм — это метод реше-
решения некоторого класса задач. Ресурсы, используемые алгоритмом
для решения одной такой задачи, называются сложностью алго-
алгоритма и измеряются в соответствующих единицах (время счета
или используемая память). В данной книге мы интересуемся
только временной сложностью вычислений и будем измерять ее,
выражая время вычислений в виде функции от некоторой меры
(определенной ниже) количества данных, подаваемых на вход.
Определение 1.2.1. Пусть / и д — вещественнозначные функции,
определенные на множестве S. Мы будем говорить, что A) /
доминируете* функцией д, и писать / = О(д), если существуют
положительное вещественное число с\ и элемент xi 6 S, такие,
что \f(x)\ ^ С!^(а;)| для всех х € S, х > х\\ B) / доминирует д,
и писать / = fi(ff), если д доминируется /, и C) функции / и д
кодоминантны, и писать / ~ д, если / = О(д) и / = ()
Некоторые свойства доминирования и кодоминантности, ко-
которые мы будем использовать в дальнейшем, легко следуют из
определения.
Определение 1.2.2. /3-длиной целого числа г мы будем называть
число /?-цифр в его представлении и будем обозначать ее Lp(i).
Если \х~\ — потолок, наименьшее целое большее или равное х, а
[х] — пол — наибольшее целое число меньшее или равное х, то
Lp(i) =
1I =
если : = 0
если « Ф °-
Целочисленная и полиномиальная арифметики 19
Пример. Целое число г = +23456789 на рис. 1.2.1 при 0 = 103 имеет
/?-длину Lp(i) = 3, т.е. длина целого числа — это количество
компьютерных ячеек, требующееся для его представления. В
дальнейшем индекс /3 мы будем опускать, поскольку для любого
другого основания j имеем Lp ~ Ly (если рассматривать Lp и Ln
как функции, определенные на множестве целых чисел).
Определение 1.2.3. Пусть А — алгоритм и S — множество
допустимых значений входа для А. Целое число ^а(и) для п €
5 — число базисных операций, выполняемых алгоритмом А при
значении входа п, — называется функцией времени вычислений,
ассоциированной с А и определенной на S. К базисным операциям
относятся такие, как сложение и умножение одинарной точности,
замены, безусловные передачи управления и вызовы подпрограмм.
Формально полиномы определяются в гл. 3; в сформулирован-
сформулированной ниже теореме мы предполагаем, что читатель имеет о них
интуитивное представление.
Теорема 1.2.4. Если р(п) — ртпт + • • • + р\п + р0 — полином
степени т, то р(п) = О(пт).
Доказательство. Полагая n ^ 1, имеем
\Р(П)\ < \Рт\пт + ¦ ¦ ¦ + \Р1\П +
\Р
+
Лля доказательства теоремы достаточно теперь положить с =
--- + \pi\ + \pO\- D
В качестве применения теоремы 1.2.4 рассмотрим алгоритм,
содержащий к инструкций (или шагов), каждая из которых выпол-
выполняется за время c,-nmi, 1 ^ i ^ к. Тогда весь алгоритм выполняется
за время О(пт), где т — максимум чисел ггц, 1 ^ i ^ к.
Если функция времени вычислений алгоритма А имеет вид
<а(") = О(п3) или tA(n) = 0(п13) и т.д., где п — размер входа
(т.е. если функция времени вычислений является самое большее
полиномиальной функцией от величины входных данных), то А на-
называется алгоритмом, полиномиальным по времени. Существуют
также экспоненциальные по времени алгоритмы, функции време-
времени вычислений которых являются показательными функциями от
20
Что такое компьютерная алгебра?
количества входных данных, т.е. функциями вида <а(") = 0B").
Очевидно, что
O(logn) < 0(n) < O(nlogn) < О(п2) < ОB"),
и общее правило состоит в том, что вычисление является «лег-
«легким», если мы имеем дело с полиномиальным по времени алгорит-
алгоритмом, и «сложным», если мы имеем дело с экспоненциальным по
времени алгоритмом.
В этой книге мы будем в основном рассматривать границу
для худшего случая, которая представляет собой максимальное
время счета, необходимое для выполнения алгоритма. Другой тип
границы — это граница в среднем, т.е. просто среднее время счета,
получающееся, если время выполнения алгоритма усреднить по
всем возможным входным данным.
Классические алгоритмы целочисленной арифметики и
их сложность. Рассмотрим теперь классические алгоритмы
выполнения арифметических операций с длинными целыми числа-
числами и их сложность. Как уже отмечалось, нам нужно разработать
программное обеспечение для арифметики целых чисел, поскольку
компьютер не может применять аппаратно реализованные опера-
операторы +, * и т.д. к длинным целым числам; поэтому мы говорим,
что теперь арифметические операторы +, * и т.д. реализованы
программно, и очевидно, что они работают медленнее, чем их
аппаратно реализованные аналоги. Ниже, при определении фун-
функции времени вычислений алгоритма, читатель должен иметь в
виду алгоритмы целочисленной арифметики, которые проходят в
средней школе; звено, или ячейка, тогда аналогичны десятичной
цифре, и нам просто требуется подсчитывать одноразрядные сло-
сложения и/или умножения. Различные операции будут выполняться
над двумя длинными целыми »i и г'г, представленными списками.
D
D
?
Предположим сначала, что мы хотим вычислить сумму чисел t'i
и 1*2. С программистской точки зрения мы можем воспользоваться
двумя подходами:
1. Написать процедуру, назвав ее ISUM, для сложения целых
чисел (integer .summation), на вход которой подаются г\ и г2, а
на выходе получается значение их суммы s.
Целочисленная и полиномиальная арифметики VI
2. «Перегрузить» оператор +, т.е. когда встречается onep*T"i<
+, проверяется тип переменных, являющихся его аргумем
тами, и если обнаруживаются длинные целые числа, in
существует ветвление на процедуру ISUM. (Такой пОДОПш
мы называем «дружественным к пользователю», поскольку в
данном случае пользователю не надо запоминать имена ?§?х
процедур, которые ему могут потребоваться.) Ж
Эти два подхода применимы к любым другим операциям с целъщш
числами и в дальнейшем упоминаться явно не будут. >",
При рассмотрении сложения выход s = i\ + it также является
списком, который получается при одновременном сканировании
(продвижении вдоль) списков i\ и г'г и сложении малых целых чисел
соответствующих звеньев (используя аппаратно реализованный
+), учитывая, конечно, переносы. (Напомним, что в соответствии
с нашими соглашениями о списочном представлении целого числа
для сложения и умножения наименее значимые звенья появляются
первыми.) Функция времени вычислений имеет вид <isum(*i,12) =
0{max[L(ii),L(i2)]}; это легко следует из того, что мы считаем
число сложений одинарной точности и что их имеется не более чем
max[L(j'i),Z.(i2)] (эта же величина ограничивает число возможных
переносов) (см. определение 1.2.3). Кроме того, число ячеек во
вновь созданном списке не превосходит max[Z,(z'i), ?A2)] + 1-
В качестве упражнения мы оставляем читателю проверку того,
что, используя школьные алгоритмы целочисленного умножения
для вычисления произведения н • »2 (двух упомянутых выше длин
ных целых чисел), получим <шш.т(*1> *'г) = O[L{i{), ?(«2)]-
Деление значительно сложнее: При делении i\ на »з мы и
действительности ищем целые числа q и г, обладающие снойг
твом делимости с остатком t'i = г'гд + г, 0 ^ г < %ч. Небольшое
размышление над школьным процессом деления длинных чигрл
показывает, что для его выполнения нам достаточно уметь ни
однократно делить (к + 1)-значное число т = (mo,mi,... ,•"&) ни
jfc-значный делитель п = (п1,П2,..., л*), п ^ т < Ьп, где 6 »м
нование системы счисления (в компьютерных приложенинх h - /',
где /? уже использовалось выше). Обычно в компьютерных при
ложениях 6 — это 232 или какая-нибудь другая степень '.!, и
этих рассуждениях мы сначала рассматриваем наиболее чпими
мые цифры, так что m = mobk + Ь тк и п = njb* + ¦ ¦ I "t
Например, если нам нужно разделить 1234 на 23, то мы емпчнлн
делим 123 (наше начальное т) на 23 (наше п), получаем 5 и Я и
остатке; затем делим 84 (наше новое т) на 23, получаем Ли 15 it
22 Что такое компьютерная алгебра?
остатке. Очевидно, что эта же идея работает и в общем случае.
Наиболее очевидный подход к данной задаче состоит в том, чтобы
угадывать частное q по наиболее значимым цифрам чисел т и
п; полученное таким путем частное называется пробным частным
и обозначается qt. Стандартный процесс угадывания состоит в
делении на щ, наиболее значимую цифру числа п, двузначного
числа mob+m\; в качестве qt берем получающееся частное. Таким
образом, определяем
Г 6-1,
если Jii = too,
если Пх > то,
где в любом случае qt ^ 6 — 1 и qtn\ ^ гпоб + гщ. (Почему в этих
рассуждениях не может быть тн < mo?)
Пример. Обозначим истинное частное через q. Тогда при 6 — 10
им имеем:
Если п = 69 и m = 600, то щ — то, а следовательно, q% = 9. В
этом случае q = 8.
Если п — 69 и т = 480, то qt = 48/6 = 8. В этом случае 9 = 6.
Если п = 29 и m = 200, то ni = mo, а следовательно, qt = 9. В
этом случае q = 6.
Для каждого рассмотренного выше случая выполняются нера-
неравенства п ^ т < Ьп, не позволяющие нам рассматривать случаи
типа п = 59 и т = 600 или даже п = 60 и т — 600. Ограничивает
ли это общность? (Для ответа на этот вопрос см. теорему 1.2.5
и следующие за ней комментарии.) Кроме того, отметим, что во
всех рассмотренных случаях qt слишком велико, однако при п = 69
угаданное значение не так плохо, как при п = 29. Почему это так,
объясняется следующей теоремой.
Теорема 1.2.5. Пусть 6 — основание системы счисления, и рас-
рассмотрим числат = то6*Н \-rnk тлп — nibk~1+- ¦ -+п*, п ^ т < Ьп.
Если мы обозначим через qt и q (оба — целые числа) пробное
частное и частное соответственно при делении m на п, то qt ^ q;
более того, если ni ^ 6/2, то qt — 2 ^ q ^ qt; это значит, что qt
равно либо q, либо q + 1, либо q+2.
Доказательство. В течение доказательства мы будем помнить,
что т
= mo&*
mi
bk~l +
+ Ь
и п =
1 +
bra*, п ^ т < Ьп.
Из qn ^ т, используя неравенство т2&*~2 + •• • + тк < Ьк~1,
мы получаем, что qnibk~1 < (mob + mi + 1N*-1, следовательно,
Целочисленная и полиномиальная арифметики 23
qni ^ mob + mi, где q ^ 6 — 1. По определению, однако, qt равно
либо 6—1, либо, если щ > т0, наибольшему кратному числа щ,
которое ^ тгаоб + "И- Ясно, что qt ^ q.
Для доказательства второй части теоремы предположим, что
r»i ^ 6/2; достаточно в этом случае показать, что (qt — 2)n ^ то.
Пользуясь неравенством Пг6*~2 + Ь п* < б*, получаем
-2)n
(ft - 2)(ni + 1N*"* = [9tni + (ft - 2 - 2П1)]**
(mo6 + mi)^-1 + (qt-2- 2n1)bk~1
по определению qt. Поскольку пх ^ 6/2 и qt ^ 6 — 1, имеем
qt — 2 — 2«i < 0, и правая часть этого соотношения ^ (то6 +
т^б* ^ (mob + т^б* + т26*~2 Н f- т*. = т. Таким образом,
вторая часть теоремы доказана.
Чтобы добиться выполнения условия, что старшая цифра дели-
делителя ^ 6/2, нам нужно нормализовать его, т.е. домножить m и п на
2е, где 2е - наибольшая степень 2, для которой 2е • п < 6*+1. Затем
делим 2е ¦ т на 2е • п. Для демонстрации рассмотрим последний
случай предыдущего примера, в котором 6 = 10, п = 29 и m = 200.
Вычислим наибольшее е, такое, что 2е • 29 < 1000; получаем е = 5
и нормализованные значения пит равны 928 (= 32 • 29) и 6400
(= 32 • 200) соответственно. Нормализация не влияет на частное,
однако нам следует разделить остаток на 2е.
Отметим, что в теореме 1.2.5 значение основания 6 несущест-
несущественно. К тому же мы легко можем при необходимости подправить
qt на 1 или 2, чтобы получить правильное частное на каждом шаге
длинного деления. Более того, как мы увидим в следующем при-
примере, можно изменить нашу стратегию угадывания и использовать
большее количество старших цифр как в га, так и в п.
Пример. Разделим 272828282 на 3242. Получим
272828282 3242
25936 184154
13468
12968
5002
17608
16210
13982
12968
1014
qt = |272/32J = 8
qt = L134/32J = 4
qt = |5O/32J = 1
q, = L176/32J = 5
qt = U39/32J = 4
остаток
24 Что такое компьютерная алгебра?
Заметим, что мы использовали две или три старшие цифры
делимого.
Такой метод угадывания всегда даст нам либо истинную цифру
частного, либо цифру, большую ее на единицу. Доказательство
этого факта, а также детали реализации мы оставляем читателю
в качестве упражнения по программированию. [Указание. См.
упр. 19-21 в книге (Knuth, 1981, р. 235-238, 246); см. также полный
текст программ на Паскале длинной целочисленной арифметики
в книге (Flanders, 1984, р. 342-357)].
Читателю в качестве упражнения мы оставляем доказатель-
доказательство того, что, используя предыдущий алгоритм с карандашом
и бумагой, получаем <roiv(*ii*2) = 0[L(*2){?(*i) ~ -Ц'з) + 1}]> т.е.
время деления н на i-2 (»'i ^ 12), сводящегося к вычислению q
и г, обладающих свойством делимости, по существу совпадает
с временем вычисления произведения *2 ¦ <?; см. также упр. по
программированию 4 для данного раздела.
Списочное представление полиномов. Обратим теперь
наше внимание на полиномы с целыми коэффициентами. Су-
Существует несколько способов представлять полином от одной
переменной р(х) степени п [и уравнение р(х) = 0] в компью-
компьютере; мы будем представлять его упорядоченным списком р =
(a:,cr,er,cr_i,er_i,...,ci,ei), г > 1, где присутствуют только целые
коэффициенты с,- ф 0, представ ленные списками с,- = {сц,сц, ...,.c,-mj),
го,- ^ 1; показатели е,- располагаются в порядке убывания ег >
er_i > • • • > е\. Степень полинома р(х) равна п = ег, и мы считаем,
что знак полинома р(х) совпадает со знаком с,.. [Другой способ
представления полинома р(х) степени n ^ 0 состоит в использо-
использовании списка р — (х, п, с„, с„_1,... ,Со); в этом случае включаются
нулевые коэффициенты. Мы будем пользоваться первым представ-
представлением.]
Как и в случае списочного представления целых чисел, наши
ячейки (или звенья) снова будут состоять из двух компьютерных
слов с теми же самыми тремя полями. Например, полином р(х) =
х3 — 7 можно представить так, как показано на рис. 1.2.4.
Пустой список представляет полином р(х) = 0. Полиномы от
многих переменных над целыми числами могут быть представ-
представлены в рекурсивной канонической форме, т.е. полином от v
переменных x\,xi, ¦¦ ¦ ,xv рассматривается как полином от одной
переменной xv с коэффициентами с^, являющимися полиномами от
v — 1 переменных х\,Х2,... ,xv-i.
Целочисленная и полиномиальная арифметики 25
1
5
~*
1
S
—*
0 S
+3
—*
1
5
—"
0
0
0
0
1
0
X
0
1
0
+1
о о
-7
Рис. 1.2.4.
Внутреннее списочное представление полинома от од-
одной переменной х3 — 7; х обозначает численное зна-
значение, используемое компьютером для внутреннего
представления переменной х. Отметим, что коэффи-
коэффициенты могут иметь произвольную длину, в то время
как показатели степеней — целые числа одинарной
точности.
Читателю в качестве упражнения оставляется задача изобра-
изобразить внутреннее представление полиномов от многих переменных.
Классические алгоритмы полиномиальной арифметики
U UX сложность. Границы времени вычислений для операций
над полиномами обычно даются в виде функций от степеней и
длин норм полиномов.
Определение 1.2.6. Пусть р(х) = ?0^„ с{х' — полиномиаль-
полиномиальное уравнение от одной переменной с целыми коэффициентами.
(Если коэффициенты являются рациональными числами, то мы
прежде всего превратим их в целые, домножив каждый из них
на наименьшее общее кратное знаменателей.) Максимальная нор-
норма (или норма с нижним индексом со) полинома р(х) — это
Mz)|oo = тахо^,^„(|с,|), суммарная норма (или норма с нижним
индексом 1) — это \p(x)\i = ^20<i<n |c,|, и евклидова норма — это
Традиционно при временном анализе алгоритмов, имеющих
на входе полиномы, используются только две первые нормы, в
то время как евклидова норма используется в доказательстве
теорем общего вида. Из определения следует, что |р(ж)|оо ^
\p(x)\i ^ (" + l)|jp(«)|ooi где и — степень полинома р(х); поэтому
1°о] ~ L[\p(x)h].
26
Что такое компьютерная алгебра?
Пусть jpi(*) = Eo<i<m <**' и Мх) = Eo<«n **' — даа полинома
с целыми коэффициентами степеней тип соответственно. Мы
хотим получить ограничения в виде функций степеней шипи
длин I>[|pi(x)|oo]i -ЦЬгМЫ времен, требуемых для вычисления
pi(x) ± p2(x), Pi(x) ¦ р2(х) и q(x), r(x), обладающих свойством
делимости pi(х) = p2{x)q{x) + г(х), где степень полинома г(х) < п
(предполагая, конечно, что т ^ п).
Давайте вычислим, пользуясь описанным выше представлением
полиномов, функцию времени вычислений для программы PSUM,
выполняющей сложение полиномов (polynomial summation); эта
программа берет в качестве входа полиномы р\{х) и р2(х) и воз-
возвращает их сумму pi(x) + P2(x) в виде нового списка. [Более
точно, 2[max(m, и) + 1] — это длина нового списка, представля-
представляющего pi(x) + р2(х).] Прежде всего мы видим, что должно быть
выполнено не более max(m, n) + 1 сложений коэффициентов. За-
Затем напомним, что для любых двух длинных целых чисел ii и
t2 имеем <isum(»'ii»2) = O{ma,x[L(ii),L(i2)]}. В нашем случае в
худшей возможной ситуации коэффициенты полинома pi(x) все
будут равны |pi(x)|TO [максимальному коэффициенту полинома
JPiOOL в то время как коэффициенты полинома рг(х) все будут
равны |рг(:|:Iоо [максимальному коэффициенту полинома р2(х)];
таким образом, одно сложение коэффициентов выполняется за
время 0{max[L|pi(:r)|oo,.?|p2(z)|oo]}. Поскольку имеется не более
max(m,n) + l сложений коэффициентов, легко видеть, что функция
времени вычислений этой программы равна
n, n) +1] max{L[|pi(*)U, ?[|Pa(*)U}).
В качестве упражнения читателю мы оставляем доказательство
того, что время, необходимое для вычисления произведения Pi(z) •
р2(х), равно
= О{(т
Более того, если р\{х) — делитель, &р2(х) — частное, то послед-
последнее выражение ограничивает время, необходимое для выполнения
обычного алгоритма деления полиномов с целыми коэффициента-
коэффициентами. (Алгоритмы полиномиального деления будут представлены в
следующих главах.)
Системы компьютерной алгебры 27
1.3
Системы компьютерной алгебры
Имеется несколько доступных систем компьютерной алгебры,
большинство из которых разработано в США; в СССР имеет-
имеется система, называемая аналитик, реализованная аппаратным
образом. Прекрасным источником информации об этих систе-
системах являются периодически проводимые конференции, симпози-
симпозиумы и т.д. по символьным и алгебраическим преобразованиям,
SYMSAC — в США и EUROCAL или EUROSAM — в Европе1).
Труды этих конференций содержат как обзоры текущего состо-
состояния, так и направления дальнейшего развития; см. например,
(Petricle (ed), 1971). Кроме того, ежеквартальный бюллетень пуб-
публикует группа SIGSAM (Special interest Group on Symbolic and
Algebraic Manipulation) ассоциации ACM (Association for Computing
Machinery). Также ежеквартально выходит Journal of Symbolic
Computation.
Стандартным тестом для любой системы компьютерной алгеб-
алгебры является вычисление Делоне движения Луны. Нахождение
точного положения Луны в любой данный момент чрезвычайно
важно для навигации и астрономии и удивительно сложно; это
вычисление было начато в 1847 г. французским астрономом Де-
Делоне и заняло у него 10 лет, плюс еще 10 лет заняла проверка.
Полученная формула занимает целую книгу. В 1970 г. три иссле-
исследователя лаборатории Боинг в Сиэтле проверили работу Делоне
на компьютере, что заняло 20 часов. Они обнаружили только три
незначительные ошибки, что кажется почти невероятным.
Системы компьютерной алгебры демонстрируют великую изо-
изощренность и разнообразие проектов и могут быть разбиты на две
основные группы в соответствии с их развитием.
Системы первой группы можно рассматривать как програм-
программы специального назначения, т.е. они разработаны для решения
конкретных задач в различных областях, таких, как математика,
теоретическая физика и химия. Все эти системы работают с отно-
относительно высокой скоростью, поскольку программа специального
назначения может быть настроена на ожидаемый тип входных
^ Начиная с 1988 г. вместо этих конференций под эгидой SIGSAM
ежегодно проводится Единая международная конференция, полу-
получившая название ISSAC. — Прим. перев.
28
Что такое компьютерная алгебра?
данных. В следующем списке приводятся примеры таких систем:
carnal — британская система для небесной механики и общей тео-
теории относительности; schoonship — для физики высоких энергий;
altran, sac-1 и sac-2 — для полиномиальной арифметики.
Из чисто сентиментальных побуждений мы кратко опишем воз-
возможности системы sac-1 (symbolic and algebraic calculatioa-версия
/), являющейся высоко переносимой системой.
Sac-1 — переносимая система на базе Фортрана для выполне-
выполнения разнообразных заданий на многих различных алгебраических
структурах. В действительности это — иерархия подсистем или
модулей, состоящих из некоторого числа подпрограмм, выпол-
выполняющих последовательность заданий. Каждый модуль непос-
непосредственно зависит от одного или нескольких (а неявно может
зависеть от многих) предшествующих модулей системы, кроме
стоящей особняком системы обработки списков. Следующий спи-
список указывает взаимозависимость различных подсистем (т.е. из
приведенного ниже списка видно, например, что полиномиаль-
полиномиальная система зависит как от системы обработки списков, так и
от системы целочисленной арифметики): A) обработка списков;
B) целочисленная арифметика; C) полиномиальная арифмети-
арифметика; D) модулярная арифметика; E) наибольший общий делитель
и результант; F) линейная алгебра, разложение на множители
полиномов, рациональные функции, гауссовы полиномы; G) интег-
интегрирование рациональных функций, вещественные нули; (8) вещес-
вещественные алгебраические числа, комплексные нули.
Чтобы воспользоваться системой sac-1, нужно написать прог-
программу на Фортране, которая выполняет обычные фортрановские
вызовы подпрограмм и функций для обращения к требуемым про-
процедурам системы sac-1; следовательно, пользователю, знакомому
с Фортраном, не придется учить нового синтаксиса. Имена ал-
алгоритмов в sac-1 указывают на их функции; например, PSUM
означает сложение полиномов (polynomial summation), в то время
как ISUM — сложение целых чисел (integer summation).
Системы из второй группы являются программами общего на-
назначения, снабжающими пользователя как можно более широкими
математическими возможностями. Большая часть из них доступна
через различные компьютерные сети. Основные представители
этой группы — macsyma, reduce, schratchpad, maple (канадская
система).
Например, reduce -— система на базе языка Лисп. Ниже пе-
перечислены некоторые из ее возможностей: A) разложения и упо-
упорядочение полиномов и рациональных функций; B) символьное
Упражнения 29
дифференцирование; C) символьное интегрирование; D) подста-
подстановки и поиск по образцу; E) вычисление наибольшего общего
делителя двух полиномов; F) автоматическое и контролируе-
контролируемое пользователем упрощение выражений; G) полный язык для
символьных вычислений, на котором написана сама программа
reduce.
Новейшей и, по-видимому, лучшей для использования системой
компьютерной алгебры является maple. Она была разработана
в 1980-х гг. и вобрала в себя лучшие черты других систем,
разработанных в конце 1960-х гг. Для пользователя имеется язык
высокого уровня с современным синтаксисом, более подходящий
для описания алгебраических алгоритмов.
Системы компьютерной алгебры общего назначения были раз-
разработаны также и для микрокомпьютеров, но обычно они более
медленные и менее понятливые, чем их сородичи, спроектиро-
спроектированные для больших ЭВМ; наиболее распространенной из таких
систем является /i-math.
В прошлом системы компьютерной алгебры в общем не получа-
получали широкого распространения, во-первых, из-за медлительности,
поскольку основные арифметические операции должны были быть
в явном виде запрограммированы, а не реализованы на уровне
аппаратного обеспечения, а во-вторых, из-за быстрого истоще-
истощения пространства памяти, отводимого для хранения символьных
выражений, в силу роста результирующих и промежуточных вы-
вычисляемых выражений. Сегодня, однако, с развитием недорогих
компьютеров системы компьютерной алгебры стали значительно
более доступными для обучения и исследований. Во время напи-
написания этой книги (начало 1987 г.) фирма Hewlett-Packard постав-
поставляла карманный калькулятор HP-28с для компьютерной алгебры
стоимостью приблизительно 200 долларов.
Упражнения
Раздел 1.2
1.
а. Предполагая существование алгоритма Бп, возводя-
возводящего целое число в степень п многократным умноже-
умножением, используйте обозначение О (определение 1.2.1),
чтобы оценить время вычисления функции
30 Что такое компьютерная алгебра?
Ь. Если алгоритм F вычисляет п!, умножая сначала 2 на
3, затем результат на, 4, затем новый результат на 5
и так до п, то чему равно время вычисления функции
<р(п)?
(Указание. В обеих частях упражнения воспользуй-
воспользуйтесь тем, что число цифр в произведении двух чисел
либо равно сумме числа цифр в сомножителях, либо
на 1 больше этой суммы.)
2. Для суммы первых п кубов имеет место формула
«3 =
= [п(п
Пользуясь О-обозначениями, оцените в терминах простой
функции от п
a. число базисных (битовых) операций, необходимых
для выполнения вычислений в левой части этого ра-
равенства;
b. число базисных (битовых) операций, необходимых
для выполнения вычислений в правой части этого
равенства.
3. Предположим, что в нашем распоряжении имеется чрез-
чрезвычайно длинный список, содержащий все простые числа
по п включительно. Оцените число битовых операций,
необходимых для вычисления произведения всех простых
чисел, меньших п. (Указание. Воспользуйтесь знамени-
знаменитой теоремой о простых числах, включенной в разд. 2.3.1.
Согласно этой теореме,
Urn 7г(п)/(п/1пп) = 1,
п—юо
где х(п) представляет число простых чисел, меньших, чем
п; для больших п частное n/lnn аппроксимирует тг(п).)
Назначение двух следующих упражнений состоит в том, чтобы
познакомить читателя с доступными системами компьютерной
алгебры.
4. Вычислим общую формулу для значения суммы первых п
целых чисел. Заметим, что она имеет вид
1 + 2 + 3+ h" = an2 + 6n + c
Упражнения по программированию 31
и нам нужно найти численные значения констант а,Ь и с.
Для этого последовательно подставим вместо п числа 1, 2
и 3 и решим получившуюся систему трех уравнений.
5. Повторите намеченную выше процедуру, чтобы вычислить
общую формулу для значения суммы квадратов первых
п целых чисел. (Указание. Общая формула имеет вид
I2 + 22 + З2 + • • • + п2 = а ¦ п3 + 6 • и2 + с ¦ п + d.)
Упражнения по программированию
Раздел 1.2
Эта серия упражнений предназначена только для опытных
программистов.
1. Предположим, что вы проектируете ссылочную систему
распределения памяти для представления и преобразова-
преобразования полиномов от одной переменной с целыми коэффици-
коэффициентами и что вы решили устроить звено, используя два
последовательных машинных слова, одно из которых отво-
отводится под показатель степени и поле ссылки, а второе —
под поле коэффициента:
< х битов к
Показатель степени [
Коэффициент
— у битов у
Следующий
Напишите процедуры на языке высокого уровня (без ис-
использования логических операций или структурированных
записей), которые будут помещать значения в любое поле и
читать значения из любого поля, не разрушая содержимое
других полей.
2. Установив формат звеньев, напишите процедуры, которые
будут (а) инициализировать доступное пространство, т.е.
образовывать односвязный список (связанный через поле
ссылки) и возвращать указатель, указывающий на пер-
первое звено в этом списке (для нашего проекта достаточно
300 звеньев); (Ь) брать звено из доступного пространства
для использования в вычислениях; (с) возвращать звено
32
Что такое компьютерная алгебра?
в доступное пространство, если оно более не нужно;
(d) определять длину, т.е. число звеньев, любого списка.
3. Реализуйте классические алгоритмы выполнения арифме-
арифметических операций с длинными целыми числами.
4. Покажите, что если t'i = (ао,..., an-i) и i2 = (Ьо,..., 6m_i)
— два длинных целых числа, таких, что L{i{) — п, Lfo) =
т, то <roiv(»'ii»2) = О[т(п — т + 1)]. [Указание. Покажи-
Покажите, что L(q) ^ п - т + 1, так что q - gn_m,..., q0 и для
определения каждого д,- требуется не более т умножений.]
5. Предположим, что внешнее представление полинома с це-
целыми коэффициентами от одной переменной имеет ту же
форму, что и его внутреннее представление, описанную в
этом разделе, т.е. (r,cr,er,cr-i,er_i,. ..,cltei), г ^ 1, где
члены с< представляют коэффициенты, а е,- — показатели
степеней. Пользуясь процедурами (a)-(d) упр. 2 и предпо-
предполагая наличие дружественных к пользователю сложения и
умножения целых чисел, напишите новые процедуры, кото-
которые будут (а) читать входной полином и преобразовывать
его во внутреннее ссылочное представление (возвращается
указатель на начало этого списка); (Ь) записывать выход-
выходной полином; (с) вычислять сумму pi(x) + р^(х) для любых
двух заданных полиномов и (d) вычислять произведение
Pi(x) • р2(х) для любых двух заданных полиномов.
6. Пусть р(хи х2,..., xv) = Еоосп РН*1. х2, • • •, Bv-i) ¦ (xvy —
полином от v переменных с целыми коэффициентами; че-
через di\p(x)] обозначим его степень по ж,-. Ниже мы будем
обозначать через р(х) полином p(xi,X2, ¦¦ -,xv) при лю-
любом значении v. Индукцией по v определим две нормы
|р(х)|оо и |p(x)|i следующим образом: если v = 0, то
|р(х)|оо = b(x)|i = |р(х)|, поскольку |р(х)| — целое чис-
число. Лля v > 0 положим |р(х)|оо = maxo^jsjn |р;(х)|оо (наи-
(наибольший коэффициент) и |p(x)|i = Eo<j<n bj'(x)li (сумма
коэффициентов).
a. Покажите, что Z,[|p(x)|TO] ~ Ь[|р(х)|х].
Составьте алгоритм для работы с карандашом и
бумагой, который для двух полиномов р\ (х) и рг(х) от
многих переменных с целыми коэффициентами будет
b. вычислять их сумму pi(x) -ЬргМ за время
0[max{L[|p1(x)|00],L[b(x)|O0]}
Литература 33
с. вычислять их произведение pi(x) -^(x) за время
x)|co] • ?[|Р2(х)|оо]
Литература
Flanders H. Scientific Pascal. Reston, VA, 1984.
Forsythe G.E., Malcolm M.A., Moler C.B. Computer methods for mathe-
mathematical computations. Prence-Hall, Englewood Cliffs, NJ, 1977.
Horowitz E., Salmi S. Fundamentals of data structures. Computer Science
Press, Rockville, MD, 1976.
Knuth D. The art of computer programming. Vol. 2: Seminumerical
algorithms. Addison-Wesley, Reading, MA, 1981. [Имеется перевод
предыдущего издания: Кнут Д. Искусство программирования
для ЭВМ. Т. 2. - М.: Мир. 1977.]
Pavelle R., Rothstein M., Fitch J. Computer algebra. Scientific Ameri-
American. 136-152, December 1981.
Petricle S.R. (ed.) Proceedings of the 2nd symposium on symbolic and
algebraic manipulation. Association for Computing Machinary, New
York, NY, 1971.
-4-274
Часть II
МАТЕМАТИЧЕСКИЕ ОСНОВАНИЯ
И ОСНОВНЫЕ АЛГОРИТМЫ
Важнейшее значение для любой вычислительной системы имеет
лежащая в ее основании алгебраическая структура. Потребова-
Потребовалось время, чтобы математики осознали, что при любых вычис-
вычислениях важна сама операция, а не только вычисляемые объекты.
Хотя многие примеры алгебраических систем были хорошо извес-
известны в девятнадцатом столетии, абстрактная алгебра оформилась
как самостоятельная наука только к двадцатым годам нашего века,
позволив рассмотреть с единой точки зрения и упростить многие
теории, которые казались раньше не связанными между собой. В
этой части книги вводятся главные алгебраические системы —
группы, кольца, поля — и рассматриваются основные алгоритмы
для вычислений в этих системах.
В гл. 2 мы рассматриваем основные свойства целых чисел и
алгоритмы для работы с ними, в гл. 3 то же самое делается для
полиномов. Материал существен для понимания ч. III настоящей
книги.
Глава 2
Целые числа
Старейшая область математики — теория чисел, изучение
свойств целых (положительных) чисел — оказывается весьма
полезной в современном исследовании алгоритмов. Многие извес-
известные задачи теории чисел при рассмотрении с алгоритмической
точки зрения превращаются в глубокие и притягательные от-
открытые проблемы, причем нерешенной является не проблема
вычисления, а проблема быстрейшего вычисления. Кроме то-
того, целые числа очень часто встречаются в различных областях
математики, и, изучая алгебру, мы снова сталкиваемся с поняти-
понятиями, значение которых впервые было замечено в связи с целыми
числами; те же понятия позднее оказались полезными в гораздо
более общих ситуациях. В этой главе рассматриваются те свой-
свойства целых чисел и те алгоритмы, которые нам понадобятся в
дальнейшем.
2.1
Основные понятия
Материал этого раздела, без сомнения, знаком читателю. Из-
Изложение будет достаточно неформальным (Sims, 1984).
2.1.1. Множества
Алгебраическая система — это множество объектов вместе
с набором операций, позволяющих комбинировать эти объекты.
Изучаемые нами объекты и операции над ними можно эффек-
эффективно описывать на языке теории множеств; см. п. 1 раздела
«Исторические замечания и литература».
Мы можем рассматривать множество просто как набор неко-
некоторых специфических элементов. Если А — множество их —
его элемент, то мы будем писать х € А и читать это как «а;
принадлежит А» или «х — элемент из А»; х ? А читается как
«х не принадлежит А». Множество А является подмножеством
множества В, или А содержится в В (мы пишем А С В), если
каждый элемент из А является элементом из В; другими словами,
36
Целые числа
х ? А влечет за собой х ? В. Лва множества А и В равны,
А = В, если каждый элемент одного из них является элементом
другого И обратно, иначе говоря, А С В и В с А. Множество А
— собственное подмножество множества В, если А С В и А ф В
(не равно). Имеется специальное множество, которое называется
пустым и обозначается 0, не содержащее ни одного элемента, т.е.
х ? 0 для любого х. Пустое множество является подмножеством
каждого множества, т.е. 0 С А для любого А.
В нашей неформальной теории множеств мы будем считать, что
множество определено, как только указаны его элементы. Мы бу-
будем использовать обозначение { х : Р(х) } для множества элементов
х со свойством Р{х). Иногда элементы множества будут просто
перечисляться между фигурными скобками {...}. Множество,
состоящее из одного элемента, {х}, называется синглетоном.
Для часто встречающихся числовых множеств имеются специ-
специальные обозначения. Натуральные числа образуют множество N =
{ 0,1,2,...}, целые числа — множество Z ={..., —2, —1,0,1,2,...},
а рациональные числа составляют множество Q = {х/у :i,y ?
2, у ф 0}. Через Ж мы будем обозначать вещественные числа;
комплексные числа образуют множество С = {х + iy : х,у ? Ж},
где j2 = —1. Мы имеем цепочку включений KcZcQcRcC;
совокупности ненулевых элементов соответствующих множеств
обозначаются через Z*, Q*, Ж*, С*. Вещественные числа раз-
разделяются на положительные, отрицательные и нуль; Z+, <Q>+, Ж+
обозначают совокупности положительных элементов соответству-
соответствующих множеств.
Над множествами можно выполнять некоторые операции и полу-
получать новые множества. Обгединение Аи В множеств А и В — это
множество {х : х ? А или х & В). Объединение состоит из элемен-
элементов, принадлежащих либо А, либо В, либо обоим этим множествам.
Пересечение А П В — множество {х : х ? Атл х ? В}. Пересечение
состоит из общих элементов множеств Аи В. Разностью называет-
называется множество А — В = { х : х ? А, х ? В}. Декартово (или прямое)
произведение — множество Ах В = {(х,у): х ? А, у ? В) — назва-
названо так в честь французского математика Р. Декарта A596-1650).
Элементами этого произведения являются пары (х, у). Наконец,
имея множество А, мы можем образовать множество всех его
подмножеств р(А) — { В : В С А }. Отметим, что А и 0 всегда
принадлежат р(А).
Множество I называется множеством индексов для семейства
множеств F = { Ai }, если для каждого i ? I задано множество А»
Основные понятия 37
из семейства F. Если I — множество из п элементов, мы часто
будем обозначать семейство из п различных множеств через F =
{А\,... , Ап }. Как и в случае двух множеств, можно рассматривать
объединение и пересечение семейства множеств, U,-g/j4< = {х : х ?
Ai для некоторого t} и П^/А' = {х : х ? Л,-для всех »'}. Для
семейства из п множеств декартово произведение определяется
как
Д А{ = At x ••• х Ап = {(xu...,xn):xi?Ai}.
Элементами произведения являются строки длины п. Бели А =
А\ = ••• = Ап, то n-кратное произведение обозначается кратко
через А".
Определение 2.1.1. Разбиением множества S называется множес-
множество 7г его подмножеств, такое, что:
a. Если А ? ж, то А ф 0.
b. Если А ? ж и В ? тг, то либо А — В, либо А Л В = 0.
c. Каждый элемент множества S принадлежит некоторому эле-
элементу множества тг.
Иначе говоря, разбиение множества S — это семейство его не-
непустых подмножеств, таких, что каждый элемент из 5 принадлежит
в точности одному подмножеству из этого семейства. Элементы
разбиения называются блоками. Например, {{1,2,3},{4,5,6} } —
разбиение множества {1,2,3,4,5,6} на два блока. Подмножество
R множества 5 называется множеством представителей для раз-
разбиения ж, если R содержит по одному элементу из каждого блока
7Г.
Приведем предложение, утверждающее, что пересечение дист-
дистрибутивно относительно объединения. В упражнениях содержатся
другие результаты относительно объединений и пересечений.
Предложение 2.1.2. Для множеств А, В, С выполняется равенс-
равенство An(BUC) = (АПВ)и(АПС).
Доказательство. Докажем половину утверждения, а именно вклю-
включение АП (В U С) С (А П В) U (Л П С). Пусть х ? А П (В U С). Тогда
х 6 А и (х ? В или х ? С). Если х ? В, то х ? А Л В, Если
х ? С, то х ? А П С. В любом случае х принадлежит объединению
(А П В) U (А П С). Доказательство обратного включения оставим
читателю в качестве упражнения. ?
38
Целые числа
2.1.2. Отношения эквивалентности
Бинарным отношением R на непустом множестве А называется
подмножество декартова произведения А х А, т.е. Я с А х А. На-
Например, отношение «меньше, чем», х < у, на множестве Z задается
подмножеством ZxZD?T = {(i,j/):j/-i положительно}. В более
общем случае га-арным отношением Я на непустом множестве А
называется подмножество декартовой степени А", т. е. R с Ап.
Отношение Я = {(у,х) : (х,у) € Я} называется обратным (ин-
(инверсным) к R. Очевидно, что (Я) = Я. Например, обратным к
> является <.
Определение 2.1.3. Отношением эквивалентности Е на множес-
множестве А называется бинарное отношение Е С Ах А, удовлетворяющее
следующим трем условиям:
a. (х, х) ? Е для всех х ? А (рефлексивность).
b. (х, у) ? Е влечет за собой (у,х) ? Е (симметричность).
с- (*>У) € Е и (у, г) ? Е влечет за собой (x,z) ? Е (транзитив-
(транзитивность).
Будем писать х =Е у (или просто х = у, когда понятно, о каком Е
идет речь), если (х,у) ? Е; это читается так: «ж эквивалентно у».
Лля каждого элемента х ? А образуем множество эквивалентных
ему элементов х = {у ? А : у ш х], которое называется классом
эквивалентности элемента х. В силу рефлексивности х ? х.
Элемент у ? х называется представителем этого класса эквива-
эквивалентности. Если у € х, то из симметричности и транзитивности
следует, что у = х, поэтому любые представители некоторого
класса эквивалентности определяют один и тот же класс экви-
эквивалентности. Образуем множество всех возможных (различных)
классов эквивалентности, А/ = = {х : х ? А}. Оно называется
фактормножеством множества А по этому отношению эквивален-
эквивалентности и, как мы увидим ниже, является разбиением множества
А.
Пример. На Zx Z* определим отношение эквивалентности (х, у) =
{х',у'), если ху' = х'у. Например, (-3, -9) = B,6) и (-1,2) = C, -6).
Проверьте, что это действительно отношение эквивалентности.
Мы утверждаем, что фактормножество Zx Z*/= может быть отож-
отождествлено с множеством рациональных чисел Q. Действительно,
элементы из Q представляются дробями х/у, х ? Z, у ? Z*, и
х/у = х'/у', когда ху1 = х'у. Таким образом, элементы из Q — это
в точности классы эквивалентности.
Основные понятия
39
Покажем, что между отношениями эквивалентности на множес-
множестве А и разбиениями этого множества существует тесная связь.
Предложение 2.1.4. Если Е — отношение эквивалентности на
множестве А, то фактормножество А/Е = {а : а ? А} является
разбиением множества А. Обратно, если ж — разбиение множества
А, то его можно представить как фактормножество А/Е для
некоторого отношения эквивалентности Е на множестве А.
Доказательство. Для доказательства первой части предложения
нужно показать, что различные классы эквивалентности не пере-
пересекаются и что их объединение совпадает с А.
Так как Е рефлексивно, для всякого а ? А выполняется а ? а.
Отсюда следует, что каждый класс а непуст и что их объединение
совпадает с А.
Докажем, что различные классы не пересекаются. Предпо-
Предположим, что х € а и х € b для некоторого х ? А; покажем, что
а = Ъ. По определению а и b имеем (х,а) ? Е и (х, Ь) ? Е; в силу
симметричности (а,х) ? Е и (х,Ь) ? Е, что по транзитивности
влечет за собой (а, 6) ? Е и a = b.
Для доказательства второй части предложения определим от-
отношение ЕТ на А, такое, что (а, 6) ? ЕТ тогда и только тогда, когда
a vl b лежат в одном и том же блоке разбиения ж. (Покажите,
что это отношение эквивалентности.) Мы покажем, что А/Ег — ж;
ниже жа обозначает единственный блок ж, содержащий элемент
а? А.
Докажем включение ж С А/ЕТ. Пусть жа непусто; докажем, что
тга = a ? А/ЕТ. Рассмотрим х ? а; по определению а имеем (х, о) ?
Е-г, откуда получаем х ? жа по определению Ет, что доказывает
включение а С жа. Для доказательства обратного включения
рассмотрим х ? 7га; тогда (х,а) ? Ет по определению Ет, откуда
получаем х ? а по определению а, что доказывает включение
жа С а. Таким образом, каждый блок жа разбиения тг совпадает с
некоторым классом эквивалентности а, принадлежащим А/Ет.
Доказательство обратного включения А/Ет С ж предоставля-
предоставляется читателю. П
На практике значение отношений эквивалентности связано с
идеей игнорирования подробностей; а именно, когда мы имеем дело
с классами эквивалентности, мы как бы не замечаем различий
между эквивалентными элементами множества А.
40
Целые числа
Пример. Зафиксируем целое число т > 1. Зададим такое от-
отношение эквивалентности на Z: 6 =т а, если Ь — а = mq для
некоторого q € Z; иначе говоря, Ь =т а, если их разность есть
целое кратное т. Несколько примеров: -4 =5 16, 91 =7 0 и
1087 =2 1. Класс эквивалентности элемента а — это множес-
множество а = {а + mq : q € Z}, которое мы также будем обозна-
обозначать а = а + тЪ. Если m = 5, то 0 = { ... , -10, -5,0,5,10,... },
1 = {..., —9, —4,1,6,11,...} и так далее; таким образом, мы раз-
разбили Z на непересекающиеся подмножества 0,1,2,3,4, и фактор-
фактормножество есть Z/=5= {0,1,2,3,4}. Заметим, что, хотя каждый
из классов эквивалентности содержит бесконечно много элемен-
элементов, множество классов эквивалентности содержит всего пять
элементов. В общем случае Z/=m = { 0,... ,m — 1} содержит т
элементов.
2.1.3. Функции и алгебраические системы
Мы начнем со следующего определения.
Определение 2.1.5. Пусть А и В — непустые множества.
Функцией из множества А в множество В или отображением
множества А в множество В называется правило, ставящее в
соответствие каждому элементу х € А единственный элемент
уев.
С теоретико-множественной точки зрения мы можем рассмат-
рассматривать функцию / из А в В как подмножество произведения Ах В,
т.е. / С А х В, со следующим свойством: для всякого х Е А
существует ровно один элемент у € В, такой, что (х,у) ? /. Для
х ? A f(x), образ х или значение / в х — это единственный
элемент у € В, соответствующий элементу х. Мы используем
для функции / из А в В обозначение f;A —* В или А —* В.
Множество f(A) = {f(x) : x € А] (подмножество множества В)
называется образом А относительно функции /. Для у ? В мно-
множество /~1(у) = {х € А : f(x) = у} (подмножество множества А)
называется прообразом элемента у. Прообраз у — множество
всех элементов из А, образ которых равен у. (Замечание. Как
мы увидим ниже, /-1 является подмножеством в А х В, но не
функцией.) В случае когда множества обладают алгебраической
структурой (когда мы имеем дело с группами, кольцами, полями
— эти понятия будут определены ниже), функции, сохраняющие
алгебраическую структуру (бинарные операции), называются го-
гомоморфизмами (homo = та же, morphism = форма). Более точно,
Основные понятия
41
отображение f:A—* В, где А и В — множества с алгебраической
структурой, называется гомоморфизмом, если
ii. Да 6) = /(<*)•/(б),
iii.
Здесь 1д и 1в — мультипликативные единицы (см. определение
2.1.13) в А и В. (Отметим, что условие iii в общем случае не
выполняется, но будет справедливо везде в этой книге.)
Функция (отображение) f:A —> В называется сюргективной
{отображением на), если f(A) = В (иначе говоря, каждый элемент
в В является образом некоторого элемента из А). Функция /
называется взаимно однозначной или ингективной, если х ф х'
влечет за собой /(ж) ф f(x') (иначе говоря, образы различных
элементов из А различны в В). Инъективная и сюръективная
функция называется биективной или просто биекцией. Биективный
гомоморфизм называется изоморфизмом, а множества А к В —
изоморфными; это обозначается через А — В.
Примеры функций. Пусть А, В обозначают множества.
1. Для всякого множества А тождественная функция id: А —> А
задается формулой id(x) = х для любых х ? А. Очевидно,
что id биективна.
2. Проекция произведения множеств на первый сомножитель
Pi'.A х В —> А задается формулой pi[(x, у)] = х. Она сюръ-
ективна. Чему равно jaj (ж) для х 6 А1 Аналогично опреде-
определяется проекция на второй сомножитель В.
3. Если на А задано отношение эквивалентности =, то имеется
каноническая (или естественная) функция s: А —> А/=, кото-
которая отображает каждый элемент х в его класс эквивалентнос-
эквивалентности, s(x) = х, в фактормножестве А/=. Мы будем использовать
одно и то же обозначение х для класса эквивалентности как
в случае, когда мы рассматриваем его как подмножество в
А, так и в случае, когда мы рассматриваем его как элемент
фактормножества А/ =; обычно из контекста понятно, что
имеется в виду. Например, в случае s^-.Ъ —+ Z/=5 прообраз
класса эквивалентности, 4 = {... ,—6,-1,4,9,...}, рассмат-
рассматриваемого как элемент фактормножества, — это множество
»5 хD) = 4, которое в последнем случае рассматривается как
подмножество в Ъ.
42 Целые числа
4. Функция следования succ: N —»N задается формулой succ(n) =
п + 1. Она инъективна. (Почему?)
5. Функция сложения +:ZxZ-»2, где +(х,у) = х + у — пример
бинарной операции. Чему равно +~1@)? Является ли
функция + инъективной либо сюръективной?
Как сказано выше, сложение — пример бинарной операции. Би-
Бинарная операция ф на множестве S может обладать следующими
двумя важными свойствами. Если для любых х, у в S выполняется
равенство хфу — уфх, то § называется коммутативной. Если
для всякой тройки элементов х,у,г в S выполняется равенство
хф(уфг) = (хфу)фг, то © называется ассоциативной. Например,
на Ъ операции + и • коммутативны и ассоциативны, а операция —
не обладает ни одним из этих свойств.
Ладим точное определение конечного множества. Будем на-
называть множество S конечным, если всякая инъективная функция
f:S—*S сюръективна. Как мы увидим, понятия сюръективности и
инъективности совпадают для функций, отображающих конечное
множество S в S (теорема 2.1.7); это наиболее важное свойство
конечных множеств. Функция следования succ:N —> N, заданная
равенством succ(n) = n + 1, инъективна, но не сюръективна; по-
поэтому, согласно нашему определению, множество N не конечно.
Справедлива следующая теорема.
Теорема 2.1.6. Множество 5 конечно тогда и только тогда, когда
существуют единственное п ? N и биекция множества {1,2 п }
на 5.
Доказательство. Теорема интуитивно очевидна. ?
Теорема 2.1.7. Пусть S — конечное множество и f:S —* S —
сюръективная функция. Тогда / инъективна.
Доказательство. Так как / сюръективна, для каждого элемента
s G S мы можем выбрать t € S, такой, что f(t) = s; определим
функцию g:S —*¦ S равенством g(s) = t. Если g(si) = g(s2), то
si = f[g(si)] — /Ь(*г)] = «2, и потому д инъективна; следовательно,
поскольку 5" конечно, д должна быть сюръективной. Если бы /
не была инъективной, то существовали бы S\ ф з2 в S, такие, что
f(si) = /(«г)- Однако, поскольку д сюръективна, существуют ti
и <г в S, такие, что g{ti) = «i и gfa) = s2. Имеем ti = f[g{ti)] =
f(si) = f{si) — flgfa)] — '21 что противоречит соотношению g(ti) ф
Основные понятия 43
Две функции f,g:A -* В равны, / = д, если f(x) — д(х) для
всех х G А. Если f:A -* В и д.В —¦ С — две функции, то
f(x) € В для всякого а: € А и, следовательно, «/[/(я)] имеет
смысл. Мы определим композицию функций / и д как функцию
до /: А —> С, заданную равенством д о f(x) = g[f{x)] для любых
х ? А. Композиция д о / действует так: сначала применяется /,
затем д.
Пример. Сложение по модулю 5 — это функция +5:ZxZ-»Z/=5,
заданная равенством +ъ(х,у) = 85(х + у). Она является компози-
композицией функции сложения + и канонического факторотображения «5
в фактормножество из предыдущего примера: +5 = зь о +.
В случае когда композиция функций имеет смысл, выполняется
закон ассоциативности.
Предоюжение 2.1.8 (закон ассоциативности для композиции).
Для функций f:A—*B,g:B—*Cvih:C—+D справедливо равенство
ho(gof) = (hog)of.
Доказательство. Для х € А имеем h о (р о /)(х) = h[g о f(x)} =
ЬЫЛ)]} = h о g[f(x)} = (hog)o f(x). D
Если f:A—*B — биекция, то для каждого у G В прообраз
/-1(j/) состоит ровно из одного элемента { а: }, такого, что f(x) = у.
Определим обратную функцию f~l:B —* А как функцию, которая
каждому у ставит в соответствие единственный элемент х, такой,
что f(x) = у, где у € В. Применяя операцию композиции к / и
/-1, получаем функции /-1 о/:Л-+Аи/оf~l:B —¦ В; нетрудно
проверить, что /-1 о /(ж) = х и f of~l(y) — у. Таким образом,
/-1 о / = idа и / о /-1 = idg, где через id а и ide обозначены
тождественные функции на соответствующих множествах.
Суммируем некоторые свойства функций, которые сохраняются
при композиции.
Предложение 2.1.9. Пусть f:A—*Bvig:B^C; тогда
a. Если /, д сюръективны, то д о / сюръективна.
b. Если /, д инъективны, то д о f инъективна.
c. Если /, д биективны, то д о / биективна и (д о /)-1 = /-1 о
д~х\ обратная функция к композиции равняется композиции
обратных функций в обратном порядке.
44 Делые числа
Доказательство. Докажем только часть а, оставив остальное чи-
читателю. Пусть с € С; поскольку g отображает В на С, найдется
элемент 6 6 В, такой, что g(b) = с. Далее, так как / также сюръ-
ективна, найдется элемент а 6 А, такой, что /(о) = Ь. Поэтому
g о /(а) = g[f(a)] = g(b) = с, и go f сюръективна. ?
Рассмотрим функцию f:A —* В. Определим отношение экви-
эквивалентности на множестве А следующим образом: два элемента
х, х' € А эквивалентны, х = х', если f(x) = f(x'). Проверьте,
что это отношение эквивалентности. Зададим теперь функцию
i:A/=—* В на множестве классов эквивалентности равенством
»(х) = f(x) для класса эквивалентности х. Мы определили образ
класса х под действием i через представитель х; нужно прове-
проверить, что если мы выберем другой представитель х' € х, так что
х = х', то получим такой же образ. По нашему определению t
имеем f(x') = f(x'). Но х' = х означает, что f(x) = f(x'), поэтому
j определена корректно. По построению » инъективна. Пусть
s: А —* А/= — каноническое отображение на фактормножество. В
использованных обозначениях мы доказали следующую теорему.
Теорема 2.1.10 (теорема о факторизации для функций). Пусть
f:A—*B — произвольная функция. Тогда диаграмма
А/=
представляет / в виде композиции сюръекции s и инъекции г, а
именно / = i о s.
Пример. Рассмотрим функцию /:Z —* N, f(x) = х2, х ? 7L. Она
представляется в виде / = t о s, где сюръекция — это функция
s: Z —> Z/=Q3= {0} U { х = {х, —х} : х € Z* }, а инъекция — функция
i:Z/=()j-»N.
В теореме 2.1.10 утверждается, что / пропускается через фак-
фактормножество А/ =. Когда множества имеют алгебраическую
структуру (например, структуру группы или кольца), фактор-
фактормножество также имеет ту же структуру; можно использовать те-
теорему о факторизации, чтобы показать, что всякий гомоморфизм
представляется в виде композиции сюръективного и инъективного
гомоморфизмов. Непосредственно получаем
Основные понятия 45
Следствие 2.1.11. Функция i:A/=—> f(A), где f(A) — образ
множества А, лежащий в В, является биекцией на f(A).
Рассмотрим один важный пример, который приведет нас к
понятию группы, первой алгебраической системы, которую мы
хотим представить.
Пусть А — некоторое множество. Обозначим множество би-
екций из Л в Л через Bij(A) = {А —* A, f — биекция}. По
предложению 2.1.8 композиция функций ассоциативна; по предло-
предложению 2.1.9 композиция двух биекций также является биекцией.
Далее, тождественная функция id принадлежит Bij(A), и если /
Принадлежит Bij(A), то и обратная функция /~г принадлежит
Bij(A). Собирая вместе эти результаты, мы получаем следующую
теорему.
Теорема 2.1.12 (определение группы). Пусть А — произволь-
произвольное непустое множество. Рассмотрим множество биекций на А,
Bij(A) = {A-^A,f — биекция}. Тогда:
a. /, д G Bij(A) влечет за собой f од ? Bij(A).
b. h о (/ о д) = (Л о /) о д для любых /, д, h G Bij(A).
c. idof = foid=f для / G Bij (A).
d. Если / G Bij (А), то /-1 G Bij{A) и f1 о / = / о /-1 = id.
Пункт а теоремы 2.1.12 утверждает, что Bij(A) замкнуто отно-
относительно бинарной операции о, пункт b — что о ассоциативна,
пункт с — что тождественная функция является единичным эле-
элементом в Bij(A) и пункт d — что каждый элемент из Bij(A) имеет
обратный в Bij(A). В общем случае множество, замкнутое отно-
относительно ассоциативной бинарной операции, имеющее единичный
элемент и в котором все элементы обратимы, называется группой.
Таким образом, Bij(A) — группа относительно операции о. Обыч-
Обычно если операция в группе называется сложением (умножением),
то группа называется аддитивной (мультипликативной). Пусть
п ={!,... ,п} — множество из п элементов; тогда Sn = Bij(n)
обозначает множество всех перестановок на п элементах. Sn
называется симметрической группой степени п. Она содержит
п\ элементов. Очевидно, что ненулевые рациональные числа с
операцией умножения образуют группу с 1 в качестве групповой
единицы и 1/х в качестве обратного элемента к произвольному
ненулевому элементу х; все множество рациональных чисел не
образует группу.
46 Целые числа
Рассмотрим теперь алгебраические системы с двумя бинарными
операциями — сложением и умножением.
Определение 2.1.13. Кольцом (R,+, •) называется алгебраичес-
алгебраическая система, удовлетворяющая следующим условиям:
a. R является коммутативной группой относительно операции +
(коммутативность означает, что х + у — у + х для любых х,у €
R). Единичный элемент относительно операции сложения
называется нулевым элементом и обозначается Од или просто
0.
b. R не является группой по умножению, так как (некоторые)
элементы могут не иметь обратных, однако оно замкнуто
относительно умножения, умножение ассоциативно и сущест-
существует единичный элемент относительно умножения, обознача-
обозначаемый 1д или просто 1.
c. Умножение дистрибутивно относительно сложения: x(y+z) —
ху + xz и (у + z)x — ух + zx для любых x,y,z € R-
Множества Z, Q, Ж, С являются кольцами относительно обыч-
обычных операций. Некоторые примеры множеств, не являющихся
кольцами: множество натуральных чисел N, множество положи-
положительных вещественных чисел Ж+ с обычными операциями + и ¦,
множество Z — {5} всех целых чисел, кроме 5.
Множество Z — {5} не является кольцом относительно обычных
операций сложения и умножения, потому что для элементов а,
i ? 2- {5} сумма а + ft не обязательно принадлежит Ъ — {5};
например, 2+3 = 5. В этом случае мы говорим, что Z - {5}
не замкнуто относительно сложения, и подразумеваем, что Z —
{5} — подмножество большего множества Z, в котором сумма
и произведение элементов всегда имеют смысл. Аналогично
определяется незамкнутость относительно умножения.
Кольцо называется коммутативным, если умножение в нем
коммутативно, aft = fta. Пусть R — коммутативное кольцо, а
0, 1 обозначают единичные элементы для операций сложения
и умножения. Возможны две ситуации. В первой 0 ф 1 + 1 +
¦ • • + 1 (п раз) для любого п > 0. В этом случае мы будем
говорить, что R имеет характеристику 0; примерами являются
Z, Q, R и С. В другой ситуации существует п > 0, такое, что
0=1 + 1 + hl(n раз), и этот случай будет рассмотрен ниже.
Уделим теперь внимание двум очень важным типам коммута-
коммутативных колец.
Основные понятия
47
Определение 2.1.14. Элемент а ф 0 коммутативного кольца
R называется делителем нуля, если ab = 0 для некоторого ft ф
0 F также делитель нуля). Элемент и ф 0 из R называется
обратимым, если существует обратный к нему элемент, т.е. uv = 1
для некоторого v € R (v = u).
Пример. Рассмотрим алгебраическую систему (Z/=m,+,-); про-
проверьте, что это коммутативное кольцо. Как мы еще раз увидим
ниже, при работе с целыми числами по модулю т мы определяем
произведение двух классов эквивалентности из Z/=m как класс
эквивалентности, содержащий произведение представителей. Та-
Таким образом, если т = 8 и 2, 4 6 Ъ/=%, то 2 • 4 = 0; значит, 2 и
4 являются делителями нуля. Заметим, что при т — Ь подобный
пример невозможен. Действительно, каждый ненулевой элемент
из Z/=5 обратим; обратные к элементам 2, 3 и 4 — это элементы
3, 2 и 4 соответственно.
Из предыдущего определения несложно вывести, что элемент
кольца не может быть одновременно обратимым и делителем нуля,
и мы приходим к определению двух важных классов нетривиаль-
нетривиальных коммутативных колец, где нетривиальность означает, что
кольцо имеет более одного элемента.
Определение 2.1.15. Областью целостности называется нетри-
нетривиальное коммутативное кольцо без делителей нуля.
Классический пример области целостности (из которого воз-
возникло название) — кольцо целых чисел Z; в нем обратимы только
элементы 1 и —1.
Определение 2.1.16. Полем называется нетривиальное комму-
коммутативное кольцо, в котором каждый ненулевой элемент обратим,
или, эквивалентно, поле (F, +,•) — это алгебраическая система,
удовлетворяющая следующим условиям:
a. F — коммутативная группа относительно операции +.
b. Множество ненулевых элементов из F образует коммутатив-
коммутативную группу относительно операции •.
c. Умножение дистрибутивно относительно сложения.
Отметим, что поле является областью целостности. Несложно
проверить, что множество вещественных чисел Ж с обычными опе-
операциями сложения и умножения является полем; Q и С также поля.
Эти поля содержат бесконечно много элементов. Существуют
48 Целые числа
и поля с конечным числом элементов; они называются полями
Галуа (GF). Например, множество {0,1} с операциями сложения
и умножения по модулю 2 — поле, обозначаемое GFB); проверьте
это.
Рассмотрим конечное поле из q элементов GF(q) и образуем
последовательность сумм
Е i=
¦ + 1 (* раз),
it = 1,2,3, Так как поле замкнуто относительно сложения,
эти суммы должны быть его элементами; более того, так как
количество элементов определяемого поля конечно, в этой после-
последовательности должны быть повторения. Поэтому существуют
положительные целые числа к' и к", к' < к", такие, что
Е i= Е 1-
Отсюда следует, что Si<i<t"-k' 1 = 0, и потому существует
наименьшее целое положительное число А, такое, что XTi<»<a 1 = 0-
Это число А называется характеристикой поля GF(q). Например,
характеристика поля GFB) равняется двум, так как 1 + 1 = 0.
2L2 ""'
Наибольшие общие делители целых чисел
Вычисление наибольшего общего делителя целых чисел — одна
из старейших задач, исследованных математиками; предложенный
Евклидом метод ее решения является самым древним из сущес-
существующих теоретико-числовых алгоритмов. В этом разделе мы
рассмотрим алгоритм Евклида и близкие вопросы.
2.2.1. Делимость целых чисел
Мы начнем с очень важного принципа, который будет исполь-
использоваться в доказательствах (Childs, 1979).
Принцип полной упорядоченности. Пусть к0 — произволь-
произвольное целое число. Тогда всякое непустое множество целых чисел,
больших или равных ко, имеет наименьший элемент.
Наибольшие общие делители целых чисел 49
Доказательство. Докажем по индукции, что всякое множество
целых чисел ^ ко, не имеющее наименьшего элемента, должно
быть пустым. Пусть 5" — множество целых чисел ^ ко без
наименьшего элемента, и пусть р(к) — это утверждение «5" не
содержит целых чисел ^ к». Если мы покажем, что р(к) истинно
для всех к ^ к0, то отсюда будет следовать, что S пусто, так
как если j содержится в 5", то p(j) ложно. Очевидно, что р(ко)
истинно, потому что иначе S имело бы наименьший элемент,
поскольку ко содержалось бы в 5" и все содержащиеся в 5" числа
^ Jbo- Предположим, что р(п) истинно для некоторого n ^ ibo; мы
покажем, что р(п + 1) также истинно, завершая таким образом
доказательство по индукции. Если р(п + 1) ложно, то некоторое
число ^ п + 1 содержится в 5". Однако, поскольку р(п) истинно, 5"
не содержит чисел ^ п, откуда следует, что п +1 содержится в5и
является его наименьшим элементом. Мы получили противоречие.
Следовательно, р(п + 1) истинно и 5" пусто. ?
Можно показать, что принцип полной упорядоченности эквива-
эквивалентен принципу индукции (см. упр. 3 разд. 2.2.1) и что справедлив
двойственный принцип: если S — множество целых чисел, все эле-
элементы которого ^ ко, то S имеет наибольший элемент. Мы будем
многократно использовать этот принцип в данной книге.
Будем говорить, что ненулевое целое число а делит 6 или а
является делителем 6 (записывается а | 6), если существует с,
такое, что b = а • с. Например, ±7 | 28, так как 28 = 7 • 4 и
28 = (—7)(—4). Для любого ненулевого а имеем а | 0, ±1 | а и
±а | а. Понятие делителя будет очень важным в нашем изложении
теории целых чисел.
Одно из основных свойств целых чисел — это свойство делимос-
делимости или евклидовости, которое хорошо известно из арифметики.
Теорема 2.2.1 (свойство евклидовости). Для любого а и лю-
любого ненулевого Ь существуют единственные (целые) частное q и
остаток г, такие, что а = b • q + r, 0 ^ г < |6|.
Доказательство. Рассмотрим множество целых чисел вида а — kb,
где к пробегает все множество целых чисел, положительных и
неположительных; т.е. рассмотрим прогрессию
... , а - 36, а - 26, а - b, a, a + b, a + 26, а + 36,....
Выберем в этой последовательности наименьшее неотрицательное
число и обозначим его г, и пусть q обозначает соответствующее
-4-274
50
Целые числа
значение Jb. (Такое г существует, потому что множество {а — кЬ}
содержит отрицательные и неотрицательные значения, а из полной
упорядоченности следует, что непустое множество неотрицатель-
неотрицательных целых чисел содержит наименьший элемент.) По определению
г = а — qb ^ 0.
Для доказательства единственности допустим, что
и что г\ ф г. Пусть для определенности г\. < г, так что 0 < г - ri <
|6|; тогда
г - ri = (?i - q)b
и Ь\(г — Г\), что противоречит неравенствам 0 < г - п < \Ь\. ?
Определение 2.2.2. Пусть а и 6 одновременно не равны нулю.
Целое число d > 0 называется наибольшим общим делителем а и
Ь, если
a. d\ а и d\b.
b. Если с | а и с | Ь, то с | d.
Наибольший общий делитель чисел а и b обозначается через
gcd(a,6) или (a, b). Последнее обозначение можно спутать с па-
парой чисел, поэтому его смысл должен определяться из контекста.
Единственность наибольшего общего делителя следует из свой-
свойства Ь в определении и того, что он положителен: если d' —
другой наибольший общий делитель, то по свойству b d \ d' и
d' | d, поэтому d1 = d, поскольку оба положительны. Например,
A2,30) = A2,-30) = (-12,30) = (-12,-30) = 6. Наибольший общий
делитель двух целых чисел, одновременно не равных нулю, всегда
существует и может быть представлен в следующем виде.
Теорема 2.2.3 (существование gcd). Если а и 6 одновременно
не равны нулю, то существуют целые числа хну, такие, что
(а, 6) = ах + by.
Доказательство. Пусть d — наименьшее положительное целое
число вида ах+by, например, d = axo+by0, где х0, Уо не обязательно
определены однозначно. (Как и в доказательстве теоремы 2.2.1,
существование такого d следует из полной упорядоченности.)
Очевидно, что d > 0 и d обладает свойством Ь из определения 2.2.2.
От противного мы докажем, что d обладает также свойством а.
Наибольшие общие делители целых чисел 51
Допустим, что свойство а не выполняется, и предположим для
определенности, что d не делит Ь. Тогда Ь = dq + r, 0 <r <d, и,
следовательно, r = b-dq = b — (ахо + byo)q = a(-qx0) + 6A - qy0),
что противоречит минимальности d. О
Теорема не утверждает, что х и у определены однозначно, она
лишь говорит о том, что наибольший общий делитель может быть
выражен в таком виде. Например, 6 = A2, -30) = 12C) + (-30)A) =
12(—2) + (—30)(—1). Ниже, основываясь на свойстве евклидовости,
мы опишем алгоритм представления наибольшего общего делителя
в форме из теоремы 2.2.3.
Пользуясь понятием наибольшего общего делителя, мы можем
охарактеризовать целые решения линейных уравнений от двух
переменных (линейных диофантовых уравнений).
Теорема 2.2.4. Рассмотрим уравнение ах + by = с, в котором а и
6 не равны нулю одновременно, и пусть d = (a,b). Тогда
a. Уравнение разрешимо относительно z и у тогда и только
тогда, когда d | с.
b. Если х0, у0 — частное решение, то все решения имеют вид
Хо - n(b/d), уо + n(a/d) для всех п.
Доказательство. Мы докажем только часть а, оставив часть Ь
читателю в качестве упражнения. Предположим, что х и у
— целые числа, такие, что ах + by = с; тогда, так как d \ a
и d | Ь, то d | с. Предположим теперь, что d \ с, т.е. с = dk
для некоторого целого к. По теореме 2.2.3 существуют целые
числа s, t, такие, что d = as + Ы. Умножая это равенство на к,
получим с = dk = a(sk) + b(tk), откуда следует, что х = sk и у = tk
удовлетворяют уравнению ах + by = с. Q
Пример: уравнение 12ж - ЗОу = 84 разрешимо, поскольку
A2,-30) = 6|84. Одним его решением является пара х = 2,
у = —2, а все остальные имеют вид х = 2 + 5га, у = — 2 + 2га.
Два целых числа а и b называются взаимно простыми, если
(а,Ь) = 1. По теореме 2.2.3 это эквивалентно существованию
целых чисел s, t, таких, что as + Ы = 1. Справедлива следующая
теорема.
Теорема 2.2.5. Пусть целые числа а и 6 не равны нулю
одновременно, и пусть d = (а,Ь). Тогда a/d и b/d взаимно просты.
52 Целые числа
Доказательство. По теореме 2.2.3 существуют целые числа s, t,
такие, что d = as + bt. Разделив на d, получим 1 = (a/d)s + (b/d)t,
что влечет за собой (a/d,b/d) = 1. D
Теорема 2.2.6. Пусть а, 6 и с — целые числа и d = (a, 6). Если a
делит 6с, то a/d делит с.
Доказательство. Если а | 6с, то (a/d) | (b/d)c. Однако по теореме
2.2.5 (a/d,b/d) = 1, и по теореме 2.2.3 существуют целые числа
s, t, такие, что (a/d)s + (b/d)t = 1; умнакив это равенство на с,
получим c(a/d)s + c(b/d)t = с. Поскольку a/d делит c(a/d)s и c(b/d)t,
оно делит с. ?
Определение 2.2.7. Пусть а и 6 — ненулевые целые числа. Целое
число т > 0 называется наименьшим общим кратным чисел а и 6,
если
a. а | m и 6 | т.
b. Бели а | с и 6 | с, то т | с.
Наименьшее общее кратное чисел а и b обозначается через
lcm(a,b) или [а,Ь]. Единственность наименьшего общего кратного
следует из части Ъ и положительности т.
Теорема 2.2.8 (существование km). Бели а и 6 — ненулевые
числа, то их наименьшее общее кратное существует и справедливо
равенство [а, 6] = |aft|/(a,6).
Доказательство. Так как а и b не равны нулю, их наибольший
общий делитель d = (a, 6) отличен от нуля. Из равенства (ab)/d =
a(b/d) = (a/d)b и того, что числа b/d и a/d целые, следует, что
т = |a6|/d — положительное общее кратное чисел а и 6. Пусть
п — любое другое общее кратное чисел а и ft; тогда п = as — bt
для некоторых целых чисел s, t. Поскольку a | bt, то по теореме
2.2.6 (a/d) | t и t — u(a/d) для некоторого целого числа и. Из
равенства п = Ы = u(ab)/d вытекает, что т | п, поэтому m —
наименьшее общее кратное чисел а и Ь. Как уже упоминалось
выше, единственность следует из части Ь определения 2.2.7 и
того, что т положительно. ?
Наибольшие общие делители целых чисел 53
2.2.2. Алгоритм Евклида и теорема Ламе
Теперь мы изложим классический алгоритм Евклида вычисле-
вычисления наибольшего общего делителя двух целых чисел. Свойство
евклидовости утверждает, что для целого числа а и ненулевого
целого числа b существует единственные частное q и остаток г,
такие, что a = bq + rnO^.r< |ft|. В упр. 1 по программированию
для разд. 2.2.1 требуется написать подпрограммы QUO(a,ft) и
MOD(o,6), которые возвращают частное и неотрицательный ос-
остаток от деления а на 6; эти подпрограммы будут использоваться
в различных утверждениях и в описаниях других алгоритмов на
протяжении всей этой книги.
Ключевым в алгоритме Евклида является следующий факт:
если a = bq + г и d делит а и Ь, то d \ г = a — bq (упр. 3
разд. 2.2.1). Поскольку это верно для любого делителя, это верно
и для d = gcd(a, b); значит, gcd(a,6) = gcd[6, MOD(a,6)]. Кроме
того, (a,0) = |я| для всякого а; условимся также считать gcd@,0)
равным нулю. Итак, если заданы целое число а и ненулевое целое
число 6, мы выполняем такую последовательность делений:
Пусть по = а и а\ = Ь\ тогда
+a2,
+ a3,
0<a2< |ai|
0 < a3 < a2,
0.
Процесс рано или поздно останавливается, так как остатки
\ai | > п2 > а3 > • • ¦ > 0 •образуют строго убывающую последо-
последовательность неотрицательных целых чисел, и а* является наи-
наибольшим общим делителем.
Мы уже отметили, что (ao,ai) = (ai,a2) = •¦• = (a*,0) = a*;
значит, мы вычислили наибольший общий делитель чисел а и ft
и доказали, что следующий алгоритм работает правильно. (В
наших обозначениях х := у означает присвоение переменной х
значения у; (х,у) := (zi,j/i) означает х := а?х, у := j/i.)
ЕА. Алгоритм Евклида (Euclidean Algorithm)
Вход: акЬфО.
Выход: d = gcd(a, 6).
54
Целые числа
1. [Инициализация] (ao,ai) := (a,b).
2. [Основной цикл] Пока <ц ф О выполнять
(ao,ai) := [ai,MOD(a0,ai)].
3. [Выход] Вернуть d :— a^.
Рассмотрим пример a = 342 и 6 = 612. Алгоритм Евклида
вычисляет последовательность C42,612) = F12,342) = C42,270) =
B70,72) = G2,54) = E4,18) = A8,0); таким образом, d - 18.
Анализ времени работы алгоритма ЕА. Предположим без потери
общности, что a ^ 6.
Поскольку шаги 1 и 3 выполняются за время ~ 1, очевидно,
что время работы алгоритма Евклида определяется временем
выполнения шага 2.
На шаге 2 выполняется г» целочисленных делений, и нам не-
необходимо оценить сверху г»; однако, прежде чем сделать это,
заметим, что первое деление выполняется с числами а и 6, а
из разд. 1.2 мы знаем, что hoiv{o,b) = O{L(b)[L(a) - L(b) + 1]}.
Так как последующие деления выполняются с меньшими числами,
то выражение tmiv(e,&) ограничивает сверху время выполнения
для всех остальных делений. Поэтому можно утверждать, что в
наихудшем случае каждое деление выполняется за время
*imv(M) = 0{L(b)[L{a) - L(b) + 1]}.
Далее, для того чтобы вычислить верхнюю границу для числа
п (целочисленных делений, необходимых для нахождения наи-
наибольшего общего делителя а и 6), используем теорему Ламе,
сформулированную ниже; по этой теореме число 5(количество
цифр в меньшем числе) является верхней оценкой числа п, и в
нашем случае получаем n ^ 5 • L(b).
Таким образом, *ЕА(а>Ь) = (число делений)-(время выполнения
каждого деления) ^ [b-L(b)]-{L(b)[L(a)- L(b) + l]}, откуда получаем
*ВА(а,6) - O{LFJ[I(a) - Щ + 1]}.
Теперь мы изложим теорему Ламе, являющуюся, по-видимому,
самой первой теоремой, в которой речь идет о сложности вычис-
вычислений.
Наибольшие общие делители целых чисел
55
Теорема Ламе (Lame, 1844) (оценка наихудшего случая для
алгоритма Евклида). Количество делений, которое нужно выпол-
выполнить для нахождения наибольшего общего делителя двух целых
чисел, не превосходит количества цифр в меньшем числе, умно-
умноженного на пять.
Доказательство. Рассмотрим последовательность Фибоначчи (см.
историческое замечание 2)
1,1,2,3,5,8; 13,21,34,55,89; 144,233,377,610,987; 1597,
в которой каждый член равен сумме двух предыдущих. (За-
(Заметим, что 1 — единственное число, которое появляется дваж-
дважды; для оставшейся части доказательства последовательность
{1,1,2,3,5,8} эквивалентна {1,2,3,5,8}.)
Нетрудно показать, что число членов в последовательности
Фибоначчи, имеющих одинаковое количество цифр, не меньше
четырех и не больше пяти. Лействительно, если мы обозначим
через <i первый член с к + 1 цифрами, то очевидным образом
выполняются неравенства
10* < h < 2 • 10*,
так как t\ есть сумма двух членов с к цифрами. Точно также,
поскольку
A/2I0* < «о < Ю*
и <2 = h + to, имеем
C/2I0* < <2 < 3 10*.
Аналогичным образом получаем следующие неравенства:
E/2I0* <*3 < 5 • 10*,
4 ¦ 10* <U < 8 • 10*,
A3/2I0* <*5 < 13 • 10*,
B1/2I0* <*6 < 21 • 10*.
Поэтому группа членов, содержащих (& + 1) цифр, имеет не меньше
четырех и не больше пяти элементов.
Если обозначить через /о, /i,/г» • • • члены последовательности
Фибоначчи, то число п членов, предшествующих /„, не больше,
56
Целые числа
чем 5(количество цифр в /„) минус один. Поэтому количество де-
делений, которое нужно выполнить, чтобы найти наибольший общий
делитель двух последовательных членов /„, /n+ъ не превосходит
количества цифр в /„, умноженного на пять. Предположим теперь,
что мы хотим найти наибольший общий делитель двух целых
чисел а, Ь (а > 6). Обозначим через rn»,rv-i)...,rs,ri,ro убыва-
убывающую последовательность остатков, полученную по алгоритму
Евклида; имеем Г{ = grj_i + г<_2, 9^1- Предположим, кроме того,
что целое число b лежит между /n-i и /„. Покажем, что остатки
г„|,г„<_1,... ,Го будут содержаться в различных интервалах, обра-
образованных членами последовательности fn+\,fn,fn-i, - -, /2,/i,/о•
Сначала рассмотрим случай q = 1, т.е. частное равно единице во
всех операциях деления. Если два остатка гл и rh+i попадут в один
интервал (Д,Д-1)> так что Д > rh > rA_i > Д-i, то (поскольку
Д = Д-1 + Д-2 и Д-i встречается в такой сумме только один
раз) мы получим г/, = n,_i + гл_2 и Д_2 > гл-2- Таким образом,
интервал (Д-ьД-г) не будет содержать остатков. Точно такое
же заключение справедливо для случаев Д = гд > гл-i > Д-i
и Д > rfc > гл_1 = Д_1. Итак, если все частные в алгоритме
Евклида равны 1, то остатки будут распределены таким образом
(среди убывающей последовательности чисел Фибоначчи), что в
каждом интервале будет не больше двух остатков и за каждым
интервалом с двумя остатками будет следовать интервал, не
содержащий остатков.
Теперь рассмотрим случай q > 1, т.е. при каком-то делении в
алгоритме Евклида мы получим п = 2 • »ч_1 + г,_2 (наименьшее
q > 1). Пусть /J+1 и fj — два последовательных числа Фибоначчи,
между которыми содержится г,-; тогда
г,- - 2r,_i > 0,
j - fj+1 > 0
п) > О,
откуда следует, что fj > п-\. Если г,_! также меньше, чем
fj-i, то интервал (fj,fj-i) будет пустым. С другой стороны,
если n_i > /,-_i, то, так как fj+i = 1fj-\ + fj-i, n = 2г,_г + п_2
и г,- < fj+i, должно выполняться неравенство /,_г > r,_2, т.е.
интервал (fj-i,fj-2) будет пустым. Таким образом, если частное
в алгоритме Евклида отлично от единицы, то найдется хотя
бы один интервал в последовательности Фибоначчи, который не
будет содержать остатков, и это не восполнится интервалом с
двумя остатками.
Наибольшие общие делители целых чисел 57
Итак, для того чтобы последовательность остатков rn',rn«_i,
••¦ >^*1 >го имела ту же длину, что и последовательность /n,/n-i>
¦ • • > /i>/o, частные во всех операциях деления должны быть равны-
равными единице, так же как и го. Как и в случае последовательности
Фибоначчи, где /0 = 1, Д = 2, в последовательности остатков
должно быть Го = 1; однако rj не может равняться двум, поскольку
тогда эти две последовательности были бы одинаковыми и Ь было
бы равно /п+1, что не так. Следовательно, г\ должно быть равно
как минимум трем и последовательность остатков будет иметь
строго меньшую длину, чем последовательность Фибоначчи. D
Ниже мы приведем еще одну оценку наихудшего случая для
алгоритма Евклида (Абрамов, 1979; Wilf, 1986). Мы воспользуемся
следующей леммой.
Лемма 2.2.9. Если а ^ Ь ^ 1, то MOD(a, 6) < (а - 1)/2.
Доказательство. По определению MOD(a, 6) = а— |_а/6] -6 ^ а — Ь и,
очевидно, MOD(a, b) ^6—1. Поэтому MOD(a,b) ^ tnin(a — b,b — 1),
и для доказательства леммы нужно рассмотреть два случая:
i. 6 < (а + 1)/2. Тогда 6 - 1 ^ a - 6 и MOD(a,6) ^ b - 1 <
(
6 - 1 и MOD(a,6)
ii. b > (a + l)/2. Тогда a - 6
a-(a + l)/2 = (a - l)/2.
a - b <
?
Теорема 2.2.10 (другая оценка наихудшего случая для алгоритма
Евклида). Пусть а и b — целые положительные числа и М =
тах(а,6). Количество делений, которое нужно выполнить для
нахождения наибольшего общего делителя а и 6, не превосходит
|21og2MJ+l.
Доказательство. Без потери общности можно считать, что a ^ b. В
алгоритме Евклида порождается убывающая последовательность
неотрицательных целых чисел ао, а\, ..., а*, где ао = а, а\ = Ь и
а,- = MOD(ai_2,a,-i), 1 ^ 2. По лемме2.2.9 имеем а$- ^ (а,_2 —1)/2 ^
а,_2/2. Индукцией по i получаем a2i < ао/21 и аг.+i ^ ai/2\ i ^ 0, и
поэтому а* ^ 2~l*/2Jm. Алгоритм останавливается, когда а* < 1;
это происходит, когда 2~L*/2Jjl/ < l( т.е. fc > 21og2Af. D
Пример. Оценим число делений, необходимое для вычисления
A44,89) и B1,13). По теореме Ламе в обоих случаях число
делений меньше, чем5-2 = 10; используя теорему 2.2.10, получаем,
что число делений в первом случае не больше 15, во втором — не
58
Целые числа
больше 9; на самом деле A44,89) вычисляется после 9 делений, а
B1,13) —после 5.
Приведем в заключение интересный результат Дирихле (Dirich-
let, 1849), утверждающий, что если а и Ь — два случайно выб-
выбранных целых числа, то вероятность того, что gcd(a,6) = 1, равна
6/я » 0.60793. (Другие результаты по этой тематике можно най-
найти в работах (Абрамов, Рыбин, 1988; Bradley, 1970; Collins, 1974;
Knuth, 1969; Lipson, 1981; Motzkin, 1949 и Schroeder, 1986).)
2.2.3. Расширенный алгоритм Евклида
Для различных приложений очень важно уметь представлять
наибольший общий делитель целых чисел а и b в виде gcd(a,6) =
ах + by (теорема 2.2.3). Очевидно, один из способов состоит в
применении алгоритма Евклида и затем «обратного» прохода.
Например, для a = 612 и 6 = 342 получаем
612 = 342
342 = 270
270 = 72 •
72 = 54 •
54 = 18-
• 1 + 270,
•1 + 72,
3 + 54,
1 + 18,
3 + 0,
или
или
или
или
270 = 612 - 342,
72 = 342 - 270,
54 = 270 -72-3,
18 = 72 - 54,
откуда следует, что 18 — наибольший общий делитель чисел 612
и 342. Проведя вычисления в обратном порядке, получим
18 = 72 - 54 = C42 - 270) - B70 -3-72)
= [342 - F12 - 342)] - [8612 - 342) - 3 • C42 - 270)]
= [342 - F12 - 342)] - {F12 - 342) - 3 • [342 - F12 - 342)]}
= 9•342 + (-5) • 612,
т.е. 18 = 9 • 342 + (—5) • 612, и мы решили нашу задачу.
Другой подход к решению этой задачи, имеющий, как мы
убедимся в дальнейшем, много приложений, состоит в применении
расширенного алгоритма Евклида. Значения х и у вычисляются в
серии шагов, в каждом из которых мы выражаем а,- (вычисленное в
процессе работы алгоритма Евклида, разд. 2.2.2) в форме а
Наибольшие общие делители целых чисел 59
А именно рассмотрим последовательность
а0 = ах0 + Ьуо,
ai = axi + byi,
а2 = ах2 + Ьу2,
а3 = ах3 + Ьу3,
а,- = аж,- + 6у,-,
ax =b,
02 = a0 —
a3 = ai —
a,- = a,-2 — ei-i?»-i
a* = ak-2 — в*-10*-ь a* =
0 = aA_i-a*9i, 0 = axk+i + byk+i.
В левом столбце — последовательность делений, которая нам уже
встречалась раньше и которая теперь разрешена относительно
остатков. В правом столбце каждый остаток выражен в виде
axi + byt; мы хотим вычислить ж,- и у{. Очевидно, что хо = 1,
у0 = 0 и х\ = 0, ух = 1. Сравнивая обе части на t-м шаге, имеем
a,- = axi + byi = a,_2-o,_i?,_i = (аж,-_2+ %-2)-(<**,•_!+6t/,-_i)g,_1 =
а(*«-2 - ««-i9i-i) + Ь(г/.-2 - Vi-iQi-i), откуда получается следующая
индуктивная процедура вычисления Xi и у,-:
3,_1 = QUO(a,_2,a,-i),
a,- = a,_2 — a,_igj_i,
J/i = yi-2-Vi-i4i-i-
Конечно, мы можем также вычислить a< как MOD(ai_2,ai-i),
но приведенное выше выражение подчеркивает, что а< вычислено
таким же способом, как ж,- и у<. Мы получили следующий алгоритм.
ХБА. Расширенный алгоритм Евклида (Extended Euclidean
Algorithm)
Вход: апЪфй.
Выход: d, х, у, такие, что d = gcd(a,6) = ax + by.
1. [Инициализация] (ao,ai) := (a,6); (xo,*i) := A,0); (yo,J/i) :=
@,1).
2. [Основной цикл] Пока at ф 0, выполнять { q := QUO(a0)ai);
(ao,ai) := (ai,a0 - ai«); (so,*i) := (xi,x0 - xxq)\ {уо,У\) :=
(УиУо-yiq); }•
3. [Выход] Вернуть (d,x,y) := (aQ,x0,yo).
60
Целые числа
Анализ времени работы БХА аналогичен проведенному для
БА, детали мы оставляем читателю. Применяя расширенный
алгоритм Евклида в нашем примере а = 342, Ь = 612, получим:
Итерация q
<*i ж0
j/o Vi
0
1
2
3
4
5
6
- 342 612 1
0 612 342 0
1 342 270 1
1 270 72 -1
3 72 54 2
1 54 18 -7
0 0 1
1 1 0
-1 0 1
2 1 -1
-7 -1 4
9 4-5
18 0 9 -34 -5 19
Заметим, что равенство по = ахо + 6j/o выполняется на каждом
шаге. Алгоритм выдает d = 18, ^ = 9, у = —5; проверим ответ:
18 = 342 • (9) + 612 • (-5).
2.2.4. Алгоритм Евклида и цепные дроби
Цепные дроби играют важную роль во многих областях мате-
математики. В гл. 7 этой книги мы увидим, как их можно использо-
использовать для построения очень эффективного алгоритма отделения и
аппроксимации вещественных корней полиномов с целыми коэф-
коэффициентами. В этом разделе мы введем цепные дроби, используя
алгоритм Евклида (Olds, 1963; Richards, 1981).
Рассмотрим произвольную рациональную дробь ao/ai, записан-
записанную в несократимом виде, т.е. (ao,ai) = 1 и <ц > 0. Применив к
паре а0, ах алгоритм Евклида, получим
a0 = о
Oi = 0
02 = 0
iic0 + a2,
12C1 + a3,
i3C2 + a4,
0<
0<
0<
a2
a3
a4
<ai,
< a2,
< a3,
0< a*
a*-i =
Эти обозначения несколько отличаются от тех, которые мы ис-
использовали в разд. 2.2.2; а именно мы заменили gi>--->e* на
Со,... ,cjfc-i. Если мы запишем & вместо a,-/a,-+i для всех » в
пределах 0 ^ t ^ А — 1, приведенные выше равенства примут вид
& = с,- + -—, 0 ^ i < к - 2, ^_! = с*_!.
Наибольшие общие делители целых чисел 61
Если в $о = с0 +
^0 = С0 + 1/(в1 + 1/^
ao
i заменить ?i на с\ + 1/?г> то получится
Продолжая этот процесс, мы получим
с
— = ?о = с0
ci
1
С*-2 +
Ск-1
Это — представление ao/ai в виде цепной дроби. Целые числа
с,- называются неполными частными. Так как в общем случае
ao может не быть положительным (мы предполагаем, что aj >
0), с0 может быть положительным, отрицательным или нулевым.
Однако, поскольку в алгоритме Евклида 0 < a2 < |ai|, частное
С\ положительно и точно также положительны сг,... ,с*_1. Мы
будем использовать обозначение (со; с\,... , ct_i) для цепной дроби,
приведенной выше.
Пример. Рассмотрим рациональную дробь 8/5. Нетрудно видеть,
что 8/5 = A;1,1,2). Более того, можно проверить, что 8/5 =
A; 1,1,1,1). Оказывается, всякое рациональное число имеет только
два представления в виде цепной дроби. В общем случае,
«U
= (со;сь...
*_1) = (co;ci,... ,сц_2,с*_1 - 1,1).
Замечание. Наше условие, что ci,C2,... ,с*—i положительны, не
является общепринятым. Если отказаться от него, то дробь —8/5
может также быть представлена в виде цепных дробей (—2; 2,2) и
(-1;-1,-1,-2).
Цепные дроби могут быть конечными или бесконечными; напри-
например, цепная дробь, представляющая число 8/5, конечна. Следу-
Следующие две теоремы устанавливают некоторые свойства конечных
цепных дробей. Нам необходимо следующее определение.
Определение 2.2.11. Целой частью [с] числа с называется
И
1М,
если с ^ О,
если с < 0.
Теорема 2.2.12 (единственность). Если (co;ci,.. .,cm) = (do;di,
... , dn) и если cm > 1 и dn > 1, то m = п и с,- = d,- для i = 0,1,..., п.
62
Целые числа
Доказательство. Используем индукцию. Определим числа Si =
(с4;с<+1, ... ,ст) и U = (d,-; di+1,...,dn). Очевидно, что «, = (с,-; ci+1,
...,Ст) = с{ + 1/si+i и U = (</,-; di+i, ¦¦¦,dn) = di + l/t<+i- Заметим,
что в< > с^ Si > 1 для i = 1,2,..., m - 1, sm = cm > 1 и U > d,-, U > 1
для * = 1, 2,..., n - 1, <„ = dn > 1; более того, с* = [в,-] и d,- = [ЭД для
всех » в соответствующих пределах. По условию теоремы «о ~ to,
и, рассматривая целые части, имеем Со = [во] = [*о] = do- По
определению 8\, ti получаем \/s\ = s0 — Cq = to — d0 = l/<i, откуда
вытекает, что S\ = t\ и Ci = [si] = [ti] = di. Предоставим читателю
завершить шаг индукции: из того, что «i = t,- и с,- = di, вытекает,
что Si+i = Л'+i и c,-+i = d,-+i. Кроме того, т должно быть равным
п. Чтобы убедиться в этом, предположим без потери общности,
что т < п. Тогда из предыдущего рассуждения следует, что
sm = tm и ст = dm. Однако это противоречит тому, что sm = cm и
tm>dm. ?
Теорема 2.2.13. Любая конечная цепная дробь представляет
рациональное число, и, обратно, всякое рациональное число может
быть представлено в виде конечной цепной дроби, причем ровно
двумя способами.
Доказательство. Первая часть доказывается индукцией по числу
членов в цепной дроби при помощи формулы (с0; ci, ..., cm) =
со + l/(ci; C2, ..., cm). Вторая часть следует из возможности
представления любого рационального числа в виде цепной дроби
и теоремы 2.2.12. ?
До сих пор мы имели дело только с рациональными числами
и конечными цепными дробями, а что можно сказать об ирраци-
иррациональных числах и их разложениях? Некоторые очень важные
свойства разложений иррациональных чисел в цепные дроби объе-
объединены в теореме 2.2.14, которую мы приводим без доказательства.
Теорема 2.2.14. Любое иррациональное число ? представимо
единственным образом в виде бесконечной цепной дроби (со; с\,
..., с„, ...), где значения С{ вычисляются с помощью следующего
алгоритма:
Положим ?о = f и определим по индукции с< = [&J
и 6+1 = 1/F-*), i>0.
Обратно, всякая бесконечная цепная дробь, заданная числами с;,
с,- > 0 для любого i, представляет иррациональное число ?. Более
Наибольшие общие делители целых чисел
63
того, если мы положим
р_1 = 1, Pi =
0,
то конечная цепная дробь (co;ci,... ,с„) будет иметь рациональ-
рациональное значение г„ = pn/qn, (рп,Яп) = 1, которое называется п-й
подходящей дробью иррационального числа ?. Знаменатели qn
подходящих дробей образуют возрастающую последовательность
положительных целых чисел для п > 0, и выполняются следующие
соотношения:
а. Если? = (со;сь ..., с„_ь ?„), где ?„ = (cn;cn+b ...), п > 0, то
Qn-ltn + Яп-2 '
= со +
Сп-1 + J-
п>0.
1
Сп-1 + —
Наконец, всякая периодическая цепная дробь является квад-
квадратичным иррациональным числом, и обратно. (Квадратичным
иррациональным числом называется число вида (р± y/d)/q, явля-
являющееся корнем квадратного полиномиального уравнения q2x2 —
Ipqx + (р2 — d), где d — целое положительное число, не являющееся
точным квадратом.)
Отметим, что алгоритм Евклида может быть использован толь-
только для разложения в цепную дробь рационального числа; из
теоремы 2.2.14 видно, что имеется более общая процедура, кото-
которая может быть использована как для рационального, так и для
иррационального числа. А именно пусть нам дано число х (раци-
(рациональное или иррациональное). Вычислим с0, наибольшее целое
64 Целые числа
число, не превосходящее х, и представим х в форме х — Со +
О < \/х\ < 1, где число xi = 1/(х — с0) > 1 иррационально, если х
иррационально. После этого вычислим С\, наибольшее целое чис-
число, не превосходящее х\, и представим xi в форме xi = с\ + 1/я2,
О < 1/х2 < 1, С\ ^ 1, где снова число ж2 = 1/(*1 — ci) > 1 может
быть иррациональным. Продолжая этот процесс, мы получим пре-
представление х в виде цепной дроби х ¦= (со; с\, ...), которая может
быть конечной или бесконечной в зависимости от того, является
х рациональным или нет. Примеры будут приведены ниже, но
сначала мы докажем следующую теорему.
Теорема 2.2.15. Рассмотрим бесконечную цепную дробь ? =
(со; ci, ...), и пусть г„ = Рп/Чп — ее n-я подходящая дробь.
Справедливы следующие утверждения:
a. pnqn-i - pn-iqn = (-1)", п > 1.
b. rn-rn_i = (-l)n-1/9n?n-i, n^l-
с г„ - rn_2 = (-l)n~2cn/qnqn-2, п ^ 2.
d. Лля четных значений п последовательность n-х подходящих
дробей монотонно возрастает, и ее предел равен ?; для
нечетных значений п соответствующая последовательность
монотонно убывает, ее предел также равен ?; кроме того,
каждое г2п меньше, чем r2n_i, и каждая подходящая дробь
гп, п > 2, лежит между двумя предыдущими подходящими
дробями.
Доказательство.
a. Доказательство будем вести по индукции. Для п— 1, пользу-
пользуясь теоремой 2.2.14, получаем p\qo—poqi = (cipo-l-p-i)-l—coci —
(cico + 1) - cico = 1; поэтому равенство справедливо; от-
отметим, что ро = с0, ?о = 1 и 9i =: ci9o ^ 9о- Допус-
Допустим теперь, что равенство выполняется для п — It, т.е.
Pkqk-i — Pk-i4k = (~1)*-1- Мы покажем, что оно справед-
справедливо и для к + 1. Пользуясь опять теоремой 2.2.14, полу-
получим pk+iqk ~ РкЯк+\ - (ck+iPk +Pk-i)qk -Pk(ck+№ - Як-i) =
-(ptqt-i ~ Pk-iqk) = -(-I)* = (-I)*-
b. Для доказательства этого пункта разделим обе части равен-
равенства pngn_i -pn-i9n = (-1)" на ЧпЯп-i, после чего получим
V
- Pn-i/qn-i = (-l)n"V«»9n-i- Требуемое равенство
теперь следует из того, что г„ = pn/qn-
С. ЗдеСЬ Г„-Г„_2 = Pn/qn ~Рп-2/Яп-2 = (Pn9n-2-Pn-29n)/9n9n-2-
Заменяя в числителе р„ и qn соответствующими им выраже-
Наибольшие общие делители целых чисел 65
ниями (из теоремы 2.2.14) cnpn_i + р„_2 и cnqn-i + д„_2 соот-
соответственно, получаем pn9n_2 -рп_29„ = {спрп_х + pn-2)gn_2 -
Pn-2(cn?n-l + ?n-2) = Cn(Pn-l9n-2 ~ Pr»-29n-l) = (—1)П~ С„ =
d. Выведем этот пункт из предыдущих. Из пп. b и с следу-
следует, что г2п < ггп+г, r2n+i < r2n-i и r2n < г2п_г, потому что
qn положительно для п ^ 1. Таким образом, го < г2 < ...
и ri > г3 > г5 > ... . Последовательность с четными ин-
индексами монотонно возрастает и ограничена сверху числом
ri\ аналогично, последовательность с нечетными индекса-
индексами монотонно убывает и ограничена снизу числом го. Эти
два предела должны быть одинаковыми, поскольку разность
г„ — rn_i стремится к нулю при п, стремящемся к бесконеч-
бесконечности, а целые числа qn возрастают с ростом п. О
Следует отметить, что утверждения теоремы 2.2.15 были бы
иными, если бы в теореме 2.2.14 мы определили целые числа р„ и
qn, начав с p_i и g_i, а не с р_2 и д_2. А именно если мы положим
Р-1 = 0, Ро = 1, Р.- = с{р^1 + р,_2, i^l,
— (\ — 1 I * "^ 1
то разложение в цепную дробь начнется с целого числа с\ вместо
Со, и индексы у последовательности подходящих дробей изменятся
с четных на нечетные и обратно. Кроме того, равенство в п. а
примет вид
Pr.9n-i-Pr.-i9r. = (-1)", О О,
а пп. b и с будут справедливы для п^2ип^3 соответственно. В
гл. 7 книги мы будем использовать эту форму записи подходящих
дробей.
Пример. Разложим рациональное число 144/89 в цепную дробь,
используя алгоритм, описанный в теореме 2.2.14; обратим также
внимание на то, как ведут себя подходящие дроби. В начале
положим ?о = 144/89, с0 = [144/89J = 1, р_2 = 0, p_i = 1, ?_2 = 1
и g_i = 0 и, используя соотношения р,- = c,p,_i + р,-_2 и д,- =
С|-д«-1-И«-2, получим ро = со и до = 1; Po/qo = 1 — это первая четная
подходящая дробь для числа 144/89, аппроксимирующая это число
снизу. Затем вычислим ?i = 1/(?о — с0) = 89/55, сх = [89/55J = 1 и,
используя те же соотношения, р\ = 2 и gi = 1; pi/qi —2 — первая
нечетная подходящая дробь для числа 144/89, аппроксимирующая
это число сверху. Далее имеем & = l/(?i - ci) = 55/34, с2 = 1,
5—274
66 Целые числа
Р2 = 3, ?2 = 2, и Р2А2 = 3/2 — вторая четная подходящая дробь
для числа 144/89, снова аппроксимирующая его снизу; отметим,
что po/qo < Р2А2 и po/qo < Р2А2 < Pi Ai- Продолжая этот процесс,
мы получим ?3 = 1/Dг - сг) = 34/21, с3 = 1, рз = 5, дз = 3 и
РзАз = 5/3 — вторая нечетная подходящая дробь для числа
144/89, аппроксимирующая его опять сверху; имеем РзАз < Pi Ai
и также po/qo < Р2А2 < РзАз < PiAi- Завершение этого примера
мы оставляем читателю.
Теорема 2.2.16. Пусть 4 — иррациональное число, и пусть
4 = (со; ci, ..., Cn-i, 4г>) — его разложение в цепную дробь, где
?„ = (с„; cn+i, ...), n ^ 0. Справедливы следующие утверждения:
a. Каждая подходящая дробь расположена ближе к 4, чем пре-
предыдущая.
b. l/Bqn+iqn) < |4 ~Pn/qn\ < V(9n+i9n) < l/q%, n^O.
c. Существует бесконечно много рациональных чисел вида p/q,
(p,q) = 1, таких, что |4 -p/q\ < 1/g2.
Доказательство.
a. По теореме 2.2.14 имеем 4 = (pn-i4r> + pn-2)/(?n-i4r> + qn-2),
откуда получаем 4(9n-i4r> + 9п-г) = (Pn-i4n +Pn-2), или, пе-
перегруппировав члены, 4nD9n-i -pn-i) = -D?r>-2 -Pn-2) =
—9п-г(? — Рп-гАп-г)- Разделив обе части равенства на ?n9n-i
и взяв абсолютную величину, получим |4 — Pn-iAn-i| =
|«n-2/4n«n-l-| • 14 -Pr.-2Af.-2l- ПОСКОЛЬКУ &. > 1 ДЛЯ П ^ 1 И
знаменатели д„ подходящих дробей образуют возрастающую
последовательность положительных целых чисел, мы имеем
д„_г > ?„_2; поэтому 0 < |gn_2/&»9r>-i| < 1, откуда вытекает,
что |4-pn-iAn-i| < l4-Pr.-2Ar.-2l, или |4-rn_i| < |4-г„_2|
для п ^ 2.
b. Из п. Ь теоремы 2.2.15 получаем \rn+i — г„| = 1А„+19г>, " ^ 1;
кроме того, мы только что доказали, что 4 расположено ближе
к rn+i, чем к г„, и, следовательно, l/2gn+1gn < |4-Pr>Ar>l <
l/?r>+i«n < 1/«Д, п ^ 0, где l/qn+iqn < l/?n. потому что
9г>+1 > 9п- (См. также рис. 2.2.1.)
c. Этот пункт следует из того, что число 4 иррационально,
и существует бесконечно много подходящих дробей pn/qn,
удовлетворяющих Ti. Ь.-с . ?
Отметим, что неравенство \х — PnAnl < 1Ап выполняется также
и для рациональных чисел.
Наибольшие общие делители целых чисел 67
m г гп+1=Рп+1/Яп+1
Рис. 2.2.1.
Геометрическое доказательство части b теоремы 2.2.16.
Пример. Вычислим несколько первых членов разложения числа
7Г в цепную дробь. Можно показать, что ж = C; 7, 15, 1, 292,
1, 1, 1, 2, 1, 3, 1, 14, 2,...). Как уже было отмечено выше, для
иррационального числа х не всегда можно получить его полное
разложение в цепную дробь, поскольку алгоритм Евклида не может
быть применен; если, однако, известно десятичное приближение
числа х, то можно вычислить соответствующую часть цепной
дроби, представляющей х. В нашем случае допустим, что нам
достаточно приближения я- = 4о = 3.14159. Используя алгоритм,
описанный в теореме 2.2.14, получим
3.14159 = 3 + 0.14159, с0 = 3, 4i = 0.14169,
1 = 7 + 0.06264, Cl =7, 4г = 0.06264,
0 06264 = 15 + 0-96424' С2 = 15' 4з = 0.96424,
^ = 1 + 0.03708, с3 = 1, 44 = 0.03708-,
Итак, мы получили я- = C;7,15,1,...). Мы видим, что первые
четыре неполные частные для числа я- совпадают с первыми че-
четырьмя неполными частными для разложения в цепную дробь
рационального числа 3.14159. Используя соотношения для под-
подходящих дробей, получаем четыре первых приближения для я-:
г0 = 3/1, п = 22/7, г2 = 333/106 и г3 = 355/113. Проверим те-
теперь справедливость неравенства |4 — p/q\ < 1 А2. Для г2 имеем
|3.14159 - 333/106| < 1/1062, и после вычисления обеих частей
получим 0.00007 < 0.000089.
Отметим здесь открытие Эйлера: разложение числа е в цепную
дробь обладает в отличие от я- замечательной регулярностью:
е = B; 1,2,1,1,4, 1,1,6,1,1,8,1,1,...); доказательство достаточно
сложно и выходит за рамки этой книги.
5*
(i8 Целые числа
Заметим, что неполные частные чисел ж и е не периодичны
и 1 встречается чаще, чем любое другое число. Интересный
результат Кузьмина (Lang, Trotter, 1972) утверждает, что для
почти всех чисел вероятность того, что в разложении его в
цепную дробь n-е неполное частное с„ равно положительному
целому числу j, дается формулой
log;
O'+lJ
2)'
Это означает, что для почти всех чисел вероятность того, что
с„ = 1, примерно равна 0.41.
В конце этой главы рассмотрим бесконечные периодические
цепные дроби, представляющие иррациональные числа (см. те-
теорему 2.2.14); предположим, например, что ? = B;3,2,3,2,3,...).
Что из себя представляет ?? Заметим, что в нашем случае мы
можем записать ? = B;3,?г) согласно теореме 2.2.14; далее, пос-
поскольку ? = & = &>• ••, имеем f = B;3,?). Отсюда следует, что
? = 2 + 1/C + 1/?), или 3f 2 - 6? - 2 = 0. Итак, ? удовлетворяет
квадратному уравнению, и, отбросив отрицательный корень, мы
получим ? = C + -\/15)/3 — квадратичное иррациональное число.
Пример. Пусть ? = \/7; вычислим его разложение в цепную дробь.
Используя алгоритм из теоремы 2.2.14, мы получим
V7=2+(V7-2),
co=2, 6=(\/7-2)-\
, c1=l, 6=KV7
, с2=1, 6=[(V^-
, с3=1, ?4=[(V^-
с4=4, йЦ^-2
Таким образом, мы получили & = ?i и л/7 = B; 1,1,1,4,1,1,1,4,...).
2.3
Разложение целых чисел на множители
Среди всех задач теории чисел, при решении которых приме-
применялся компьютер, ни одна другая, по-видимому, не имела такого
Разложение целых чисел на множители
69
значения, как задача разложения на множители (факторизации).
Из-за того, что эта задача является одной из основных в теории
чисел и при этом просто формулируется, она привлекала людей
еще в античности (Dickson, 1952). В самой простой формулировке:
пусть нам дано целое число п > 0, и требуется, если это возможно,
найти два целых числа а и 6, таких, что ab = п. На самом деле
здесь имеются две различные задачи: первая, называемая тестом
на простоту, — это проверка того, существуют ли такие а и 6,
вторая, называемая разложением, — это задача их нахождения.
В этой части мы рассмотрим обе эти задачи и попутно введем до-
дополнительные математические понятия, которые нам понадобятся
в дальнейшем.
2.3.1. Простые числа и решето Эратосфена
Начнем с определений. Ненулевое целое число а ф ±1 называ-
называется неразложимым, если все его делители тривиальны, т.е. его
делителями являются только числа ±1 и ±а. Например, числа
13 и —7 неразложимы. Ненулевое целое число а ф ±1 называется
разложимым или составным, если у него есть нетривиальные
делители, т,.е. оно может быть записано в виде а = 6с, где бис
не равны ±1 и ±а. Например, 276 =12-23 — составное число.
Делители также называют сомножителями. Составное число
может быть записано как Произведение нетривиальных сомножи-
сомножителей. Если, в свою очередь, сомножители тоже разложимы, то
они также могут быть записаны как произведения нетривиальных
сомножителей, и так далее. Следующая теорема утверждает, что
процесс этот рано или поздно обрывается.
1 Теорема 2.3.1 (существование неприводимого разложения). Вся-
Всякое ненулевое целое число а ф ±1 может быть записано как ± про-
произведение конечного числа положительных неразложимых целых
чисел, т.е а = ±«i •• «г, где и, > 1 для » = 1,..., г и неразложимы.
Доказательство. Мы можем допустить, что а > 0. Если а не
является уже неразложимым, то в = be, где 6 и с не равны 1
и 1 < Ь,с < а. Точно так же, если бис разложимы, то их
положительные нетривиальные сомножители строго меньше, чем
бис соответственно. В силу принципа полной упорядоченности
процесс разложения рано или поздно останавливается, поскольку
сомножители образуют строго убывающую последовательность
положительных целых чисел. ?
70 Целые числа
Например, 1008 = 2222-3-3-7, Является ли это разложе-
разложение единственным, т.е. можно ли записать 1008 как произведение
других неразложимых чисел? Перед тем как мы сможем ответить
на этот вопрос, нам понадобится следующее определение. Целое
число р > 1 называется простым, если для любых а, 6 из того,
что р | аЬ, следует, что р \ а или р \ Ь. Следующее предложение
характеризует простые числа как положительные неразложимые
элементы. Доказательство этого предложения иллюстрирует спо-
способ рассуждений, который потребуется для выполнения некоторых
упражнений этой части книги.
Предложение 2.3.2. Целое число р > 1 является простым тогда
и только тогда, когда оно неразложимо.
Доказательство. Предположим, что р > 1 просто и что а | р; нужно
показать, что а — тривиальный делитель. Запишем р — ah для
некоторого Ь. ..Поскольку р просто, р \ а или р | Ь. Если р \ а, то
а = ±р (см. упр. 2 разд. 2.2.1). Если р | 6, то b — рс для некоторого
с и р = аЬ = аре, что влечет за собой 1 = ас; поэтому а = ±1.
Итак, мы показали, что всякий делитель числа р тривиален,
следовательно, р неразложимо. Обратно, предположим, что р > 1
неразложимо и что р \ аЬ. Если р не делит а, то (а,р) — 1,
поскольку р не имеет положительных делителей, отличных от 1
и р. По теореме 2.2.3 существуют х и у, такие, что ах + ру = 1.
Умножив это равенство на 6, получим abx + pby — Ь, и, так как р
делит левую часть, р \ Ь. Мы показали, что, если р \ ab и р не
делит а, то р\ Ь, следовательно, р просто. ?
Теорема 2.3.3 (единственность неприводимого разложения). Вся-
Всякое ненулевое целое число а ф ±1 может быть записано как
± произведение простых чисел только одним способом, с точ- •
ностью до порядка сомножителей.
Доказательство. Предположим, что положительное целое число а
записано в виде а = щ • • -ur = Vi ¦ ¦ -vs, где и,- и Vj положительны и
неразложимы и, следовательно, просты. Имеем и\ \ v\ • • • v, я, так
как Mi просто, Mi | vjx для некоторого j\. Поскольку Vji не имеет
нетривиальных делителей, щ — vjx. Продолжая, получаем, что «2
делит произведение оставшихся Vj и, следовательно, «2 = Vj2 для
некоторого j2, и так далее. В конце концов мы получим, что г = s
и после некоторого переупорядочивания и,- = и,- для всех *. ?
Теорему 2.3.3 называют основной теоремой арифметики. Ис-
Исторически математики рассматривали теорему 2.3.3 как «данную
Разложение целых чисел на множители 71
свыше», однако существуют математические системы, в которых
утверждение о единственности разложения не выполняется. В
качестве примера такой системы рассмотрим множество Е, эле-
элементами которого являются положительные четные числа 2, 4, 6,
8,... . Отметим, что Е замкнуто относительно умножения. Пред-
Предположив, что все числа, которые мы знаем, являются элементами
Е, мы видим, что 8 = 2-4 — «составное» число, тогда как 14
— «простое», поскольку оно не является произведением двух или
более «чисел»; более того, число 840 имеет два разложения на
«простые» числа, а именно 840 = 2 • 14 • 30 = 6 • 10 • 14, поэтому
теорема о единственности разложения не выполняется.
Поскольку теорема 2.3.3 выполняется для целых чисел, Z явля-
является областью с однозначным разложением на множители; другие
примеры элементов этого специального класса колец мы рассмот-
рассмотрим позже.
Объединенные вместе, теоремы 2.3.1 и 2.3.3 утверждают, что
всякое ненулевое целое число а ф ±1 может быть однозначно
представлено как произведение конечного числа простых сомно-
сомножителей (единственность с точностью до порядка сомножителей).
Это представление числа известно под названием разложение чис-
числа а в произведение степеней простых чисел, которое записывается
так:
где теперь р,- — различные простые числа и е< — положительные
целые числа. Иногда, как мы вскоре убедимся, удобнее считать,
что показатели степеней могут быть равными нулю.
В качестве первого применения приведенных выше результатов
выразим d, наибольший общий делитель чисел а я Ь, в терминах
простых сомножителей чисел а яЬ.
Пусть
а =
¦¦Pi",
где е,- ^ 0 и /,¦ ^ 0. Тогда, поскольку рт \рп, если и только если
т ^ п, наибольший общий делитель чисел а яЬ выражается в виде
d = (а, 6) =
.. .pmm(ekl/»)>
где, как обычно, min(i, j) обозначает наименьшее из чисел, стоящих
в скобках. Аналогично, наименьшее общее кратное чисел а я Ь
выражается в виде
[а,Ь] =р»«(в>.Л)р™«(«а.Л).. .p™«(«*./*)f
72 Целые числа
где max(i,j) обозначает наибольшее из чисел, перечисленных в
скобках. Используя теперь тот факт, что
а также равенство min(a,6) + max(a,6) = а + b, мы можем легко
получить результат теоремы 2.2.8: [а,Ь] — \аЬ\/(а,Ь).
Применяя результат об однозначности разложения натураль-
натурального числа в произведение простых сомножителей, мы получаем
теорему 2.3.4.
Теорема 2.3.4. л/2 — иррациональное число.
Доказательство. Допустим, что существуют два натуральных
числа а и 6, такие, что \/2 = а/6, (а, Ъ) = 1. Тогда, используя
разложение в произведение степеней простых чисел, мы видим,
что в левую часть равенства 262 = а2 простой множитель 2 входит
с нечетной степенью, а в правую — с четной, что невозможно. ?
Теорема 2.3.5 (Евклид). Существует бесконечно много простых
чисел.
Доказательство. Предположим противное. Пусть существует
лишь конечное число простых чисел р\,рг,... ,рт. Рассмотрим
число п = pi -P2---Pm + li которое либо является простым, и
тогда оно будет новым простым числом, либо имеет простой
сомножитель р. (Отметим, что первые несколько чисел п такого
вида просты; например, 2 + 1 = 3, 2-3+1 = 7, 2-3-5 + 1 = 31,
2-3-5-7+1 = 211, 2-3-5-7-11 + 1 = 2311. Однако 2-3-5-711 13 +1 =
30031 = 59 -509.) Если бы р было одним из перечисленных простых
чисел pi, то р делило бы произведение pi -рг • • Рт и, поскольку р
делит п = pi ¦ pi ¦ ¦ pm + 1, оно делило бы и разность этих чисел,
т.е. единицу, что невозможно. Поэтому р должно быть новым
простым числом. ?
Теорема 2.3.6. Лля произвольного положительного целого числа
п существуют п последовательных (т.е. отличающихся на еди-
единицу) составных чисел. Другими словами, в последовательности
простых чисел существуют сколь угодно большие промежутки.
Доказательство. Рассмотрим числа (п + 1)! + 2, (п + 1)! + 3, ...,
(п +1)! + (п +1), где к\ = 1 • 2 • • • к. Очевидно, каждое из этих чисел
составное, потому что (n + l)! + i делится на i, когда 2 ^ i ^ п+1. ?
Разложение цс.пыт чисел на множители
73
Как мы уже говорили, два целых числа тип называются
взаимно простыми, если (т,п) = 1; заметим, что гаипне обязаны
быть простыми, как, например, в случае 9 и 14. Для заданного
п > 0 через ф{п) обозначается количество положительных целых
чисел т, таких, что т ^ п и (т,п) = 1; ф называется функцией
Эйлера. Заметим, что для всякого простого числа р мы имеем
Ф(р) = р - 1- Например, ф{Ь) = 4, потому что все целые числа 1, 2,
3 и 4 взаимно просты с числом 5.
Выведем формулу, которая выражает ф{п) в терминах разло-
разложения г» в произведение степеней простых чисел; п = р[1рУ ¦¦Р?-
Нам нужно сосчитать все положительные целые числа т, т ^ п,
которые не делятся на простые числа р<, встречающиеся в раз-
разложении числа п. Очевидно, имеется п возможностей для т;
мы, однако, должны отбросить n/pj, j = 1,2,..., к, из них, потому
что столько чисел т делятся на pj. Таким образом, остается
п _ n/pi — п/р2 — • • • — п/рк возможных значений т. Но теперь мы
отбросили слишком много, потому что, например, числа, которые
делятся одновременно на pi и рг, были выброшены как минимум
два раза. Скорректируем ошибку, прибавив к последнему выра-
выражению число n/(pip2) + n/(pipa) -I h n/(pi_ip*). Однако теперь
мы прибавили слишком много, потому что целые числа, которые
делятся, скажем, на Р1Р2РЗ1 были возвращены по меньшей мере
дважды, и последнее выражение нужно снова скорректировать.
Продолжая этот процесс, мы получим формулу
п п п
ф(п) =п
Pi P2 Рк
п п п
PiP2 РгРз
- + (-1)*
Р1Р2---Р*
Читатель может проверить, что эту формулу можно записать в
*) Другая форма записи этой формулы:
Ф(п) = (Р1 - 1)рГ Х(Р2 - 1)рГх • • • (р* - W1-
Более строгое доказательство можно получить, используя китай-
китайскую теорему об остатках. — Прим. перев.
74 Целые числа
Пример. Для того чтобы вычислить <^F0), разложим сначала 60
в произведение степеней простых чисел: 60 = 22 • 3 • 5. Затем,
применив нашу формулу, получим
<АF0) = 60A - 1/2)A - 1/3)A - 1/5) = 16.
Мы завершим эту главу обсуждением способов нахождения
простых чисел. Как крупинки золота, простые числа находят
обычно с помощью решета. Первое решето было предложено
греческим математиком Эратосфеном из Кирен, который жил
в третьем столетии до нашей эры. Идея решета Эратосфена
замечательна по своей простоте.
Лля того чтобы найти все простые числа < п, запишем по
порядку все целые числа от 2 до п. Затем вычеркнем все четные
числа, кроме 2, поскольку они делятся на 2 и потому не являются
простыми. Потом вычеркнем все числа, кратные 3, и так далее.
После i-ro прохода будут вычеркнуты все числа, которые делятся
на первые f простых чисел pi,... ,р,-. Первое число х > pt,
которое останется невычеркнутым, будет t 4- 1-м простым числом.
(Почему?) Затем будут вычеркнуты все числа, кратные p,+i, и
процесс остановится, когда в списке не останется невычеркнутых
чисел, которые больше последнего найденного простого числа.
Целые числа, которые остались в списке, прошли сквозь решето
и являются простыми ^ п.
В следующем примере мы найдем все простые числа ^ 60, в
исходный список включены только нечетные числа ^ 2:
2 3 5 7 р 11 13 \f> 17 19
2Д 23 2$ 2/ 29 31 $ ^ 37 Э#
41 43 4 47 49 5/L. 53 5^ 5/! 59
Числа, кратные 3, ^ З2, зачеркнуты символом «/», кратные
5, ^ 52, — символом «\», и кратные 7, ^ 72, — символом «—».
Следующее после 7 простое число — это 11, но II2 > 60, поэтому по
причине, которая будет объяснена ниже, процесс останавливается,
и невычеркнутые числа являются простыми ^ 60. (См. также
(Dudley, 1983) и (Mills, 1947).)
Мы можем использовать этот метод для проверки простоты
заданного числа п, которая зависит от того, будет ли оно вы-
вычеркнуто. Приведенная выше процедура может быть сделана
более эффективной, если учитывать, что у составного числа п
обязательно есть простой делитель ^ у/п. (Причина в том, что
Разложение целых чисел на множители 75
делители всегда составляют пары; если число имеет делитель,
больший, чем квадратный корень из него, оно также должно иметь
делитель, меньший чем этот корень.) Поэтому при вычеркивании
чисел, кратных pi, мы можем рассматривать только простые чис-
числа ^ у/п, и процесс остановится, когда р? ^ п для некоторого
t. Однако, несмотря на это ускорение, приведенный метод не
подходит для проверки наибольших из известных простых чисел.
Например, для проверки 13395-значного числа 244497 — 1, простота
которого была доказана в 1979 г., компьютеру, выполняющему
миллион операций в секунду, потребовалось бы Ю6684 лет для за-
завершения работы, если бы он остановился только при достижении
квадратного корня числа.
Для некоторых последующих приложений нам нужно уметь
находить п наибольших простых чисел ^ М, где М — макси-
максимальное целое число, представимое аппаратно на имеющемся в
нашем распоряжении компьютере. Например, обычные размеры
компьютерного слова — это 16 или 32 бита, и, отбрасывая знако-
знаковый бит, получаем, что наибольшие целые числа, представимые
в таких машинах, равны 215 - 1 = 32767 и 231 - 1 = 2147483647
соответственно. Для нахождения таких простых чисел построим
сначала таблицу простых чисел ^ \/~М, используя метод решета.
Кратные каждого из этих простых чисел затем вычеркиваются
из списка L, L + 1, ... , М, где интервал (L,M) достаточно велик
для того, чтобы содержать как минимум п простых чисел. Целые
числа, оставшиеся невычеркнутыми, будут простыми.
Для того чтобы этот метод можно было реализовать практичес-
практически, список простых чисел ^ М должен быть не слишком велик и
нужно выбрать интервал (L,M), который содержал бы по крайней
мере п простых чисел и был бы не слишком большим для небольшо-
небольшого п. Замечательная теорема о количестве простых чисел может
быть использована для решения обеих этих задач ((Erdoes, 1949;
Goldstein, 1973; Levinson, 1969), см. также историческое замечание
3.) Пусть ж(х) обозначает количество простых чисел ^ х; из при-
примера с решетом, рассмотренного выше, мы видим, что 7гF0) = 17.
В теореме утверждается, что lim*-^ w(x)/(x/Inx) = 1. Для боль-
больших х величина х/ In x аппроксимирует п(х); на самом деле это
оценка снизу. Грубо говоря, теорема утверждает, что из каждых
1пМ чисел одно является простым. Таким образом, интервал,
достаточно превышающий по длине пЛпМ, должен содержать
п простых чисел. Далее, размер таблицы простых чисел при-
примерно равен \/Ш/1п\/М. Если п = 10, то для 16-битной машины
76
Целые числа
10-ln 225 « 104, поэтому, скорее всего, хватит интервала длины 200.
Таблица простых чисел должна содержать около >/5*V In л/2^ « 35
простых чисел. В действительности x(->/V*) — 42. Для 32-битной
машины 10 • 1п231 « 214, поэтому возьмем интервал длины 500.
Размер таблицы простых чисел — примерно \/2^/1п\/2^яа 4314.
Настоящий размер равен тг(\/2^) = 4691. Следующий алгоритм
объединяет сформулированные выше соображения.
GENPR. Генерация простых чисел (Generate Primes)
Вход: Два целых числа Jb и m одинарной точности и одномерный
массив А длины к; т — нечетное целое число ^ 3.
Выход: Простые числа pi < ръ < ¦¦¦ < Рг одинарной точности,
лежащие в замкнутом отрезке [т,т + 2к — 2].
1. [Инициализация] п := т+ 2к — 2; для t := 1, 2, ... ,к выполнять
A(i) := 1; <Г:= 3.
2. [Если <Р > п, то получить простые числа и закончить работу]
Если d > [n/d], то перейти к шагу 6.
3. [Вычислить наименьшее положительное число .;', такое, что
d | (m + 1j - 2) и m + 2j - 2 ^ 3] r := M0D(m, d); j := 1; если
r > 0 и г четно, то j :— j + d— г/2; если r > 0 и г нечетно, то
j := j + (d - r)/2; если m ^ d, то j := j + d.
4. [Вычеркивание составных] Для i :;= j, j + d, j + Id,... пока
j > к выполнять A(j) := 0.
5. [Изменение d] Если MOD(d, 6) = 1, то d := d + 4, иначе
d := d + 2; перейти к шагу 2.
6. [Получить простые числа] Для » := jb, jb — 1, ..., 1 выполнять
{Если А(г) = 1, то выдать простое число m+2t—2 }; закончить
работу.
Анализ времени работы алгоритма GENPR. Все арифметичес-
арифметические операции в алгоритме выполняются с короткими числами,
следовательно, каждая операция выполняется за время порядка
0A).
Шаги 1 и 6 выполняются только один раз, каждый из них
включает к операций; поэтому время выполнения обоих шагов
равно О(к).
Шаги от 2 до 5 образуют цикл, для которого, как можно видеть
из описания шага 2, число у/п, где п = т + 2к - 2, является
верхней оценкой количества повторений. Кроме того, при каждом
выполнении тела цикла шаг 4 включает не более & операций, а
Разложение целых чисел на множители 77
шаги 2, 3 и 5 — одну или две операции. Поэтому весь цикл
выполняется за время О(ку/п).
Объединяя эти результаты и учитывая, что О(к + к^/п) =
О{ку/п), получаем
<GENPrH, *, т) = О(ку/п),
где п = т + 2Jfe - 2.
Пример. С помощью предыдущего алгоритма найдем все простые
числа между 3 и 21 (т.е. в случае m = 3 и Jb = 10).
После первого шага d = 3 и A(i) = 1, » = 1, ..., 10. На шаге 2
условие окончания не выполняется, поэтому мы производим шаг
3, где мы получаем г = 0 и j — 4 (поскольку т = d). На шаге 4 мы
изменяем массив А, присваивая АD) := 0, АG) := 0 и -А(Ю) := 0, и
на шаге 5 мы изменяем d, присваивая d := 5. Этим завершается
первое выполнение цикла, который включает шаги от 2 до 5.
В начале второго выполнения цикла проверка условия оконча-
окончания оказывается успешной, и мы переходим к шагу 6. На шаге 6
для » = 10 мы ничего не выдаем, поскольку АA0) = 0; однако для
» = 9 Л(9) = 1; поэтому мы выдаем простое число 19, и так далее.
Таким путем будут выданы простые числа 19, 17, 13, 11, 7, 5 и 3.
2.3.2. Целые числа по модулю го и алгоритм в греко-
китайской теореме об остатках
Вспомним, что при фиксированном т > 1 по определению
6 =т а тогда и только тогда, когда Ь — а = mq для некоторого
q (иначе говоря, b содержится в арифметической прогрессии
{... , —Зт + а, —2т + а,—т + а,а,т + а,2т + а,Зт + а,...}), или,
на языке этой главы, тогда и только тогда, когда т делит b — а.
Вместо записи 6 =т а мы будем также использовать запись b = a
(mod m), которая читается «Ь равно а по модулю т» или «6
сравнимо с а по модулю т». Это обозначение восходит к Гауссу,
и мы называем то модулями. Множество классов эквивалентности
Z/ =т обозначается также через Zm и называется множеством
вычетов или целыми числами по модулю т. Следующая теорема
перечисляет основные свойства этого отношения эквивалентности
и позволяет заключить, что важнейшие алгебраические свойства
целых чисел переносятся на целые числа по модулю т.
78
Целые числа
Теорема 2.3.7.
a. Если a = b (mod m) и d делит т, то а = b (mod d).
b. Если а = Ь (mod m) и а = 6 (mod п), то а = 6 (mod [m, n]).
c. Если а = с (mod m) и 6 = d (mod га), то a+b=c+d (mod m),
а — 6 = с — d (mod га) и ab = cd (mod то).
d. (Свойство сокращения.) Если об = ас (mod m), то b = с
(mod m/d), где d = (а,т). В частности, если (а,т) = 1, то
ab = ас (mod m) влечет за собой Ь = с (mod m).
Доказательство. Мы докажем часть а, а остальное предоставим
читателю. Из а = 6 (mod m) следует, что а—b = km для некоторого
целого числа к. Если d\m, то d также делит km, откуда вытекает,
что d\(a — b). Следовательно, а — b = k'd для некоторого целого
числа к' и a = b (mod d). ?
Пример. Из равенства 3-4 = 3-6 (mod б) мы получаем 4=6
(mod 2), тогда как из 3 • 4 = 3 • 9 (mod 5) получаем 4 = 9 (mod 5).
Полезная характеризация областей целостности дается следу-
следующим правилом сокращения.
Теорема 2.3.8. Нетривиальное коммутативное кольцо D является
областью целостности тогда и только тогда, когда из условий
ab = ас, а ф 0 следует, что b = с.
Доказательство. Докажем теорему только в одну сторону, оставив
обратную импликацию читателю. Пусть D — область целостнос-
целостности и а, 6 — элементы из D; тогда из равенства ab = 0 вытекает,
что а = О или 6 = 0. Из того, что ab = ас, а ф 0, следует, что
оF-с) = 0, а ф 0, и, поскольку в D нет делителей нуля, то Ь = с. О
Рассмотрим классы эквивалентности аи Ь в TLm\ мы опре-
определим сумму и произведение а + b и а • b этих классов через
сумму и произведение их представителей. А именно мы имеем
сюръективное отображение з:Ж -» Ът\ положим a -f b = s(a + 6)
и а • Ъ = s(a • 6). Из теоремы 2.3.7 вытекает, что это определе-
определение корректно, т.е. если с е а и d € b — другие представители,
то мы получим те же самые классы эквивалентности для суммы
и произведения, поскольку s(c + d) = s(a + 6) и s(c ¦ d) = s(a ¦ b).
Отношение эквивалентности, которое сохраняет алгебраические
свойства (такое, как =т, сохраняющее сложение и умножение),
называется конгруэнцией.
Разложение целых чисел на множители
79
Используя свойство евклидовости, мы можем рассматривать
арифметику целых чисел по модулю га как арифметику остатков
или модулярную арифметику. Полная система остатков по модулю
т состоит из т целых чисел, по одному представителю из каждого
класса эквивалентности. Чаще всего используются следующие
две системы: система неотрицательных остатков по модулю т,
состоящая из чисел 0, 1, 2, ..., га—1, и система наименьших
по абсолютной величине остатков, или симметричная система
остатков, состоящая из чисел 0, ±1, ±2, ..., ±(т — 1)/2 для
нечетного числа га.
Запишем целое число а как a = mq + г, где 0 ^ г < т. Остаток
г, который иногда обозначается через гт(а) или г(а), называется
остатком по модулю т. Следующее предложение утверждает,
что два целых числа конгруэнтны в точности тогда, когда они
имеют одинаковые остатки по модулю т.
Предложение 2.3.9. b = a (mod m) тогда и только тогда, когда
гт(а) = ггоF).
Доказательство. Заметим, что для всякого а выполняется r(a) = a
(mod m). По транзитивности отсюда следует, что b = a (mod то)
тогда и только тогда, когда гт(а) = rm(b), т.е. тогда и только
тогда, когда m | [r(b) - г(а)]. Но поскольку 0 ^ r(b),r(a) < га, га
делит г(а) — гF) в точности тогда, когда r(b) = г(а). О
Это предложение утверждает, что для целого числа а его класс
эквивалентности а = а + тЖ, является в точности множеством чи-
чисел, остатки которых совпадают с г(а). Остатки 0, 1, ..., га — 1
являются представителями классов эквивалентности. Допуская
вольность обозначений, мы иногда отождествляем класс эквива-
эквивалентности с представляющим его остатком и рассматриваем Zm
просто как множество {0, 1, ..., га — 1}.
В модулярной арифметике мы работаем с остатками по модулю
га. Противоположный (аддитивный обратный) элемент к произ-
произвольному числу а из Ът — это т — а, однако мультипликативный
обратный элемент к а, определяемый как решение уравнения
ах = 1 (mod m), существует не всегда.
Теорема 2.3.10. Пусть а € Zm. Тогда а имеет мультипликатив-
мультипликативный обратный по модулю т элемент в том и только том случае,
когда (а,т) = 1.
80
Целые числа
Доказательство. С помощью расширенного алгоритма Евклида
мы можем найти целые числа хну, такие, что (а, т) = ах + ту,
откуда вытекает, что ах = (а,т) (mod m). Если (а,т) = 1, то пре-
предыдущее сравнение означает, что х является мультипликативным
обратным к а по модулю т. Если же (а,т) > 1, то не существует
числа х, для которого выполняется сравнение ах = 1 (mod m),
поскольку ах = 1 + km влечет за собой (а, т) = 1. ?
Теорема 2.3.11. Для всякого целого числа т > 1 множество
Zm = {0, 1, 2, ..., т — 1} с операциями умножения и сложения
по модулю т является коммутативным кольцом с единицей и
называется кольцом вычетов по модулю т. Оно является полем
тогда и только тогда, когда m — простое число.
Доказательство. С помощью определенного ранее сюръектив-
ного отображения s:Z <— Zm, а также определения сложения и
умножения в TLm мы легко можем вывести, что Zm является ком-
коммутативным кольцом с единицей, из того, что Z является таким
кольцом. Например, для проверки ассоциативности умножения
заметим, что для любых а, 6 и с в Z выполняются соотношения
s(a) ¦ [s(b) ¦ s(c)] = s(a) s(b • с) = s[a ¦ (b¦ c)] = s[(a ¦ b)-e] = s(a-b) • s(c) =
[s(a)-s(b)].s(c).
Пусть теперь т — простое число; тогда все ненулевые элементы
в Zp обратимы, и, следовательно, Zp является полем. С другой
стороны, если т не является простым, то Zm — не поле. Чтобы
убедиться в этом, запишем т = а • b, a,b < m; тогда s(a) ¦ «(&) =
s(m) = s@), но s(a) ф s@) и s(b) ф s@), откуда вытекает, что s(a) и
s(b) являются делителями нуля. ?
Пример. Рассмотрим р — 5. Кольцо Ъь = {0, 1, 2, 3, 4} является
полем, так как все его ненулевые элементы 1, 2, 3 и 4 обратимы
(обратные элементы — это 1, 3, 2 и 4 соответственно). Кольцо
Zg = {0, 1, 2, 3, 4, 5, б, 7} полем не является, поскольку в нем есть
делители нуля, например 2-4 = 0 (mod 8).
Отметим попутно, что мультипликативная группа кольца Ът
имеет ф(т) элементов, где ф — функция Эйлера; другими словами,
это группа порядка ф(т).
Теорема 2.3.12. Характеристика А конечного поля — простое
число.
Доказательство. Предположим, что характеристика А конечного
поля — составное число, т.е. X — ab, 1 < а,Ь < А. Тогда числа
Разложение цел иг чисел на множители
81
а • 1 и 6 • 1 отличны от нуля, но (а • 1)F • 1) = (ab) • 1 = А • 1 = 0, что
противоречит отсутствию делителей нуля в поле. ?
Применения линейных сравнений по модулю т. Одно
из многих применений — древний алгоритм проверки ошибок,
который изучается в средней школе и известен под названием
«отбрасывание девяток». Когда мы складываем десятичные числа
в столбик, то если в некотором столбце сумма цифр превышает 9,
мы приводим ее по модулю 10 и прибавляем 1 или 2, или 3 и т.д.
к следующему столбцу. Если рассматривать сумму десятичных
цифр всех чисел, то мы прибавляем к ней 1 или 2, или 3 и т.д.
и вычитаем из нее 10 или 20, или 30 и т.д. Поэтому сумма
цифр не изменяется по модулю 9. [Можно также заметить, что
аЬс = 100а + 106 + с = 99а + 96 + (а + 6 + с).]
Пример. Рассмотрим сложение двух чисел:
89 сумма цифр = 17,
+ _§9 сумма цифр = 17,
178 34
сумма суммы цифр = 8
сумма суммы цифр = _8
16
Мы видим, что сумма цифр числа 178 равняется 16 = 7 (mod 9),
сумма цифр числа 34 и сумма цифр числа 16 также равны 7.
Аналогичный алгоритм проверки ошибок применим и к умно-
умножению:
89 сумма цифр = 17
х 87 сумма цифр = 15
7743
Произведение сумм цифр равно 17 - 15 = 255, сумма цифр этого
произведения равна 12 = 3 (mod 9); точно так же сумма цифр
произведения 7743 равна 21 = 3 (mod 9). Причиной того, что
произведение сумм цифр чисел равно по модулю 9 произведению
самих чисел, является сравнение 10* = 1 (mod 9), k ^ 0. Единст-
Единственным недостатком этого древнего алгоритма проверки ошибок
является то, что он не всегда находит ошибку; 10% случайных
ошибок остаются не обнаруженными.
Вычисление мультипликативных обратных. Мультипли-
Мультипликативные обратные элементы по модулю m играют важную роль
в этой книге. Рассмотрим два способа их вычисления.
Как уже отмечалось в доказательстве теоремы 2.3.10, для вы-
вычисления мультипликативного обратного по модулю т к элементу
а, который обозначается через a (mod m) или просто а, можно
6-274
82 Целые числа
воспользоваться расширенным алгоритмом Евклида. Из условия
(а, га) = 1 получаем
W= 1,
или, перенеся ту в правую часть,
ах = 1 — ту,
откуда вытекает, что
ах =1 (mod m),
и, следовательно, х — мультипликативный обратный к а по моду-
модулю т. [Отметим, что в нашем случае мы имеем дело с короткими
целыми числами; поэтому, полагая L(b) = 1 в выражении для
времени работы алгоритма Евклида, получаем, что мультиплика-
мультипликативный обратный вычисляется за время ~ 1.]
Пример. В поле GF(ll) вычислим 4 (mod 11) — мультиплика-
мультипликативный обратный элемент к 4 по модулю И. Применяя расширен-
расширенный алгоритм Евклида к 11 и 4, получим следующую таблицу:
Итерация q
a\ xq х\
2/1
0 - И 4 1 0 0 1
1 2 4 3 0 11-2
2 13 11-1-2 3
3 3 1 0 -1 4 3 -И
Из последней строки вытекает, что 1 = 11-(—1)+4-3, где числа— 1 и
3 расположены в столбцах хо и j/q соответственно; следовательно,
4 (mod 11) = 3. Можно ускорить вычисление мультиплика-
мультипликативных обратных, заметив, что в нашем случае не обязательно
вычислять последовательность элементов х. (Обратный элемент
появляется в столбце уо, который содержит множители при 4; он
мог бы появиться в столбце хо, если бы мы поменяли местами
числа 4 и 11.)
Другой способ вычисления мультипликативного обратного по
модулю простого числа m состоит в применении следующей
замечательной теоремы (см. историческое замечание 4).
Разложение целых чисел на множители
83
Малая теорема Ферма A640). Бели т — простое число и о
— произвольное целое число, не делящееся на т, хо ат~1 = 1
(mod m).
Доказательство. Рассмотрим числа а, 2а, За, ..., та. Никакие два
из этих чисел не дают при делении на m одинаковых остатков.
[Бели бы остатки были одинаковы, то (»' — j)a было бы кратно
т, потому что при вычитании остатки сокращаются; так как т
не делит а, то m делило бы i - j, что невозможно, поскольку » и
j принадлежат последовательности 1, 2, 3, ..., т.] Поэтому при
делении на т числа а, 2а, За та дают остатки 0, 1, 2, ...,
т — 1 в каком-то порядке, где 0 получается при делении та на т.
ОпускаяО, имеем ат~1(т— 1)! = (т—1)! (mod т). Вычитая правую
часть равенства из левой, получаем ат~х(т — 1)! — (т — 1)! = 0
(mod т), откуда следует, что (ат~1 - 1)(т — 1)! делится на т. Так
как т не делит (т — 1)! и является простым числом, то m делит
а171-1 - 1. ?
Следствие 2.3.13. Если m — простое число, то в кольце 7Lm
выполняется равенство а = ат~2.
Следующее утверждение, принадлежащее Эйлеру, обобщает
малую теорему Ферма (т — не обязательно простое число).
Теорема 2.3.14 (Эйлер). Если (а,т) = 1, то аф(-т^ = 1 (mod m).
Доказательство. Доказательство ведется параллельно доказа-
доказательству теоремы Ферма. Рассмотрим простую систему остатков
по модулю т г\, г%, ..., Гф(т) и домножим каждое г* на а, где
(а,т) = 1. (Эта система остатков называется «простой», потому
что она состоит из остатков, взаимно простых с m и образующих
мультипликативную группу.) Домножение изменяет последова-
последовательность остатков, но не меняет их общего произведения, так как
остатки образуют мультипликативную группу. Следовательно,
а*(т)пг2 • • • Гф(т) = rir2 • • • гФ(т) (mod m). Поскольку по определе-
определению остатки взаимно просты с т, мы можем применить прави-
правило сокращения из теоремы 2.3.7, после чего получим а*(т) = 1
(mod m). ?
Следствие 2.3.15.
а-1 _ аФ(т)-1
В кольце Ът из (а,т) = 1 вытекает, что
Из сказанного выше следует, что для вычисления мультиплика-
мультипликативного обратного к а по модулю т нужно возвести а в некоторую
84 Целые числа
степень к, где Jb может равняться либо т - 2, либо ф(т) — 1.
Рассмотрим два способа возведения в степень.
Первый, использующий «грубую силу», требует выполнения Jb
умножений. Поскольку мы имеем дело с арифметикой коротких
чисел, то каждое умножение выполняется за время ~ 1, и, следова-
следовательно, все время выполнения равно О(т). [Мы воспользовались
тем, что ф(т) ^ т.]
Второй, так называемый «бинарный метод», является гораздо
более аффективным способом возведения числа а в степень к;
этот метод был известен в Индии 2000 лет назад. Он работает
следующим образом: запишем Jb в двоичной системе счисления,
опустив нули перед первой значащей цифрой,
*=
Заменим каждую цифру «1» на пару букв «SMa» и каждую цифру
«0» на букву «S»; после этого вычеркнем пару букв «SMa»
слева. Получившаяся последовательность букв представляет
собой правило для вычисления а*, если интерпретировать «S»
как «возвести в квадрат и взять остаток по модулю т», а «Ма»
как «.умножить на а и взять остаток по модулю т».
Пример. В GFA1) для того, чтобы найти 4 (mod 11), мы
должны вычислить 49, причем двоичное представление 9 равно
1001. Образуем последовательность SM4 S S SM4 и, вычеркнув
левые SM4, получим последовательность SSSM4, которая означает,
что мы должны «возвести в квадрат, возвести в квадрат, возвести
в квадрат и умножить на 4», выполняя, конечно, приведение
по модулю 11 на каждом шаге; иначе говоря, 49 = [D2J]24.
Проводя вычисления, последовательно получим в GF(ll) 42 = 5,
44 = 52 = 3; выполняя последний шаг, т.е. возведение в квадрат
и умножение на 4, заметим, что 49 = D4J • 4 = C2L = 9-4 = 3,
откуда получаем, что мультипликативный обратный к 4 по модулю
11 равен 3.
Описанная выше «бинарная» процедура работает слева напра-
направо по отношению к битовому представлению числа к и, поскольку
она не использует временной памяти, хорошо подходит для ап-
аппаратной реализации. Однако удобнее работать справа налево,
поскольку мы можем получать биты с помощью обычного сдвига
вправо на единицу. Следующий алгоритм использует приведенные
выше идеи и работает справа налево.
Разложение целых чисел на множители 85
Б. Возвести в степень (Exponentiate)
Вход: Ненулевые а, к и т; а — влементиз2„,, ib = 5Z0<»<n-i *<2'
ib совпадает либо с т - 2, либо с ф(т) — 1.
Выход: а, мультипликативный обратный к а элемент по моду-
модулю т, где а = а* в кольце Zm.
1. [Инициализация] К := к; В := 1; А := а.
2. [Вычисление следующего бита] q :— [К/2]; г := K-2-q; К := q;
если г = 0, то перейти к шагу 5.
3. [Умножить и взять остаток по модулю т] В := А- В (mod m).
4. [Закончить?] Если К = 0, то вернуть a (mod m) := В.
5. [Возвести в квадрат и взять остаток по модулю т] A := А2
(mod т); перейти к шагу 2.
Анализ времени работы алгоритма Е. Пусть двоичное представ-
представление числа Jb состоит из п битов, и пусть j из них равны единице.
Тогда в алгоритме выполняется п + j умножений, каждое из ко-
которых занимает время ~ 1. Поскольку j не больше, чем п, имеем
0B • п) = 0B • log2 m) (проверьте это) = O(log2 m) и
*Е = О[Цт)],
что является значительным улучшением по сравнению с прими-
примитивным подходом.
Предположим теперь, что мы применяем алгоритм Б к целым
числам, а не к элементам кольца Zm- Пусть на вход алгоритма
подаются целые числа а, Ь. Тогда, если мы заменим шаг 3
на «Б := А + В» и шаг 5 на «Л := А + А» и если на шаге 1
вместо «Б := 1» мы присвоим начальное значение «В := 0» и
вместо «АГ := к* — значение «е-К := 6», то алгоритм выдаст
В = а-Ь. Этот удобный на практике метод выполнения умножения
называют часто «русским крестьянским» методом, подразумевая,
что русские крестьяне использовали его, потому что будто бы
умели только умножать и делить на 2 и складывать.
Пример. Чтобы умножить 38 на 19, запишем эти числа в вершинах
двух столбцов с метками а и Ь. Следующие элементы этих
столбцов получаются умножением на 2 в столбце а и делением на
2 в столбце Ь. Бели число в столбце 6 нечетно, вычтем из него
1 перед делением на 2 и запишем соседнее число из столбца а в
третий столбец, который называется сумма. Когда мы получим
86
Целые числа
число 1 в столбце 6, сложим числа в столбце сумма и получим
ответ. Получается следующая таблица:
а
38
76
152
304
608
Ь
19
9
4
2
1
сумма
38
76
608
722 = 38-19
Русский крестьянский метод основан на том, что а • b = Bа) • F/2),
если 6 четно, и а • 6 = Bа) • F - 1)/2 4- а, если 6 нечетно.
Еще раз о теореме Ферма. Малая теорема Ферма играет
важную роль в цифровом кодировании, и мы рассмотрим ее более
подробно. Если для некоторого числа а число ат —а (полученное
из ат~1 = 1 (mod m)) дает ненулевой остаток при делении на т,
то т — составное число. Предположим, напротив, что ат — а
делится на т. Следует ли из этого, что т — простое число?
Отдельные примеры наводят на мысль, что да: 22 - 2 делится на
2, 23 — 2 делится на 3, 25 — 2 делится на 5, 27 - 2 делится на 7, и
числа 2, 3, 5, 7 простые.
У древних китайцев был следующий тест простоты: число m
является простым тогда и только тогда, когда т делит 2т — 2,
или 2т~1 = 1 (mod m). Эта теорема не обсуждалась в течение
многих столетий, и Лейбниц верил, что она верна. На самом
деле верна лишь вторая часть — «только тогда», а первая часть
неверна, как продемонстрировал в 1819 г. французский математик
Пьер Фредерик Сарю. Он показал, что 2341 — 2 делится на 341, в
то время как 341 — составное число, произведение 11 на 13. Это
нетрудно проверить, если воспользоваться сравнением
210 = 1 (mod 341),
откуда вытекает, что
2340 = B10K4 = I34 = 1 (mod 341), или 341 | B341 - 2).
После открытия Сарю было найдено много других контрпри-
контрпримеров с различными значениями основания а; например, З91 — 3
Разложение целых чисел на множители 87
делится на составное число 91, и так далее. Конечно, не всег-
всегда проверка будет такой простой, как в случае вычисления 2340
(mod 341), когда мы воспользовались тем, что 210 = 1 (mod 341).
Поэтому в общем случае придется возводить число в степень, но
мы уже знаем аффективный метод для этого.
Составные числа, которые ведут себя так, как простые в теоре-
теореме Ферма для данного основания а, называются псевдопростыми
по основанию а. Число 341 является наименьшим псевдопростым
по основанию 2, а число 91 — наименьшим псевдопростым по
основанию 3. Оказывается, что для всякого основания а сущест-
существует бесконечно много псевдопростых чисел (см. теорему 2.3.28).
Существуют даже составные числа, такие, как 561 = 3 • 11 • 17 и
1729 = 7-13-19, которые являются псевдопростыми по любому
основанию а. Числа такого вида, называемые кармайкловыми,
будут рассмотрены ниже (см. историческое замечание 5).
По контрасту со сказанным выше следующая теорема справед-
справедлива тогда и только тогда, когда m — простое число.
Теорема 2.3.16 (Вильсон), (т - 1)! = —1 (mod m) тогда и только
тогда, когда т — простое число.
Доказательство. Лля доказательства, не использующего тео-
теорию групп, в случае простого m рассмотрим произведение
2 • 3 • 4 • • • (т — 3) • (т — 2). Здесь все сомножители имеют раз-
различные мультипликативные обратные по модулю т (см. также
упр. 7 к этому разделу); например, для т = 7 рассмотрим2-3-4-5,
где числа 2 и 4, а также 3 и 5 образуют пары взаимно обратных
по модулю 7. Произведение элементов такой пары = 1 (mod m), и
то же самое выполняется для произведения всех (т — 3)/2 таких
пар. Другими словами,
2 - 3 - 4 • - - (т — 3) - (т — 2) = 1 (mod т);
домножая его на т — 1, получим
2• 3 • 4• •• (т - 3) • (т -2) • (т - 1) = (т- 1)! =
= т — 1 = — 1 (mod т). р
Рассмотрим функцию f(m) = sin{7T-[(m — l)! + l]/m}. Из теоремы
Вильсона получаем, что /(т) принимает нулевое значение тогда
1 только тогда, когда т — простое число. К сожалению, теорема
88 Целые числа
Вильсона в качестве теста простоты не имеет никакой практичес-
практической ценности, потому что приходится вычислять (т — 1)! — очень
большое число1) даже для небольших значений т.
Некоторые результаты из теории групп. Рассмотрим
теперь некоторые интересные результаты теории групп, которые
нам понадобятся при изложении греко-китайской теоремы об ос-
остатках. Как уже отмечалось в теореме 2.3.11, кольцо Zm не всегда
является полем, потому что в нем могут быть необратимые эле-
элементы. Мы уже рассматривали кольцо Zg, в котором элементы 2,
4 и 6 не имеют мультипликативных обратных, тогда как элементы
1, 3, 5 и 7 имеют обратные элементы. Различие проистекает из
того, что 1, 3, 5 и 7 взаимно просты с 8, а для 2, 4 и 6 это не так.
Обратимые элементы кольца Ът образуют мультипликативную
группу, которая называется группой обратимых элементов** коль-
кольца TLm. Эта группа обозначается через Um = {а:(а,т) = 1} и
имеет ф(т) элементов, т.е. ее порядок равен ф(т). Заметим, что
Us содержит четыре элемента {1, 3, 5, 7}, каждый из которых
имеет мультипликативный обратный; более того, отметим, что в
ее таблице умножения, показанной на рис. 2.3.1, каждая строка
содержит перестановку элементов группы.
*
1
3
5
7
1
1
3
5
7
3
3
1
7
5
5
5
7
1
3
7
7
5
3
1
Рис. 2.3.1.
Таблица умножения группы Ug.
Пусть G — абелева группа из п элементов, т.е. любые два эле-
элемента из G коммутируют между собой. Для произвольного а из G
обозначим а • а • ¦ ¦ а {к раз) через ак; а0 = е — единичный элемент
группы G. Обычные соотношения для степеней по-прежнему вы-
выполняются. Справедливо следующее обобщение теоремы Ферма.
*) Если вычисления проводить в кольце Ът, то потребуется m - 2
умножения, т.е. количество умножений экспоненциально зависит
от длины записи числа. — Прим. перед.
2) «Groop of units» —иногда ее называют группой единиц кольца. —
Прим. перев.
Разложение целых чисел на множители
89
Теорема 2.3.17. Если G — абелева группа, состоящая из п
элементов, то для всякого а из G выполняется равенство а" = е.
Доказательство. Дадим только набросок доказательства. Пусть
ai, ai, ..., йп — элементы группы G. Тогда элементы а-а\, а-а^, ¦..,
а ¦ а„ попарно различны, и множество {а • ai, а • а2,..., а ¦ а„} сов-
совпадает с множеством {ец, аг,..., ап}. Завершение доказательства
проводится так же, как и в теореме Ферма, нужно только показать
(по индукции), что произведение более чем двух элементов группы
не зависит от расстановки скобок (обобщенная ассоциативность)
и от порядка сомножителей (обобщенная коммутативность). ?
Эта абстрактная версия теоремы Ферма справедлива и для
неабелевых групп; ее доказательство можно найти где угодно (см.
например, (Cnilds, 1979)).
Пусть G — группа из п элементов, абСи5={|Ь^ 1: а* = е }.
Так как а" = е, то 5 непусто и по принципу полной упорядо-
упорядоченности S имеет наименьший элемент ко, который называется
порядком элемента а. Группа называется циклической, если в ней
существует элемент а, степени 1, а, а2,... которого пробегают все
элементы группы. Этот элемент называется образующим или, в
случае группы Um, примитивным корнем по модулю т.
Примитивные корни могут быть использованы для генерации
случайных чисел на компьютере. Выберем примитивный корень
по модулю т, где длина записи т равна длине машинного слова,
и всякий раз, когда пользователю потребуется случайное число,
будем выдавать следующую степень этого примитивного корня
по модулю т. Выбор именно примитивного корня обеспечивает
нам максимально возможную длину цикла в порождаемой таким
способом последовательности «случайных» чисел. Справедлива
следующая теорема. .
Теорема 2.3.18. Пусть G — группа, состоящая из п элементов,
и пусть ко — порядок элемента а из G. Тогда ко \ п.
Доказательство. Нетрудно видеть, что элементы е, а, а2, ...,
а*о-1 различны. Если эти ко элементов не исчерпывают всей
группы G, то в ней должен быть еще какой-то элемент, скажем
а2. Тогда нетрудно видеть, что а2, а% ¦ а, а2 ¦ а2, ..., а2 • а*0 —
это ко различных элементов, ни один из которых не совпадает с
предыдущими Дго элементами группы G. Если G не исчерпана,
то должен быть еще один элемент аз, и так далее. Этот процесс
получения новых элементов а,- должен рано или поздно оборваться,
90
Целые числа
потому что G состоит из п элементов. Ясно, что порядок п группы
G равен Jb0 • j, где а;- — последний полученный элемент. ?
Теорема 2.3.19. Если Jfco — порядок элемента а из G и а* = е, то
Доказательство. Пусть ib = koq + г, где 0 ^ г < ib0. Если г = О,
то доказывать нечего, поэтому предположим, что г > 0. Тогда
а* = а*°*+г ¦= (ak°)qar = е, откуда следует, что аг — е. Это, однако,
противоречит тому, что ко — наименьшее число со свойством
а*0 = е. ?
Полагая G = Um, получаем из доказанного выше, что порядок
любого элемента группы Um делит ф(т). Примитивные корни,
если они существуют, являются в точности элементами макси-
максимального возможного порядка ф(т). Очевидно также, что теорема
2.3.14 (Эйлера) — следствие этих замечаний.
Проверим, является ли группа Us циклической, т.е. существует
ли элемент а в Us, степени 1,а,а2,а3,... которого пробегают все
элементы этой группы. Рассмотрим порядки различных элементов
из U$ по модулю 8:
п =1234567...
3"
5"
Т
= 3
= 5
1
1
1
3
5
7
1
1
1
3
5
7
1
1
1
3 ...
5 ...
7 ...
Период этих последовательностей равен 2, поэтому порядок лю-
любого отличного от единицы элемента Us также равен 2, порядок
делит ^(8) = 4 (теорема 2.3.18). Поэтому группа Us не циклическая,
и не существует примитивных корней по модулю 8. Следующая
теорема объясняет, почему это так.
Теорема 2.3.20. Группа Um является циклической тогда и
только тогда, когда m равно 1, 2, 4, ра или 2ра, где р — нечетное
простое число и а > 0. Значит, примитивные корни по модулю m
существуют в точности для таких значений т.
Доказательство. Доказательство можно найти в (LeVeque, 1977). ?
Оказывается, что 8 — наименьшее число, не имеющее при-
примитивных корней. С другой стороны, по теореме 2.3.20 Uis —
циклическая группа, потому что 18 = 2 • З2. Группа Uis состоит из
Разложение целит, чисел на множители
91
= 6 элементов, а именно Uis = {1, 5, 7, 11, 13, 17}, и элемент
5 является примитивным корнем, поскольку
п =0123 4 5 6...
5" = 1 5 7 17 13 11 1 ...
Предлагаем читателю найти все примитивные корни по модулю
18. Непосредственно из теоремы 2.3.20 получаем
Следствие 2.3.21. Если т — нечетное простое число, то группа
Um циклическая и уравнение я2 = 1 в Um не имеет решений,
отличных от х = ±1.
Как только мы нашли примитивный корень а по модулю m в
Um, мы можем сразу же получить другой корень — его мультип-
мультипликативный обратный а по модулю т. В случае U\s 5 = 11
(mod 18), и 11 также является примитивным корнем. (Этот факт
будет проверен ниже.)
Сколько примитивных корней содержится, например, в (/is?
Если возвести примитивный корень г в степень Jb > 1, где
gcd[A;,^(m)] = 1, то г' = г* будет другим примитивным корнем,
потому что порядок элемента г' равен ф(т) (это будет доказано
ниже); в случае U = 18 ^A8) = 6 и, поскольку E,6) = 1, вычислим
55 в кольце Zig. Получим 11, другой примитивный корень. В об-
общем случае число примитивных корней равно ^[^(т)]. Например,
в '(/is имеются два примитивных корня, 2 и 11.
Если, однако, gcd[Jb,^(m)] = d > 1, то порядок элемента г' = г*
равен ф(т)/<1. Чтобы убедиться в этом, заметим сначала, что
число ф(т)/<1 является периодом элемента г', т.е. (ry)^m^d =
r^(">)t/d = i*/d _ j (mod m)_ Покажем теперь, что это мини-
минимальный период. Используя наименьшее общее кратное [&,^(»Т1)],
получаем (r')«4m)*/d = r^m)*/d = rt*-*(mM = r*m'H = V = 1 (mod m).
Уравнения по модулю некоторого числа т. В заключение
рассмотрим уравнения по модулю т и греко-китайский алгоритм.
Заметим, что уравнение 6х = 4 (mod 8) имеет решения х = 2, х = 6,
... (mod 8), тогда как уравнение 6х = 5 (mod 8) не имеет решений
[попробуйте подставить х = 0, 1, ... ,7 (mod 8)]. Следующая
теорема говорит о том, в каких случаях можно решить такое
уравнение.
Теорема 2.3.22. Уравнение ах = Ь (mod m) имеет решение тогда
и только тогда, когда (а, т) | 6. Бели решение существует, то оно
единственно по модулю m/d, где d = (a, m); по модулю т уравнение
имеет d решений.
92 Целые числа
Доказательство. Целое число удовлетворяет уравнению ах = Ь
(mod m) тогда и только тогда, когда существует целое число у,
такое, что ах + ту — 6. По теореме 2.2.4 уравнение ах + ту = 6
имеет решения тогда и только тогда, когда (а,т) \ Ь. Для
доказательства второй части предположим, что х удовлетворяет
условию ах = 6 (mod га), и пусть z сравнимо с х по модулю m/d,
где d — (а,т). Тогда z = х + w(m/d) для некоторого w ? Z,
и az = ах + aw(rn/d) = ах + mw(a/d) = ах = Ь (mod m); таким
образом, az = Ь (mod m). Обратно, пусть ах = az = b (mod т).
Тогда ах — аг = 6 — 6=0 (mod m); следовательно, m | а(х — z). По
теореме 2.2.6 m/d делит х — z, и, значит, х = z (mod m/d). ?
Пример. Найдем решения уравнения 270х = 36 (mod 342). При-
Применяя расширенный алгоритм Евклида, получим, что (—5) • 270 +
4 • 342 = 18, и 18 | 36. По теореме 2.3.22 это уравнение имеет реше-
решение, единственное по модулю 19 = 342/18. Лля нахождения этого
решения умножим равенство (—5) • 270 + 4 • 342 = 18 на 2 = 36/18 и
получим (—10) • 270 + 8 • 342 = 36, откуда следует, что (—10) — одно
из решений уравнения по модулю 342. По модулю 19 это единст-
единственное решение, равное 9, поскольку 9 = —10 (mod 19). Другими
решениями по модулю 342 являются числа 9, 28, 47, 66, 85, 104, 123,
142 и так далее.
Частным случаем теоремы 2.3.22 является следующее утверж-
утверждение.
Следствие 2.3.23. Уравнение ах = 1 (mod m) имеет решение
тогда и только тогда, когда (а,т) = 1. Решение a (mod т) един-
единственно по модулю 7П и является мультипликативным обратным к
а элементом по модулю т.
Пример. Уравнение 2х = 1 (mod 26) не имеет решений, поскольку
B,26) = 2. В данном случае это можно показать и более простым
способом: мы ищем число х, такое, что 4.x— 1 = Jb - 26, однако левая
часть последнего уравнения — всегда нечетное число, а правая
— четное.
Рассмотрим теперь задачу решения системы линейных урав-
уравнений по модулю некоторого числа т. С этой задачей связана
греко-китайские теорема об остатках и алгоритм (см. историчес-
историческое замечание 6). Для того чтобы представить замечательную
греко-китайскую теорему об остатках в общем виде, обсудим сна-
сначала утверждение о том, что если целое число m может быть
Разложение цел их чисел на множители 93
разложено в произведение т — Pi'P^ "Pt* (разложение в про-
произведение степеней простых чисел), то кольцо Zm также может
быть «разложено» в прямое произведение колец Z •<. (Полное
доказательство будет приведено в теореме 2.3.25.)
Например, Z6 = Z2 х Z3, поскольку 6 = 2-3. Это означает,
что мы должны рассматривать пары (xi,x2), где х\ € Zj и хя €
Из; например, шести элементам кольца 2е соответствуют пары
@,0), @,1), @,2), A,0), A,1), A,2). Арифметические операции
выполняются покомпонентно: если обозначить значком • одну
из операций + или •, то (xi, х2) • (yi, у2) = (*1 • !/i,*2 • Ife), где
операция х\ • у\ выполняется в Z? (арифметика по модулю 2), а
операция х2 • уг — в 2з (арифметика по модулю 3); например,
@,2) • A,2) = @,1), где умножение 2 • 2 выполняется по модулю 3.
Справедлива следующая теорема.
Теорема 2.3.24 (греко-китайская теорема об остатках). Пусть
тг, го2, ..., гтц — попарно взаимно простые целые числа > 1, и
пусть М = т\гп2 ¦ ¦ ¦ rtik. Тогда существует единственное неотри-
неотрицательное решение по модулю М следующей системы уравнений:
х = ay (mod mi),
х = аз (mod mi),
x = a* (mod mi).
Другими словами, отображение, которое каждому целому числу
х, 0 ^ х ^ М — 1, ставит в соответствие строку {а\, а2, ..., at), где
Xi = ai (mod пц), i = 1, 2 jfc, является биекцией кольца TLm на
Zmi xZm] x---Z^b.
Доказательство. Дадим конструктивное доказательство этой те-
теоремы. Нужно найти число х, 0 ^ х ^ М — 1, удовлетворяющее
одновременно всем сравнениям х = a< (mod m<), i = 1, 2, ..., к.
Будем решать уравнения по 2 одновременно.
Рассмотрим сначала первые два сравнения. Первое сравнение
х = ai (mod mi) справедливо для всякого х вида х = ai -f mig, q
произвольное. Для нахождения q подставим значение х во второе
сравнение х = a2 (mod m2), после чего получим х = а\ -f mi? = a2
(mod m2), откуда q = (mi)~1(a2 - ai) (mod m2). (Конечно, нам
придется сначала вычислить обратный к mi по модулю т2; см.
упр. 2 по программированию к втому разделу, в котором описана
94
Целые числа
процедура MODINV.) Таким образом, q = m, 1 {а2 — а\)-\-гт^ для
некоторого г. Подставив значение q в выражение х = ai + m\q,
получим, что решение х первых двух уравнений представляется в
виде х = ai2 + i"(mim2) Для некоторого г.
Теперь первые два сравнения могут быть заменены на одно,
х — а\2 (mod mim?), которое мы рассматриваем по модулю произ-
произведения mim2. Применим описанную выше процедуру к х = ^2
(mod ГО1ГП2) и сравнению, которое первоначально было треть-
третьим, и будем повторять этот процесс, пока не найдем число х,
удовлетворяющее всем сравнениям.
Для доказательства единственности предположим, что сущест-
существует х', 0 ^ х' ^ М — 1, такой, что х' = a< (mod m,) для любого
»'. Тогда х — х' = 0 (mod го,-) для всех i, откуда следует, что
т,- | (х — х') для любого »'. Но тогда М | (х — х') и, поскольку
|х-х'|<М, х = х'. П
Интересно отметить, что если в теореме 2.3.24 модули го,- не
являются взаимно простыми, то решение существует тогда и
только тогда, когда (гщ,щ) \ (сц — aj) для всех пар »', j. Если
решение существует, то оно единственно по модулю наименьшего
общего кратного [mi, т2, •••, п?*] чисел т,-; см. также упр. 10 к
этому разделу.
Пример. Решим систему уравнений
х = 1 (mod 2),
х = 2 (mod 5),
х = 5 (mod 7).
В соответствии с процедурой, описанной в доказательстве те-
теоремы 2.3.24, мы видим, что первое уравнение выполняется для
х = l + 2q. Чтобы вычислить q, подставим х во второе уравне-
уравнение; получим 1 + 2q = 2 (mod 5), или 2q = B — 1) (mod 5). Затем
вычислим мультипликативный обратный элемент к 2 (mod 5), ко-
который равен 3, и, таким образом, q = 3 (mod 5) или q = 3 + Ъг для
некоторого т. Следовательно, решением первых двух уравнений
является х = 1 + 2C + 5г) = 7 + 2 • 5г, т.е. х = 7 (mod 2 • 5).
Теперь нам нужно ешить систему двух уравнений х = 7
(mod 2 • 5) и х = 5 (mod 7). Имеем x = 7 + 2-5g = 5 (mod 7), или
2 • bq = E — 7) = — 2 = 5 (mod 7). Мультипликативный обратный
элемент к 10 по модулю 7 совпадает с обратным к 3 по модулю 7,
Разложение целых чисел на множители
95
который равен 5. Далее получаем q — Ь ¦ 5 (mod 7) = 4 (mod 7),
или q = 4 + 7г для некоторого г. Следовательно, решением трех
уравнений является число х = 7+2-5D+7г), или х = 47 (mod 2-5-7).
Отметим, что 47 = 1 + 3 • B) + 4 • B • 5), где коэффициенты 3 и 4
являются значениями q.
Перед тем как описать греко-китайский алгоритм, основанный
на теореме 2.3.14, мы приведем две близкие к ней теоремы.
Теорема 2.3.25. Пусть т = р\1рУ "''Р**• Тогда функция, которая
каждому х 6 Zm ставит в соответствие строку (xj, X2, ..., х*), где
х = х,- (mod pi'), i = 1, 2, ..., к, является кольцевым изоморфизмом
(т.е. взаимно однозначным гомоморфизмом на) кольца Zm и кольца
строк (xi, х2, •••, Хк), где х,- € 2р«< для * = 1, 2, ..., к. Более
того, если обозначить через • любую из операций + или -, имеем
(яь х2, ..., xt).(j/b j/2, ..., ук) = (x1»vi, х2»У2, •••, *к »Ук), где
знак. «•» в правой части равенства обозначает соответствующую
операцию в 2_ч, i = 1, 2,'.".., Ъ.
Доказательство. Доказательство вытекает непосредственно из
теоремы 2.3.24 и оставляется читателю в качестве упражнения. ?
Разложение, указанное в теореме 2.3.25, записывается как 7Lm 5:
Xi<i<*Zj>e>- Это разложение колец индуцирует разложение групп
их обратимых элементов Um ^ Xi$i^kUp4.
Одним из применений теоремы 2.3.25 (и греко-китайской теоре-
теоремы об остатках в общем виде), которое будет подробно рассмотре-
рассмотрено в разд. 2.4, является греко-китайское представление числа х. А
именно произвольное целое положительное число х, 0 < х < М, где
М = mim2 • • • т/с и (гщ, т,) = 1 для i ф j, однозначно представимо
своими наименьшими неотрицательными остатками по модулю т,-,
причем сложение и умножение выполняется покомпонентно.
Пример. Для mi = 3 и т2 = 5 имеем 6 = @,1) и 7 = A,2);
сумма этих чисел равна [0 + 1 (mod 3), 1 + 2 (mod 5)] = A,3), по-
последняя пара представляет число 13. Что можно сказать об их
произведении?
Заметим, что по паре A,3) можно найти соответствующее целое
число с помощью либо греко-китайского алгоритма, который
будет описан ниже, либо специальных таблиц.
Следующая теорема является обобщением теоремы Ферма.
Будем называть натуральное число свободным от квадратов,
96
Целые числа
если оно является произведением различных простых чисел, т.е.
не делится ни на какой квадрат > 1; например, числа 1, 2, 3, 5,
6, ... свободны от квадратов.
Теорема 2.3.26. Натуральное число т свободно от квадратов
тогда и только тогда, когда существует q > 1 (которое будет опре-
определено ниже), такое, что для любого целого числа 6 выполняется
сравнение Ь1 — Ь (mod m). А именно, если го = piP2---P* Для
различных простых чисел р,- и q = A[pi - 1, р2 — 1,... i Pk — 1] +1 ДЛЯ
произвольного натурального А, то 6' = 6 (mod го) для любых 6.
Доказательство. Предположим, что го свободно от квадратов,
т.е. m = Р1Р2 ¦¦ рк Для различных простых чисел. Тогда из
утверждения о единственности в греко-китайской теореме об
остатках мы получаем, что для произвольного 6 ? Z и любого
q > 1 сравнение bq = Ь (mod т) выполняется тогда и только тогда,
когда bq = Ь (mod р,) для всех i = 1, 2, ..., к. Пусть q = qm + 1, где
9m = [pi-l,P2 —1, ¦• -,Р*~1] либо любое другое общее кратное чисел
Pi — 1,Р2—1, • • • ,Рк — 1- Это означает, что qm — (р, —l)gi для любого i
и некоторого д,; поэтому ? = 6»™+1 = Ь^'~1^'+1 =Ь-Ь^'~1^'. Если
F,р.) = 1, то по теореме Ферма fr*" = I (mod р,), в противном
случае 6=0 (mod р,). В любом случае мы получаем ? = Ь
(mod pi) для всех i = 1,2, ..., к, и, следовательно, bq = Ь (mod m).
Предположим теперь, что го не свободно от квадратов, т.е.
т = р^р^3 •••Pi*) гДе ei > 1 Для некоторого j, 1 < 3 < к. Найдем
с 6
системы
(mod pj)}. Получим, что го не делит 6, поскольку р^3 не делит 6,
но m делит bq для любого q > 1. Таким образом, сравнение bq = Ь
(mod m) не выполняется ни для какого q > 1. ?
р^р^ Pi) i
помощью греко-китайской теоремы об остатках решение х = 6
истемы сравнений {х = 0 (mod p,), i = 1, 2, ..., к, i ф j, х = Pj1
В заключение мы представим греко-китайский алгоритм реше-
решения системы уравнений над кольцами вычетов для случая, когда
модули попарно взаимно просты (в этом случае решение сущест-
существует по теореме 2.3.24). Более общий алгоритм в случае, когда
модули не взаимно просты, также не очень сложен, но в прило-
приложениях модули всегда будут различными нечетными простыми
числами.
Рассмотрим сначала систему из двух уравнений:
х = а (mod mi),
х = b (mod ГП2),
(mum2) =
Разложение целых чисел на множители
97
Эта система решается методом, описанным в доказательстве тео-
теоремы 2.3.24. Мы также будем использовать процедуру MODINV,
которая вычисляет (наименьший неотрицательный) обратный эле-
элемент по модулю Ш2 к элементу пц (см. упр. 2 по программиро-
программированию к этому разделу). Оформив описанный метод в виде
алгоритма, получим
GCRA2. Греко-китайский алгоритм для двух сравнений (Greek-
Chinese Remainder Algorithm-2 congruences)
Вход: a, mi, b, mi, такие, что х = a (mod mi) и x = b (mod mj),
где mi, ГО2 — целые числа одинарной точности, такие, что
(тьгог) = 1 и mi, го2 оба > 1.
Выход: х — единственное наименьшее неотрицательное решение
по модулю mirri2 системы сравнений.
1. [Если а > 0, то ничто не меняется] х := MOD(a,mi).
2. [Вычисление m] m := MODINV(roi,m2).
3. [Вычисление q] q := MODfmf1 • (b - x), m2].
4. [Выход] Вернуть х := x + m^q (поскольку 0 ^ q < m-i, то
возвращаемое значение х удовлетворяет неравенствам 0 ^
х <
Анализ времени работы алгоритма GCRA2. Заметим, что
шаги 1 и 2 выполняются за время ~ 1, поскольку мы работаем
с короткими целыми числами (используя расширенный алгоритм
Евклида для вычисления мультипликативного обратного). На
шаге 3 мы выполняем умножение и деление, на шаге 4 — только
одно умножение. Время выполнения каждой из этих операций до-
минируется временем вычисления произведения ггнтг (проверьте
это), и, следовательно,
Рассмотрим теперь общий случай, когда нам нужно решить
следующую систему уравнений по попарно взаимно простым
модулям:
х = а\ (mod mi),
х = а2 (mod ro2),
х = а* (mod rojt), (mi,m2)=l для t ф j.
7—274
S8
Целые числа
Идея состоит в том, чтобы использовать GCRA2 для последова-
последовательного решения пар уравнений. На первом шаге мы получаем
решение х0 первых двух уравнений, где х0 — наименьшее неот-
неотрицательное решение по модулю гщт^- На следующем шаге мы
получаем решение по модулю п^тгтз пары уравнений
х = х0 (mod ГП1ГП2), х = а3 (mod тз),
и так далее. Получаем следующий алгоритм.
GCRAk. Греко-китайский алгоритм для ib сравнений (Greek-
Chinese Remainder Algorithm-k conqruences)
Вход: Пары a,-, m,-, такие, что х = а< (mod пц), i = 1, 2, ...,
Jfc; каждое m, является коротким целым числом, т, > 1 и
(mi, rrij) — 1 для f ф j.
Выход: х — единственное наименьшее неотрицательное решение
по модулю ГП1ГП2 • • ¦ тпк системы из Jfc уравнений.
1. [Инициализация] т := 1; х := MOD(ai,mi).
2. [Применение в цикле GCRA2] Для f от 1 до к — 1 выполнять
\т := го-го,-; m := MODINV(m,m,+i); q := MODfm-^a.+i-
z),m,-+i]; x:=x + mq}.
3. [Вычисление q] q := MODfm^1 • F — x), mi].
4. [Выход] Вернуть х.
Анализ времени работы алгоритма GCRAk. Ясно, что время
работы алгоритма GCRAk доминируется временем выполнения
второго шага, на котором в цикле выполняется GCRA2. Если
М = mi---mt, то 1-е выполнение тела цикла требует времени
~ L[m\ • т2 • • •mi)L(mi+i). Поэтому в целом цикл, состоящий
из (Jfc - 1) шага, выполняется за время ^ ?(^Ю{522<»<* ^(m>)} ~
L(M) ¦ ?(П2<«<* то«) (напомним, что функция L ведет себя как
логарифм) ^ L2(M), и мы имеем
i,i= 1,2,... ,k) =
m2
Пример, иллюстрирующий работу этого алгоритма, был при-
приведен непосредственно после теоремы 2.3.24. Читатель может поп-
попробовать применить этот алгоритм для системы х = — 2 (mod 15),
а; = 6 (mod 8) и z = 11 (mod 7), единственным решением которой
по модулю 840 является х — 718; алгоритм формирует ответ в виде
Разложение целых чисел на множители 99
718 = 13 + 7 • 15 + 5 • A5 • 8). В общем случае, если мы имеем Jfc
уравнений, то ответ представляется в виде
х = qi+q2 ¦ (mi) + q3
Ч qt • (mi ¦ m2 • • • mjt_i),
где каждое qi неотрицательно и меньше соответствующего модуля
т,-, а qi =
Мы закончим этот раздел описанием применения греко-китай-
греко-китайского алгоритма к задаче о безопасном хранении ключа (Asmuth,
С, Bloom, J.: A modular approach to key safeguarding. Mathematics
Department, Texas A and M University, College Station, TX, 77844).
Пусть К — ключ, который нужно сохранить. При этом требу-
требуется, чтобы любые L человек из тех к (к > L), которые получили
«информацию» о ключе, могли бы вместе восстановить ключ,
но никакая группа из L — 1 человек или менее не могла этого
сделать. Информация, передаваемая различным людям, будет
описана ниже.
Для решения этой задачи выберем множество целых чисел {р,
d\, d2, ..., d*}, такое, что
a. р> К.
b. di<d2<-<dk.
c. gcd(p, di) = 1 для всех i = 1,2,... , к.
d. gcd(d,, dj) = 1 для i ф j.
e. di ¦ d2 ¦ ¦ • dL > р ¦ dk-L+2 • P • ^i-1,+3 ¦ • • <4-
Пункт е означает, что произведение L наименьших чисел rf,-
больше, чем произведение ри 1-1 наибольших чисел d,-. Пусть
D = di -d2 •••</?; тогда D/p больше, чем произведение любых
L — 1 чисел di. Выберем теперь случайное число г в интервале
[0, (D/p) — 1] и вычислим К' = К + г р, чтобы К попало в интервал
[0, D — 1]. Между разными людьми распределяются числа
Kt = K' (mod di), i=l,2,... ,fc.
Пример. К = 5, L = 2, Jb = 3, p = 7, dx = 11, rf2 = 13, d3 = 17. Далее,
D = di ¦ d2 = 11 • 13 = 143 > 119 = 7 • 17 = p • d3, как и требуется.
Выберем случайное число г в интервале [0,A43/7) - 1] = [0,19],
например 2. Имеем
100 Целые числа
Распределяемые числа равны
Кг = 19 (mod 11) = 8,
К2 - 19 (mod 13) = 6,
К3 = 19 (mod 17) = 2.
По любым двум из этих чисел можно восстановить К. Например,
для К\ и Къ имеем
К' = 8 (mod 11), К' = 2 (mod 17).
Применив греко-китайский алгоритм, получим К' = 19, откуда
К = К1 -гр = Ъ.
2.3.3. Тесты простоты
В этом разделе рассматривается следующая задача: для за-
заданного положительного целого числа т определить, является ли
оно простым. При этом мы не интересуемся делителями числа т.
Наиболее очевиден следующий способ решения.
Первый детерминистический тест. Разделим число m последо-
последовательно на числа 2, 3, ..., [\/го]. Если при каком-нибудь делении
мы получим нулевой остаток, то число го составное, а делитель
и частное являются его сомножителями; в противном случае m
простое. (Почему нужно проверять только до
Каково время работы этого теста? Очевидно, необходимо вы-
выполнить л/т делений, поэтому время проверки простоты числа т
равно О(у/т). Эта оценка, однако, не является полиномиальной,
поскольку, если учитывать длину записи т, она принимает вид
ОB^(т)'2); таким образом, это экспоненциальный тест, т.е. очень
медленный. Простая на первый взгляд задача оказывается дос-
достаточно сложной. Конечно, первый тест (известный также под
названием «метод пробных делений») делает гораздо больше, чем
требуется: он не только определяет, является ли число простым,
но и находит сомножители составного числа.
Значительный прогресс был достигнут в последние годы. Су-
Существуют две группы алгоритмов проверки простоты: детерми-
детерминистические и вероятностные. Литература по этому предмету
весьма обширна (Adleman et al., 1983; Cohen et al., 1982; Dixon, 1984;
Lucas, 1961; Pomerance, 1981; Pratt, 1975; Rabin, 1980; Solovay et
Разложение целых чисел на множители
101
al., 1977; Williams, 1978), и пока не сделано попыток дать полный
обзор всех алгоритмов. Вместо этого мы приведем несколько
тестов простоты, представляющих обе эти группы; практически
все тесты так или иначе связаны с малой теоремой Ферма.
Продолжим рассмотрение детерминистических тестов.
Второй детерминистический тест. Число т просто тогда и
только тогда, когда т | {(го — 1)! + 1}.
Тест основан на теореме 2.3.16 (Wilson). Как уже отмечалось,
факториал (го — 1)! уничтожает всякий интерес к этому тесту;
крайне медленный метод решета оказывается очень быстрым по
сравнению с проверкой делимости (т - 1)! + 1 для больших т.
Если го имеет 100 цифр, то (го — 1)! состоит примерно из 100102
цифр — не путайте с числом 100102.
Для третьего теста, который будет приведен ниже, нам по-
понадобится следующее утверждение: если го — простое число,
то существует натуральное число b < го, порядок которого по
модулю m равен го - 1, т.е. Ьт~1 = 1 (mod m) и никакая меньшая
степень числа b не равна 1 (mod го). Следующая теорема является
обратным утверждением.
Теорема 2.3.27. Пусть m — целое число ^ 2. Если существует
6 < го, такое, что порядок 6 по модулю го равен в точности го - 1,
то го — простое число.
Доказательство. Если го не просто, то ф(т) < m — 1. Лля числа b
из условия теоремы либо (Ь, го) = 1, и в этом случае его порядок
должен делить ^(го) < го — 1, либо F, го) > 1, и тогда никакая
степень 6 не сравнима с 1 (mod ro). D
Таким образом, получаем следующий тест простоты.
Третий детерминистический тест. Число т просто тогда и
только тогда, когда существует элемент Ь, порядок которого по
модулю го в точности равен го — 1. Эквивалентная формулировка:
го просто тогда и только тогда, когда существует 6, F, го) = 1,
такое, что б = 1 (mod го) и b(m~lWp не равно 1 (mod го) для
каждого простого делителя р числа го - 1.
Этот тест известен под названием «тест Лукаса» A961). Лля
того чтобы определить, является ли го простым, нужно дейст-
действовать следующим образом. Если Ьт~1 не равно 1 (mod го) для
некоторого 6 < го, то го не является простым (негативный тест,
102 Целые числа
вытекающий из теоремы Ферма). С другой стороны, если для
некоторого 6 порядок 6 равен го — 1, то m просто (позитивный
тест, вытекающий из теоремы 2.3.27).
К сожалению, очень сложно проверить, равен ли порядок Ь по
модулю т числу т — 1, потому что нужно для каждого простого
делителя р числа го — 1 показать, что Ь(т~1Ур не равно 1 (mod го).
Приведем два небольших примера. Пусть сначала m = 899.
После проверки того, что 899 не делится на 2, 3, 5, 7 и 11,
можно предположить, что 899 — простое число. Лля того чтобы
наверняка убедиться в этом, применим тест; взяв Ь = 2, получим,
что 2838 = 683 (mod 899). Поэтому 899 не является простым
числом, и, в самом деле, оно равно 29 • 31. Мы воспользовались
только негативным тестом. Рассмотрим теперь число 341, для
которого мы знаем, что 2340 = 1 (mod 341). Для применения
позитивного теста мы должны вычислить порядок числа 2 по
модулю 341, а это требует разложения на множители числа 340.
Можно убедиться, что 340 = 22 • 5 • 17, и 2340/17 = 1 (mod 341).
Позитивный тест не проходит и 341 — составное число.
Бели мы вместо 341 возьмем некоторое 40-значное число го,
то для того чтобы использовать позитивный тест, нам придется
разложить на множители число т— 1, и с достаточно большой
вероятностью после выделения маленьких простых делителей
останется число из 35 или более цифр, которое необходимо будет
разложить на множители — задача почти такая же сложная, как
и разложение самого т. Поэтому тест Лукаса применим только в
тех случаях, когда т — 1 разлагается на множители просто.
Четвертый детерминистический тест. Этот тест был вначале
разработан в 1980 г. Адлеманом, Померанцом и Рюмли (Adleman
et al., 1983) и впоследствии улучшен Коэном и Ленстрой (Cohen,
Lenstra, 1982). Его детали требуют знакомства с техникой ал-
алгебраической теории чисел, но по существу он близок к тесту
Ферма.
Показано, что время работы для этого теста равно
Несмотря на то что мы имеем дело с экспоненциальным тестом, вы-
выражение L{L[L(m)]} в показателе стремится к бесконечности очень
медленно; например, первое число, для которого L{L[L(m)]} = 2,
равно Ю999999999. Поэтому все числа, меньшие ю999999999, могут
Разложение целых чисел на множители
103
быть проверены на простоту за полиномиальное время. Таким
образом, время работы этого теста очень близко к полиномиально-
полиномиальному, и это лучшее, что известно на сегодняшний день. Неизвестно,
существует ли полиномиальный детерминистический алгоритм
проверки простоты.
Все приведенные выше тесты были детерминистическими; это
означает, что для заданного числа го мы всегда получаем ответ,
является ли оно простым или составным. Бели заменить слово
«всегда» на «с некоторой вероятностью», то оказывается возмож-
возможным построить вероятностные тесты простоты, которые работают
за полиномиальное время; такие тесты называют также тестами
псевдопростоты. Ниже мы рассмотрим несколько таких тестов.
Более точно, под тестом псевдопростоты мы будем понимать
тест, применяемый к паре целых чисел F, го), обладающий следу-
следующими свойствами:
1. Тест может выдавать следующие ответы: «го — составное
число» или «не удалось определить».
2. Если тест выдал ответ «т — составное число», то го —
составное число.
3. Время выполнения теста полиномиально зависит от L(m).
Для хорошего теста псевдопростоты существует фиксированное
положительное вещественное число Jb, такое, что для любого
составного целого числа т тест выдает ответ «составное» по
крайней мере для km выборов различных оснований 6, где 1 ^
Ь ^ го. Кроме того, мы будем говорить, что целое число го
является простым с большой вероятностью, если мы подвергли
его хорошему тесту псевдопростоты и получили ответ «не удалось
определить» для всех этих оснований 6.
Первый вероятностный тест. Для заданного го выберем слу-
случайным образом 6, 1 < Ь < го. Если 6 | го, то тест выдает ответ
«го — составное число», в противном случае — «не удалось
определить».
Вероятность того, что выдается ответ «т — составное число»,
равна вероятности того, что Ь | го. Если d(m) — число делителей
го и 6 случайно выбрано в пределах 1 < 6 < т, то вероятность
этого равна р = [rf(ro) — 2]/ro. Ясно, что это очень слабый тест.
Второй вероятностный тест. Для заданного т выберем слу-
случайным образом Ь, 1 < Ь < го. Если (Ь, го) ф 1, то тест выдает
104 Целые числа
ответ «го — составное число», в противном случае — «не удалось
определить».
Если го составное, то количество чисел Ъ < го, для которых тест
выдает ответ «т — составное число», равно т — ф(т). Это число
велико, если го имеет маленькие простые делители. Если, однако,
т = pq, где р, q — большие простые числа, то доля хороших
оснований очень мала, и потому этот тест не лучше предыдущего.
Третий вероятностный тест. Если для заданных чисел 6,
т степень б не равна 1 (mod m), то тест выдает ответ «го —
составное число», в противном случае — «не удалось определить».
Этот тест гораздо лучше двух предыдущих, но и он несовер-
несовершенен, поскольку для всех псевдопростых по основанию 6 чисел
он выдает ответ «не удалось определить». Как уже отмеча-
отмечалось, число 341 является псевдопростым по основанию 2. Из
следующей теоремы вытекает, что существует бесконечно много
псевдопростых по основанию 2 чисел.
Теорема 2.3.28. Если го — псевдопростое число по основанию
2, то то же самое верно для числа п = 2т — 1.
Доказательство. Пусть число го = ab, а > 1, 6 > 1, является
псевдопростым по основанию 2, т.е. 2т~х = 1 (mod го). Докажем,
что п = 2т — 1 также является псевдопростым по основанию 2,
используя тождество
2аЬ -1 = Bе - i)(i + 2° + ¦ • • + г^*-1)).
Более точно, для того чтобы доказать, что 2"" = 1 (mod го),
мы покажем, что п = 2т — 1 делит 2" — 1. Согласно этому
тождеству, достаточно доказать, что го | (п — 1). Поскольку го
пеевдопросто по основанию 2, то m | Bm-1 — 1); кроме того,
n-l = 2m-l-l = 2Bm - 1), откуда следует, что го | (п - 1). D
Как мы уже отмечали, кроме псевдопростых существуют состав-
составные числа, которые называются абсолютными псевдопросты-
псевдопростыми или кармайкловыми числами, определяемые условиями т |
(б7™-1 — 1) для всех 6, таких, что F, го) = 1.
Как может получиться, что Ьт~1 — 1 сравнимо с 1 по модулю
го для всех Ь, (Ь, го) = 1? Например, для числа го = 561 имеется
0E61) = 320 таких значений Ь. Ответ оказывается совсем простым.
Все, что требуется, — это три или более нечетных простых
Разложение целых чисел на множители
105
числа pi, такие, что (р,- — 1) | (то — 1) = (Пр< — 1) для каждого
простого числа р,-; проверьте это для 561 = 3-11-17. Докажем
достаточность. Зафиксируем некоторое 6, F, го) = 1. По теореме
Ферма 6я" = 1 (mod р,). Поскольку го — 1 делится на р,- —
1, то то же самое верно и для т — 1: сравнение Ьт~х = 1
(mod pi) справедливо для любого i. Отсюда и из утверждения о
единственности в греко-китайской теореме об остатках вытекает,
что сравнение 6m-1 = 1 справедливо по модулю произведения
чисел pj. (Действительно, запишем сравнения 6m-1 = I (mod pi)
в виде х = bm~l — 1 (mod р,). Они образуют систему, имеющую
единственное решение по модулю го; конечно, это единственное
решение есть х = 0, т.е. Ьт~х = 1 (mod го).)
Таким образом, эти числа псевдопросты по любому основанию
6, и для всех них третий вероятностный тест будет выдавать
ответ «не удалось определить». Наименьшее такое число — это
561 = 3 • 11 17; другие кармайкловы числа: 1105 = 5 • 13 • 17,
1729 = 7 • 13 • 19 и т.д. Следующий тест справляется с такими
числами.
Четвертый вероятностный тест. Это тест сильной псевдопрос-
псевдопростоты. Пусть заданы 6 и го. Пусть го — 1 = <2*, где t — нечетное
число, и рассмотрим числа хг = б'2' (mod го) для 0 ^ г < s (xr
— наименьший по абсолютной величине остаток по модулю го).
Если либо хо = 1, либо найдется индекс i, 0 ^ t < s, такой, что
Xi = —1, то го называется сильно псевдопростым по основанию 6 и
тест выдает ответ «не удалось определить», в противном случае
ответ — «го — составное число».
Этот тест успешно применяется и к псевдопростым числам,
таким, как го = 561. Например, 560 = 35 • 24; для г = 4, 3
имеем 235 2< = 2560 = 1 (mod 561) и 235 2S = 2280 = 1 (mod 561)
соответственно, тогда как для г = 2 получаем 235 2' = 2140 = 67
(mod 561), и, следовательно, 561 — составное число. Итак,
справедлива следующая теорема.
Теорема 2.3.29. Если тест сильной псевдопростоты выдает ответ
«т — составное число», то го — составное число.
Доказательство. Докажем это от противного. Предположим,
что го — нечетное простое число. Покажем по индукции, что
б'2 = 1 (mod го) для любого г, 0 ^ г ^ s, что будет противоречить
условию теоремы. Очевидно, вто справедливо для г = s по
теореме Ферма. Предполагая снрапедливость утверждения для
106
Целые числа
теть, что оно справедливо и для » — 1, потому
F<2'~ J = Ь*2' — 1 (mod m) влечет за собой, что
I, нетрудно видеть,
что равенство
возводимое в квадрат число рано ±1. Но —1 не подходит по
условию (иначе бы тест выдал ответ «не удалось определить»). ?
Анализ времени работы алгоритма четвертого вероятностного
теста. Число 6' вычисляется за время O[L3(m)], поскольку в
алгоритме быстрого возведения в степень выполняется O[L{t)\
умножений, t ^ т, и, так как длины умножаемых по модулю т
чисел ~ Ь(го), каждое умножение выполняется за время O[L2(m)].
После этого при вычислении последовательности б'2', i = 1,
2,..., производится г возведений в квадрат, где также г ^ ?(го)
и каждое возведение в квадрат выполняется за время O[L2(m)].
Таким образом, тест выполняется за время O[L3(m)].
Доказано, что четвертый вероятностный тест обладает следу-
следующим свойством: если m — составное число, то вероятность того,
что тест выдаст ответ «т — составное число», не меньше 1/2.
Основная идея доказательства состоит в том, что собственная
подгруппа конечной группы не мажет содержать больше половины
ее элементов; детали см. в (Wilf, 1986). Более того, Рабином
было показано, что не существует нечетного составного числа т,
которое является сильно псевдопростым по более чем 1/4 части
всех оснований, меньших т. На практике для заданного числа го
мы применяем тест 100 раз, используя 100 случайно и независимо
выбранных оснований 6,-, 0 ^ fc,- ^ т. Если т составное, то тест
определит это с вероятностью ^
выполняется за полиномиальное время.
>-100
и каждая проверка
2.3.4. Разложение на множители больших целых чисел
С задачей о нахождении делителей больших простых чисел
дело обстоит гораздо хуже, чем с проверкой простоты. Мы не
знаем даже, существует ли вероятностный алгоритм, который
выдает за полиномиальное время делитель большого составного
числа с вероятность > 1/2. Литература по этому предмету
также весьма обширна (Dixon, 1981, 1984; Guy, 1976; Knuth, 1969;
Lehman, 1974; Morrison et al., 1975; Williams, 1982 и 1984; Wunderlich,
1979); мы представим следующий метод разложения на множители
(упрощенный вариант) для чисел общего вида, который является
наиболее сильным из известных.
Метод основывается на идее Лежандра A798): если и2 = v2
(mod m), 0 < и, v < m, и ф ±v (mod го), то го делит (u-v)(u + v), но
Разложение целых чисел на множители
107
не делит ни (и—v), ни (u+v); поэтому (u — v,m), наибольший общий
делитель чисел и - v и т, является нетривиальным делителем го
и может быть легко вычислен с помощью алгоритма Евклида.
Поиск таких «и» происходит в два этапа, как описано ниже.
Пусть мы хотим разложить на множители число го. Пусть п =
[у/т\ — максимальное число, не превосходящее у/т, и вычислим
числа ак = (п + кJ - т для небольших к (числа к могут быть
и отрицательными). [Вместо чисел а* Моррисон и Бриллхарт
(Morrison, Brillhart, 1975) использовали величины Qk: если у/ст =
(*о; bi, 62, ..., Ь*-1, ?*) — цепная дробь, представляющая число
у/ст, с — небольшой множитель, то Qk определяются формулой
Пусть {},-, i = 1,2,... ,j} —множество небольших простых чисел,
которые могут делить выражения вида х2 — т (т.е. m является
квадратом по модулю },-). Такое множество обычно называют
мультипликативной базой В. Запомним все числа а*, которые
могут быть разложены по мультипликативной базе, т.е. записаны
в виде
П «Г'-
Такие at называются 5-числами. С каждым В-числом а* связы-
связывается вектор показателей
е* =(wko,wkl,... ,wkj), wki=wki (mod 2), 1 = 0,1,2,... ,;'.
Если мы найдем достаточно много В-чисел, чтобы множество
соответствующих векторов показателей было линейно зависимо
по модулю 2 (любое множество из j + 2 В-чисел обладает этим
свойством), то можно будет представить нулевой вектор в виде
суммы векторов показателей некоторого множества S, скажем,
i2kai.es е* = @, 0, ..., 0) (mod 2). Определим теперь целые числа
и = JJ(n +fc) (mod ro), t; = Д q'* (mod го).
Из сказанного выше следует, что u2 = v2 (mod го), и (и — v,m)
может быть нетривиальным делителем го.
108 Целые числа
Пример. Разложим на множители 1729, третье кармайклово число.
В этом случае т = 1729, п = 41; вычислим числа а* = (п + кJ — т
для небольших к. Имеем аг = 35, а2 = 120, а3 = 207, а4 = 296,
а5 = 387, ав = 480, а7 = 575, а8 = 672, а9 = 771 и т.д. Зафиксируем
множество небольших простых чисел {2,3,5,7}; мы видим, что
только 35, 120, 480 и 672 являются В-числами, а именно 35 =
00011 03
120= (-l
-7°, 480 = (-l
() ()()
и 672 = (-1)° • 25 • З1 • 5° • 71. Кроме 480, все числа включаются в
множество S, поскольку сумма векторов показателей всех чисел,
кроме 480, равна @, 0, 0, 0, 0). Лалее вычисляются показатели
е'о = 0, е\ = 8/2 = 4, е'2 = 2/2 = 1, е'3 = 2/2 = 1, е'л = 2/2 = 1
и числа и = D1 + 1) • D1 + 2) • D1 + 8) = 315 (mod 1729) (где
D1 + IJ = ах = 35, D1 + 2J = а2 = 120, D1 + 8J = а8 = 672
(mod 1729)) и v = (-1)° ¦ 24 • З1 • 51 • 71 = 1680. Квадраты чисел и и
v совпадают по модулю 1729: и2 = 99225 = 672, v2 = 2822400 = 672
(mod 1729). Имеем C15- 1680,1729) = (-1365,1729) = 91, и 91
является делителем числа 1729.
Диксоном (Dixon, 1981) доказано, что число го разлагается этим
методом на множители за время
\Л1п "»)(!" 1" "»)\
где а — некоторая константа, оA) —> 0 при т—юо. Эта величина
растет медленнее, чем экспонента, но быстрее, чем любая степень
числа L(m).
Отметим, что числа вида Fm = 22>* + 1 и Мт = 2т — 1, которые
называются соответственно числами Ферма и Мерсенна, оказали
глубокое влияние на развитие техники разложения на множителм и
проверки простоты. Еще в 1640 г. Ферма предположил, что любое
число Fm, го ^ 1, является простым. Однако это предположение
было опровергнуто в 1729 г. Эйлером, который показал, что число
i*5 делится на 641.
2.4
Точные вычисления, использующие модулярную арифметику
Основываясь на результатах теории чисел, представленных в
предыдущих разделах, мы собираемся обсудить интересный спо-
способ выполнения точных арифметических действий с (большими)
Точные вычисления, использующие модулярную арифметику 109
целыми числами. Основная идея состоит в том, чтобы исполь-
использовать один или несколько модулей (теорема 2.3.25), не имеющих
общих делителей, и вместо действий с самими числами выполнять
действия с их остатками (Gregory et al., 1984; Knuth, 1969; Scott,
1985).
Рассмотрим сначала случай одного модуля. Пусть нам дано
выражение e(i'i, «2, •••> *'h) над Z, зависящее от целочисленных
аргументов »i, «2, ..., «л, и нужно вычислить (оценить) его. Триви-
Тривиальный подход состоит в непосредственном вычислении выражения
над Z; при этом, однако, промежуточные результаты могут не
быть целыми числами (могут иметь бесконечные представления,
как, например, 1/3 = 0.333...), и отбрасывание цифр или округ-
округление может привести к неточности окончательного результата.
Для того чтобы избежать этого, нужно воспользоваться обход-
обходным путем при вычислении е. Этот подход проиллюстрирован на
рис. 2.4.1.
Выражение (е)
Вычислено I
над TL -I
Результат (res)
Эквивалентное выражение (em)
I Вычислено
1над Zm
Эквивалентный результат (resm)
Рис. 2.4.1.
Окольный путь вычисления выражения (е), использу-
использующий один модуль.
Вместо вычисления е над Z мы сначала по выражению e{i\,
*'г> •••> *h) наД ^ получаем эквивалентное выражение e(i'lt г'2,
..., i'h) над Ът Для некоторого го, где ij = ij (mod го), или, что
эквивалентно, i'j = rm(ij), j = 1, 2, ..., ft. Затем мы вычисляем
выражение ет над Zm и получаем эквивалентный результат resm,
где resm = res (mod ro) = rm(res); в завершение мы отображаем
resm обратно в множество целых чисел.
Следует отметить, что отношение эквивалентности res = resm
(mod го) не определяет однозначно окончательный результат res.
[Аналогия с задачей «чему равно значение х = 7 (mod 13)?».
Очевидно, что значение х не определено однозначно, оно может
быть равным 7, 20 и т.д. Если, однако, мы откуда-либо знаем,
110 Целые числа
что х < 13, то х может быть равным только 7.] Для того чтобы
однозначно определить res, нужно иметь априорную оценку его
величины; эта оценка используется в качестве модуля т, и все
операции выполняются в кольце Zm. Если мы имеем оценку на
величину res, то мы ищем наименьшее неотрицательное решение
уравнения res = resm (mod m); если же мы имеем оценку на |res|,
то ищем наименьшее по абсолютной величине решение.
Сложности с изложенным методом обхода возникают, когда
выполняются операции деления. Как уже отмечалось, в случае
когда р — простое число, кольцо (Zp, + , •) является конечным полем
[оно обозначается также GF(p)], в котором мы можем выполнять
все арифметические операции. Поскольку обратный элемент к
любому ненулевому элементу всегда существует, мы определяем
деление по модулю р следующим образом:
- (mod р) = а • [b
(mod p)] (mod p),
где, как отмечалось выше, b~l (mod p) — мультипликативный
обратный элемент к элементу 6 по модулю р, который мы будем
также обозначать просто через б. Частное двух целых чисел в
GF(p) также является целым числом, даже если b не делит а в Z.
Пример.
3/4 (modll) = 3-4-1 (mod И)
= 3-3 (mod 11)
= 9.
Число, полученное в этом примере (рассматриваемое как про-
промежуточный результат), имеет смысл, поскольку
C/4) • 4 (mod 11) = [3/4 (mod 11)] • 4 (mod 11)
= 9-4 (mod 11) = 3.
Предположим теперь, что модуль р ограничивает окончательный
результат res. Бели res не является целым числом, принадлежа-
принадлежащим GF(p), то resp ф res, и для того чтобы получить последнее
число, требуется дополнительная информация; эта априорная ин-
информация различна для разных случаев и проиллюстрирована
ниже двумя примерами. Если, однако, res лежит в GF(p), то
reSp = res. [Напомним еще раз, что res — это результат, получен-
полученный при вычислении выражения над кольцом целых чисел, тогда
Точные вычисления, использующие модулярную арифметику 111
как resp получается при вычислении в GF(p).] Таким образом,
арифметика одного модуля может быть использована для выпол-
выполнения последовательности точных арифметических операций над
целыми числами в GF(p), даже если эта последовательность
включает операции деления; трудности могут возникнуть лишь
при интерпретации результатов.
Когда мы хотим вычислить выражение, окончательное значение
которого может быть положительным или отрицательным, нам
нужно уметь работать с отрицательными числами. Это можно
делать, используя симметричное множество Zp = {—(р — 1)/2, ...,
-2, —1, 0, 1, 2, ..., (р — 1)/2}, которое, как нетрудно видеть,
изоморфно множеству {0, 1, ..., р — 1}; отображение между этими
двумя множествами показано на рис. 2.4.2.
Неотрицательное
множество
0123456789 10
Симметричное -5-4-3-2-10 1 2 3 4 5
множество
Рис. 2.4.2.
Отображение между симметричным и неотрицатель-
неотрицательным множествами для р = 11.
Например, х — 17 (mod 11) имеет наименьшее неотрицательное
решение х — 6 и наименьшее по абсолютной величине решение
Конечно, точные арифметические операции можно выполнять
в любом из этих двух множеств, но проще отобразить наши
данные (особенно если они содержат отрицательные числа) в
неотрицательное множество, выполнить в нем все операции и
затем отобразить обратно в симметричное множество.
Пример. Выполним точные арифметические операции в GFA1),
для того чтобы вычислить х — 1/3 — 4/3; в этом примере ап-
априорная информация состоит в том, что мы ищем результат в
112 Целые числа
симметричном множестве.
х (mod И) = A/з + (-4)/3) (mod 11)
= A/3 + 7/3) (mod 11) (в неотрицательном
множестве)
= A • З + 7 • З) (mod 11) (З-1 является муль-
мультипликативным
обратным к 3 (mod 11)
= A-4 + 7-4) (mod 11)
= 32 (mod 11)
Отображая результат обратно в симметричное множество, мы
получаем правильный ответ х = — 1.
В приведенном примере resp = res, потому что мы знаем с самого
начала, что res лежит в симметричном множестве для GF(p). В
следующем примере это не так.
Пример. Вычислим х = 1/2 — 2/3, пользуясь точно такой же
априорной информацией, как и в предыдущем примере. Проводя
вычисления, как и в предыдущем примере, получим
х (mod 11) = A/2 + (-2)/3) (mod 11)
= A/2 + 9/3) (mod 11)
= A • 2 + 9 • З) (mod 11)
= A-6 + 9-4) (mod 11)
= 42 (mod 11)
= 9.
Если сейчас мы отобразим результат обратно в симметричное
множество, то получим неправильный ответ х = -2. Поэтому нам
требуется дополнительная информация: достаточно знать, что мы
ищем рациональное число х (mod 11) = (а/6) (mod 11), где 6 = 6
— наименьшее общее кратное знаменателей двух дробей. Тогда
а = [х (mod 11)] • 6 (mod 11) = 9 • 6 (mod 11) = 10 (mod 11) = -1
(отображение на симметричное множество). Следовательно, х =
(—1)/6, что является правильным ответом.
Перейдем теперь к арифметике нескольких модулей. Использо-
Использование арифметики нескольких модулей является «естественным»
решением проблемы, с которой мы сталкиваемся в арифметике
Точные вычисления, использующие модулярную арифметику 113
одного модуля: как мы видели, модуль т должен быть достаточ-
достаточно большим, чтобы результат res определялся однозначно по его
остатку resm (го > res). Однако, когда нам приходится выбирать
значение го большим, чем размер компьютерного слова, схема с
одним модулем теряет всю свою привлекательность. Поэтому мы
используем несколько модулей и применяем окольный путь для
вычисления выражения; эта схема иллюстрируется на рис. 2.4.3.
итъ
Выражение (е)
Вычислено I
Результат (res)
Эквивалентное выражение (ет|Ь)
I Вычислено
Эквивалентный результат (resmic)
Рис. 2.4.3.
Окольный путь вычисления выражения (е), использу-
использующий п модулей (Дг = 1,2,..., п).
Для заданного выражения e(i\, i2, ..., «'/,), зависящего от це-
целочисленных аргументов t'x, t2, ..., i/,, мы сначала вычисляем
emk(«U, *2Ь ••-, Чк), где ijk = rmk(ij), j - 1, 2, ..., ft и k = 1, 2,
..., n, для коротких модулей m*. При условии, что выражения
em|i определены над Zmk, мы вычисляем их над Жтк и получаем
эквивалентные результаты resmt, к = 1, 2, ..., п; в завершение,
пользуясь греко-китайским алгоритмом либо таблицами, мы по-
получаем окончательный результат res. Здесь снова модули тп*
должны быть выбраны таким образом, чтобы mj • Гог • • • т„ > res.
Если дана оценка на res, то мы ищем наименьшее неотрицательное
решение греко-китайской задачи об остатках, если же оценивается
|res|, то ищется наименьшее по абсолютной величине решение.
Рассмотрим более подробно арифметику нескольких модулей.
Знакомые нам всем системы счисления являются линейными,
позиционными и весовыми. Это означает, что всем позициям
соответствуют веса, зависящие от одного основания. Например,
в десятичной системе счисления используются веса 10°, -101, 102,
103 и т.д. Вместо этого многомодульная система счисления
использует взаимно простые позиционные основания, например
3, 5, 7. В табл. 2.4.1 перечислены числа 0-29 и их остатки по
основаниям 3, 5 и 7.
S-274
114 Целые числа
Таблица 2.4.1
Остатки чисел 0-29 по основаниям 3, 5, 7
N
0
1
2
3
4
5
6
7
8
9
3
0
1
2
0
1
2
0
1
2
0
остатки
5
0
1
2
3
4
0
1
2
3
4
7
0
1
2
3
4
5
6
0
1
2
N
10
11
12
13
14
15
16
17
18
19
3
1
2
0
1
2
0
1
2
0
1
остатки
5
0
1
2
3
4
0
1
2
3
4
7
3
4
5
6
0
1
2
3
4
5
ЛГ
20
21
22
23
24
25
26
27
28
29
3
2
0
1
2
0
1
2
0
1
2
остатки
5
0
1
2
3
4
0
1
2
3
4
7
6
0
1
2
3
4
5
6
0
1
Остатки в табл. 2.4.1 однозначно определяют число; всего
имеется 3 • 5 • 7 = 105 различных чисел, представимых в этой сис-
системе. Например, вектор [2,1,3] однозначно определяет десятичное
число 8 и называется стандартным набором остатков числа 8
относительно данного вектора оснований. В нашем случае вектор
/? = [3,5,7] является вектором оснований. Мы будем пользоваться
обозначением
8 (mod /?) = [8 (mod 3), 8 (mod 5), 8 (mod 7)] = [2,3,1].
Как и в случае одного модуля, мы также можем определить наи-
наименьшую неотрицательную числовую систему и при условии, что
все модули нечетные, наименьшую по абсолютной величине число-
числовую систему, или симметричную систему остатков, относительно
данного вектора оснований /?.
Рассмотрим теперь вектор оснований общего вида /? = [mi, тг,
..., т„], (nii,mj) = 1 для i ф j, и пусть М = mi-m2 • • го„. (Отметим,
что, поскольку модули попарно взаимно просты, М является их
наименьшим общим кратным.) Справедлив следующий важный
результат.
Теорема 2.4.1. Лва целых числа п\ и п2 имеют одинаковые
стандартные наборы остатков относительно вектора оснований
Точные вычисления, использующие модулярную арифметику 115
/? = [mi, m2, ..., т„] тогда и только тогда, когда «i = п2
(mod mi • m2 • • • mn).
Доказательство. Локазательство оставляется читателю в качес-
качестве упражнения. ?
Пример. Рассмотрим /? = [3,5,7], как в табл. 2.4.1, где М = 105.
Тогда 9 = 114 (mod 105), и, значит, 9 (mod/?) = [0,4,2] = 114
(mod /?).
Из теоремы 2.4.1 следует, что множество Щ = {п (mod /?): n€Z}
содержит М элементов, которые взаимно однозначно отобража-
отображаются на элементы множества TLm- Нетрудно видеть, что два
множества Z^ и Zm с соответствующими операциями сложения
и умножения представляют собой изоморфные конечные комму-
коммутативные кольца, и, следовательно, многомодульная арифметика
эквивалентна арифметике по модулю М.
Главное преимущество многомодульной числовой системы сос-
состоит в отсутствии переносов при выполнении операций сложения
и умножения. Арифметика замкнута в каждой позиции (т.е.
арифметические действия выполняются полностью и независимо
в разных позициях). Поэтому можно выполнять сложение и ум-
умножение длинных целых чисел так же быстро, как и обычных
(коротких) чисел.
На двоичных компьютерах удобно использовать модули вида
т = 2е — 1, т.е. каждый модуль на единицу меньше, чем степень
двойки. Имеем
и ¦ v (mod 2е - 1) = (uv mod 2е) + [uv/2e\.
В последнем выражении мы складываем младший и старший
разряды произведения. Как мы видим, действия по модулю 2е — 1
выполняются сравнительно просто. (Если модуль m не имеет
такого вида, то при сложении нужно взять и + v — т, когда
u + v ^ m.)
В некоторых случаях необходимо знать, являются ли модули
взаимно простыми. Если они имеют вид 2е — 1, то для проверки
этого можно использовать следующее простое правило: Bе —
1,2^ — 1) = 2(e>f) — 1. Из него вытекает, что модули взаимно
просты тогда и только тогда, когда числа ей/ взаимно просты.
Это правило следует из алгоритма Евклида и тождества 2е — 1
(mod 2' - 1) = 2е (mod/)-l.
116 Делие числа
Пример. В табл. 2.4.1 рассмотрим числа 4 = [1, 4, 4] и 5 = [2, О,
5]; их сумма равна [1+2 (mod-3), 4 + 0 (mod 5), 4 + 5 (mod 7)] = [0,
4, 2] = 9. Точно так же их произведение равно [1 • 2 (mod 3), 4 0
(mod 5), 4 • 5 (mod 7)] = [2, 0, 6] = 20. Заметим, что при отсутствии
таблицы ответ восстанавливается с помощью греко-китайского
алгоритма. Кроме того, если результат операции больше, чем
М, то мы не получим правильного ответа; поэтому критическим
моментом является правильный выбор вектора оснований.
Мы видим, что время, которое требуется для сложения, вы-
вычитания и умножения двух n-значных чисел при использовании
многомодульной арифметики, равно O[L(n)] без учета времени
преобразования к модулярному представлению и обратно. Лля
сложения и вычитания здесь нет никаких преимуществ, но для
умножения может быть достигнуто существенное улучшение по
сравнению с обычным методом, требующим времени О[?2(п)].
Многомодульная арифметика также идеально подходит для парал-
параллельных компьютеров.
Для выполнения деления определим б (mod /?), мультиплика-
мультипликативный обратный к элементу 6 = [Ь\, Ьг, • • •, Ь„] по модулю вектора
оснований m = [mi, m2, ..., т„], следующим образом:
б-1 (mod/?) = [&;-1
(modmi^&J1 (modra2) t^1 (mod mn)].
Далее, если а = [а\,а2, ¦.. ,ап], то
- (mod /?) =[ai • &Г1 (mod mi),a2
о
... ,an -6 (modmn)].
1 (mod m2),
Конечно, как и в случае одного модуля, если Ь не делит а, то
результат не может быть проинтерпретирован без дополнительной
информации; однако он допустим в качестве промежуточного
результата.
Основная трудность при работе с многомодульными числовы-
числовыми системами заключается в сравнении величины целых чисел.
Конечно, можно использовать симметричную систему остатков,
вычесть из одного числа другое и затем определить знак раз-
разности. К сожалению, проблема этим не решается, поскольку
остатки в симметричной системе не несут информации о знаке
числа; один из способов определения знака числа х состоит в
обратном преобразовании к обычному виду, что разрушает саму
Точные вычисленья, использующие модулярную арифметику 117
идею многомодульной арифметики. Задача определения знака
числа может быть решена гораздо лучшим способом с помощью
преобразования числа х к так называемому представлению со
смешанными основаниями (mixed-radix representation). При этом
преобразовании мы выполняем только операции многомодульной
арифметики. Мы уже встречались с представлением со смешан-
смешанными основаниями, когда выражали решение х в греко-китайском
алгоритме в виде
= 9i + 41 • mi + 9з
m2 Ч h qn
¦ m2 • ¦ ¦ mn-\,
(*)
где каждое g,- не превосходит соответствующего модуля m,-; qn
называется старшим членом числа х. В этой форме знак числа х
совпадает со знаком его старшего члена. (Отметим, что в форме
со смешанными основаниями мы имеем х = 5^i<,<n Я<'%, где М,- =
roi m2 • • • т<_1 и Mi = 1; частные M^/M^i различны для различных
позиций г. Если mi — m2 = • • • = т„, то мы имеем представление
с фиксированным основанием; в частности, при mi = m2 = • • • =
т„ = 10 получается хорошо знакомое десятичное представление.)
При определении знака удобно, чтобы последний модуль в векторе
оснований был равен 2, поскольку нужно знать, в какой половине
множества возможных чисел лежит результат. Например, на
рис. 2.4.2 числа 0, 1, ..., 5 образуют нижнюю половину множества
возможных чисел, соответствующую значению qn = 0, а числа 6, 7,
..., 10 — верхнюю половину, соответствующую значению qn = 1.
Предположим теперь, что нам дано представление х = [ai, ai,
..., а„] относительно вектора оснований 0 = [mi, mi, ..., mn], и
мы хотим определить знак числа х. Нам нужно преобразовать х
к форме со смешанными основаниями и определить знак старшего
члена. Для этого необходимо вычислить цифры qi, qi, ..., qn,
упомянутые выше. Очевидно, что из (*) вытекает
х = qi (mod mi),
и, следовательно, q\ — а.\. Мы получили первую цифру. Да-
Далее возьмем разность х — qi (вычитая <h из каждого остатка,
представляющего х). Имеем
х - q\ = 92 -mi + q3 mi • m2 -\ hgn mi m2--mn_i.
Первая цифра (в смешанном представлении) числа х — qi равна
нулю, и, следовательно, первые цифры всех последующих чисел
118 Целые числа
можно будет не рассматривать. Будем считать, таким образом,
что размерность вектора x — qi равна п — 1. Найдем затем (mi)
(mod Д.), (многомодульный) мультипликативный обратный к эле-
элементу mi по модулю Д., где Д. = [т2, ..., 2] (также размерности
п— 1), и вычислим (многомодульное) произведение (х — qi) (mi),
для того чтобы получить вторую цифру ?2- Будем продолжать
этот процесс до тех пор, пока не вычислим qn; если его значение
равно 0 или 1, то число х соответственно положительное или
отрицательное, потому что лежит соответственно в нижней или
верхней половине возможного множества значений.
Пример. Определим знак числа я = [4, 2, 0, 1] с вектором
оснований Д = [7, 5, 3, 2]. Очевидно, что дц = 4, и х' = х -
4 = [0, 3, 2, 1], или, как было объяснено выше, х' = [3, 2,
1]; мы сократили вектор оснований до Д. = [5, 3, 2]. Для того
чтобы получить вторую цифру }2> вычислим (mi) (mod Д.) = 7
(mod Д.) = [3, 1, 1]; умножив х' на этот элемент, получим [4, 2, 1].
Следовательно, дг = 4, и, вычитая qi из последнего модулярного
выражения, получим х" = [0, 1, 1], или х" = [1, 1]. (Теперь мы уже
сократили вектор оснований до Д = [3,2].) Далее вычисляется
(шг) (mod Д.) = 5 (mod Д.) = [2,1], и, умножая х" на этот
элемент, мы получаем [2,1]; поэтому q3 = 2. Вычитая дз из
последнего модулярного выражения, получаем х'" = [0,1], или
х'" = 1. (Теперь Д. = [2].) В заключение мы вычисляем (тз)
(mod Д) = З (mod Д.) = [1], и, умножая х'" на этот элемент,
получаем [1], откуда следует, что q4 = 1. Поэтому х является
отрицательным числом; действительно, х = —3.
Упражнения
Раздел 2.1.1
1. Завершите доказательство предложения 2.1.2.
2. Пусть А, В и С обозначают множества.
a. Покажите, что A U (В Л С) = (A U В) Л (A U С) (объе-
(объединение дистрибутивно относительно пересечения).
b. Покажите, что В с А ¦<=> В П А - В.
c. Покажите, что множества А -В, АПВ vs. В —А попарно
не пересекаются и A U В = (А - В) U (А Л В) U (В - А).
Упражнения 119
3. (Индукция.) Пусть р(п) — утверждение о натуральном
числе п. Допустим, что любое непустое множество нату-
натуральных чисел имеет наименьший элемент (это принцип
полной упорядоченности, доказательство которого дано
в разд. 2.2.1). Покажите, что если (i) р@) справедливо
и (ii) из справедливости р(п) вытекает справедливость
р(п + 1), то р(п) справедливо для любого п. [Указание.
Если нет, то множество S = {т: р(т) не выполняется}
имеет наименьший элемент то.]
4. (Законы Де Моргана.) Для данного множества С С S
положим С" = {ж е S и х ? С]. Пусть А, В - два
подмножества множества S. Докажите, что имеют место
следующие равенства множеств:
а.
Ь. (А П В)' = A' U В'.
5. Бинарная операция на множествах, называемая симмет-
симметрической разностью, определяется формулой А® В = (А\
B)U(B\A).
a. Докажите, что А ф В = (A U В) \ (А П В).
b. Чему равно А® А для произвольного множества А?
c. Докажите, что (А ф В) ф С = А ф (В ф С) для любых
множеств А, В к С.
6. (Принцип включения и исключения.) Если S - конечное
множество, то число элементов множества 5 обозначается
|5|. Покажите, что для конечных множеств А и В имеем
\А U В\ — \А\ + \В\ \ \А Л В\. По индукции это соотношение
может быть распространено на случай l^iU^U- -L)An\.)
7. (Парадокс Рассела.) Множества могут содержать мно-
множества в качестве элементов. Пусть В — множество
В — {S : S — множество и 5 $. S}. Приведите рассуждения,
показывающие, что иВеВ,иВ?В истинно (см. также
историческое замечание 1).
Раздел 2.1.2
1. Завершите доказательство предложения 2.1.4.
2. а. Покажите, что —т является отношением эквивален-
эквивалентности на 7L и что классом эквивалентности целого
числа а служит множество a = а + тЪ.
Ь. Покажите, что множество классов эквивалентности
равно Z/ = ra ={0, 1, ... ,М-1}.
120 Целые числа
3. Лля различных множеств S (определенных ниже), проверь-
проверьте следующие бинарные отношения д на рефлексивность,
симметричность и транзитивность:
a. 5 = Q; хду тогда и только тогда, когда \х\ ^ у.
b. S = Z; хду тогда и только тогда, когда х — у нацело
делится на 5.
c. S = N; хду тогда и только тогда, когда х • у четно.
d. S = N; хду тогда и только тогда, когда х • у нечетно.
4. Определите, какие из бинарных отношений в упр. 3 явля-
являются отношениями эквивалентности, если такие среди них
есть, и опишите соответствующие классы эквивалентности.
5. Пусть S = {0,1,2,4,6}. Проверьте следующие .бинарные
отношения на рефлексивность, симметричность и транзи-
транзитивность:
a. в ={@,0), A,1), B,2), D,4), F,6), @,1), A,2), B,4),
D,6)}.
b. <?= {@,1),A,0),B,4), D,2), D,6), F,4)}.
6. Лано разбиение {а, 6, с} и {d, e} множества {а,Ь, с, d, e}.
Перечислите упорядоченные пары в соответствующем от-
отношении эквивалентности.
7. Вычислите число всех возможных разбиений (а) 4-элемент-
ного множества; (Ь) 5-элементного множества.
Раздел 2.1.3
Обозначение в упр. 2 и 3: для натурального числа п положим
й = {1,... , п} — множество из п элементов; 0 = 0.
1. Завершите доказательство предложения 2.1.9.
2. Покажите по индукции, что множество всех биекций мно-
множества из п элементов Bij(n) содержит п! элементов.
3. Покажите по индукции, что множество всех подмножеств
р(п) имеет 2" элементов.
4. Покажите, что логарифм по любому основанию log: Я+ —> R
является биекцией. Чему равна функция log?
5. Найдите бесконечное множество 5 и функцию / : S —* S
такую, что
a. / взаимно однозначна, но не на.
b. / отображает на, но не взаимно однозначна.
6. Пусть / — функция / : S -* Т. Покажите, что /(А П В) С
/(А) П f(B) для всех подмножеств А и В множества 5 и,
Упражнения 121
в частности, f(A П В) = f(A) П /(В) тогда и только тогда,
когда / взаимно однозначна.
7. Пусть / :S-*Tvig:T~*U — функции.
a. Докажите, что если функция до/ взаимно однозначна,
то взаимно однозначна и /.
b. Найдите пример, когда до/ взаимно однозначна, но д
таковой не является.
c. Докажите, что если функция до/ отображает на, то
этим свойством обладает и д.
d. Найдите пример, когда до/ отображает на, но / этим
свойством не обладает.
8. Пусть / — функция / : S —* Т. Определим бинарное
отношение д на S правилом: хду тогда и только тогда,
когда /(х) = /{у). Докажите, что д является отношением
эквивалентности.
Раздел 2.2.1
1. Покажите, что не каждое непустое подмножество вещес-
вещественных чисел имеет минимальный и максимальный эле-
элемент.
2. Покажите, что если а\Ь и Ь\а, то а = ±6.
3. Покажите, что если d | а, 6, то d \ ax + by для любых х, у.
4. Покажите, что если а \ Ьс и (о, 6) = 1, то а \ с. {Указание.
Используйте теорему 2.2.3.)
5. Покажите, что если а и 6 оба ненулевые, то т = ab/(a, 6) —
наименьшее общее кратное чисел а и Ь.
6. Докажите часть b теоремы 2.2.4. (Указание. Сначала
покажите, что любое решение однородного уравнения ах +
by = 0 имеет вид х = —nb/d, у = na/d для некоторого п.)
7. Покажите, что. gcd(a, b) = gcd(a, 6 + ax) для всякого целого
х.
8. Докажите, что если d = gcd(a,6) и d = ах + by, то gcd(z,
») = 1.
9. Пусть ai,... ,ап — целые числа. Покажите, что уравнение
aiXi + ¦ • • + а„х„ — Ь имеет целое решение тогда и только
тогда, когда gcd(ab ... ,an) |6, i\aegcd(ai, ... ,а„) = gcd[ai,
gcd(a2, ... ,an)],n?2.
10. Воспользуемся рядами Фарея для доказательства частного
случая теоремы 2.2.3. А именно если gcd(a,6) = 1 и 0^
а ^ Ь, то целые числа х, у, удовлетворяющие соотношению
ах + by ¦=¦ 1, могут быть получены из ряда Фарея Fb-
122 Целые числа
a. Определение. Ряд Фарея порядка N, обозначаемый
Fjv, — это множество всех приведенных дробей между
О и 1, знаменатели которых ^ N, расположенных в
порядке возрастания. (Лробь а/6 приведена, если
gcd(a, 6) = 1.) Например, ряд Фарея порядка 3 равен
F3 = 0/1,1/3,1/2,2/3,1/1.
b. Построение рядов Фарея. Для получения Fpf в общем
случае начинаем с F\ — 0/1,1/1 и повторяем следую-
следующую операцию столько раз, сколько потребуется (все
знаменатели должны быть меньше или равны N):
Вставить (а + а')/(Ь + 6') между двумя соседними
дробями а/6 и а'/6'. (Новая дробь (а + а')/F + 6')
называется медиантой дробей а/6 и а'/6'.) Например,
чтобы вычислить F$, первый шаг дает нам один новый
элемент между 0/1 и 1/1:
0/1,1/2,1/1,
а следующий (последний) дает еще два:
0/1,1/3,1/2,2/3,1/1.
Отметим, что для получения F/v из Fjv-i мы вставляем
дробь (а + a')/N между двумя соседними дробями а/6
и а'/6' ряда Fjv-i, знаменатели которых в сумме дают
N. Например, чтобы получить F4 из элементов ряда
F3, мы просто вставляем 1/4 и 3/4 (почему не 2/4?) в
соответствии со сформулированным^правилом:
F4 = 0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1.
с. Проверьте, что если а/6 < а'/6' и если все значения
неотрицательны, то
d. Докажите по индукции, что если а/6 и а'/6' — две
соседние дроби (на любом шаге построения), то
а'6 - аб' = 1.
(Указание. Изначально это верно; посмотрите, что
случится, когда вставляется новая медианта, и про-
проверьте, что получен инвариант для всех шагов пост-
построения.)
e. Постройте Fj и получите два решения уравнения
Ьх + 7у = 1.
Упражнения 123
Раздел 2.2.2
1. Последовательность Фибоначчи определяется равенства-
равенствами /о = 1, /i = 1, fn+2 = fn+i + fn, n ^ 0. Сколько операций
нужно выполнить, чтобы вычислить gcd(/n+i,/n)? Чему
равен gcd(/n+b/n)?
2. (Теорема Лукаса.) Покажите, что gcd(/m,/n) = /gcd(m,t»)-
(Указание. Примените алгоритм Евклидактипиисполь-
Евклидактипииспользуйте следующее соотношение (которое доказывается по
ИНДУКЦИИ): fm-lfn + fmfn+l = fm+n И /„ | /*„•)
3. а. Докажите, что для остатков, получающихся при вы-
выполнении алгоритма Евклида, выполняется неравенс-
неравенство
at+2 < (l/2)at, * > 1.
Другими словами, остатки не просто убывают, но
убывают достаточно быстро. (Указание. Рассмотрите
два возможных неравенства, связывающих at+i и at.)
b. Вместо теоремы Ламе воспользуйтесь результатом
п. (а) для получения функции времени вычислений
алгоритма Евклида ЕА.
4. Для каждой из следующих пар целых чисел найдите наи-
наибольший общий делитель, пользуясь алгоритмом Евклида:
(а) 34,21; (Ь) 136,51; (с) 481,325; (d) 8771,3206.
5. Часто алгоритм Евклида удается немного ускорить, если
разрешить выполнять деление с отрицательными остатка-
остатками, т.е. ak = at+1gjt+i -at+2 наравне с at = ajfc+1gt+1 + at+2,
и выбирать наименьшее at+г. Таким образом, мы всегда
получаем а*+2 < A/2)а*+1. Выполните четыре примера
упр. 4, пользуясь этим методом.
6. Рассмотрим следующий рекурсивный алгоритм вычисле-
вычисления d = gcd(a,6), где а и 6 положительны. (Мы можем
считать a > 0, 6 > 0 без потери общности, поскольку, как
нам известно, gcd(a, 6) = gcd(|a|, |6|).)
[1] Если a = 6, то положить d := а и закончить работу.
[2] Если а и 6 оба четные, то положить d := 2 gcd(a/2,6/2).
[3] Если одно из двух чисел, например а, четно, то
положить d := gcd(a/2,6).
[4] Если оба числа нечетны и не равны, например, a > 6,
то положить d := gcd(a — 6,6).
Чему равно время вычислений этого алгоритма?
124 Целые числа
7. Разработайте алгоритм Евклида, который находит наи-
наибольший общий делитель двух гауссовых целых чисел.
Нужно принять во внимание следующие факты. Гауссовы
целые числа — это комплексные числа, вещественная и
мнимая части которых являются целыми числами. Если
а и E — два целых гауссовых числа, то мы говорим, что
а|/9, если существует гауссово число 7 такое, что /? = от/.
(Напомним, что поскольку (о + 6»)(о — Ы) = а2 + Ь2 — ве-
вещественное число, мы можем выполнить деление, написав
(с + di)/(a + Ы) = (с + di)(a - Ы)/(а? + б2).) Мы определим
gcd(a,/9) как гауссово число 6 с максимальным абсолют-
абсолютным значением, которое делит как а, так и /?. (Напомним,
что абсолютное значение \6\ — это его расстояние до О,
т.е. квадратный корень из суммы квадратов вещественной
и мнимой частей.) Отметим также, что gcd определен не-
неоднозначно, поскольку мы всегда можем умножить его на
±1 или ±i и получить другое 6 с тем же самым абсолют-
абсолютным значением, которое также делит и а, и /?. Любое из
этих четырех возможных значений рассматривается как
gcd. Наконец, заметим, что любое комплексное число мо-
может быть записано в виде суммы гауссова целого числа
и комплексного числа, вещественная и мнимая части ко-
которого расположены каждая между — 1/2 и 1/2, вследствие
чего мы можем делить одно гауссово число о на другое
р и получать в частном гауссово число, а остаток будет
меньше, чем /3, по абсолютной величине.
Используйте полученный алгоритм для вычисления
gcdA2277,399 + 20i). (См. также упр. 4 разд. 3.2.1.)
8. Пусть /„ и /n+i — последовательные члены последова-
последовательности Фибоначчи. Покажите, что gcd(/n+i,/n) = 1.
9. Функция gcd является бинарной операцией на Z; покажите,
что она коммутативна и ассоциативна.
10. Покажите, что если d — gcd(m, n) и a > 1, то gcd(am — 1, a" —
1) = ad—l. (Указание. Примените алгоритм Евклида, чтобы
найти gcd(am-l,an-l) и чтобы найти gcd(ra, n). Например,
пусть аг — 1 — остаток, полученный после первого деления
ат — 1 на ап — 1, в предположении, что т> п. Как связано
г с т и п?)
11. Пользуясь тем, что Я$ = ?<i>i 1/d2 = тг2/6, ЯЙ> = т4/90,
#?? = 5г6/945 и Яо? = 5Г8/945О, вычислите вероятность, с
которой два, четыре, шесть и восемь (соответственно) слу-
Упражнения 125
чайно выбранных чисел взаимно просты. (См. также упр. 1
по программированию разд. 2.2.2; также представляет ин-
интерес статья: Stark E.I., The Series J2d>1 Jb"', s = 2,3,4,...,
Once More, Mathematics Magazine 47, 1974, 197-202.)
Раздел 2.2.3
1. Примените ХЕА к паре 217, 413.
2. Найдите целые числа ж, у, такие, что
a. 1 =
b. l = y
3. Пусть d = ах + by, где a,b,x,y,d — целые числа; верно ли,
что d = gcd(a, 6)? Существует ли какая-либо взаимосвязь
между d и gcd(a, 6)?
4. Найдите все решения приведенных выше упр. 2а и 2Ь.
5. Для каждого из следующих уравнений найдите целочис-
целочисленное решение или докажите, что такового не существует-
(а) 3* + Чу = 5, (Ь) 2х + 6у = 7.
6. Почему алгоритм, описанный в упр. 6 разд. 2.2.2, не всег-
всегда предпочтителен по отношению к алгоритму Евклида?
(Указание. Можно ли выразить d как целую комбинацию a
и 6?)
7. Разработайте расширенный алгоритм Евклида для гаус-
гауссовых целых чисел и примените его к 12277, 399 + 20».
Раздел 2.2.4
1. Завершите доказательства теорем 2.2.12 и 2.2.13.
2. Завершите пример, следующий за теоремой 2.2.15.
3. Покажите, что разложение числа \/5 в цепную дробь имеет
вид у/Ь = B; 4, 4,...). [Указание. Заметим, что в нашем
случае^ = 2 + 1/[4+(?-2)].]
4. а. Разложите рациональные дроби 14/3 и 3/14 в конечные
цепные дроби.
Ь. Преобразуйте в рациональные числа B; 1,4) и
@; 1,1,100).
5. Даны положительные целые числа i\, ij и |'з, причем i2 > t3-
Покажите, что для любого целого i
(*; «2) < (»; *з), но (i; ?i, i2) > (i; tb t3).
6. Пусть »i,»2,...,»n и j — положительные вещественные
числа. Докажите, что неравенство
(*о;*1,*2, — j*г») > (<о;<1,<2,...,»п + з)
126 Целые числа
истинно, если п нечетно, и ложно, если п четно.
7. Пусть io,»'i,»2,---,»n и io.ii, ••• ,Jn+i — положительные це-
целые числа. При каких условиях истинно неравенство
(«о; »Ч, «2, • • •, »n) > (io; ii,..., in + i)?
8. Найдите квадратичные иррациональные числа, соответс-
соответствующие бесконечным цепным дробям
a. A;1,1,1,...).
b. B51,1,1,...).
c. B:3,1,1,...).
d. B;2,2,2,...).
9. Докажите, что qn/qn-i = (cn;cn_i,... ,с\) для п ^ 1. Най-
Найдите и докажите аналогичное разложение в цепную дробь
для рп/рп-1 в предположении, что со ^ 0.
10. Разложите каждое из следующих чисел в бесконечную
цепную дробь: \/2, \Д - 1, \/2/2, \Д.
11. Дано, что для двух иррациональных чисел подходящие
дроби Ро/?о, piliii ¦•• совпадают по Рк/Як включительно.
Докажите, что их разложения в цепные дроби совпадают
по с/с включительно.
12. Докажите, что
Раздел 2.3.1
1. Покажите, что для любого п существует простое р, такое,
что п < р < п! + 1.
2. Докажите, что для проверки простоты г» достаточно пока-
показать, что никакое р ^ у/п не делит п.
3. Пусть Pi = 2, рг = 3, ... — простые числа в порядке
возрастания. Покажите, что
a. Pn+i ^ 2рп + 1- [Указание. Используйте постулат Бер-
Бертрана, который утверждает, что для любого п > 1
существует простое р, такое, что п ^ р < 2п; его до-
доказательство можно найти в (Niven, Zuckerman, 1980).]
b. Pn+i < Pi + Рг Н \-Pn Для любого n > 1.
4. Покажите, что квадратный корень из простого числа ни-
никогда не является рациональным числом, т.е. у/р ф r/s.
Упражнения 127
5. Для каких значений п функция Эйлера ф{п) нечетна?
6. Если ф(п) = 2, то что можно сказать о числе п?
7. Докажите, что для любой степени простого числа ф(ра) =
ра-р°-1=раA-1/р).
8. Найдите ф(п) для всех п от 70 до 80.
9. Составьте список, содержащий все целые числа п, для
которых ф(п) ^ 10, и докажите, что ваш список полон.
10. Предположим, что п =p-q, где р и q - два различных прос-
простых числа. Докажите, что знание двух простых чисел р, q
эквивалентно знанию п и ф(п) в том смысле, что мы можем
вычислить п и ф(п) по р и q и можем вычислить р и q по п
и ф(п), используя только «малое» число арифметических
операций и операцию извлечения квадратного корня из
целого числа. Этот факт подчеркивался также в разделе
4.2.2.
Упр. 11-15 имеют дело с простыми числами в кольце гауссовых
чисел Щг\. (См. также упр. 7разд. 2.2.2.)
11. Докажите, что если z — гауссово целое число (т.е. z G Щг\)
и его норма n(z) = р — простое число в 2, то z — простое
в Щг\. {Напомним, что если z = х + у, то п(г) = х2 + у2[=
(х + iy)(x — iy)].} Проверьте, что 1 + i, 1 + 2f и 2 — 3* —
простые числа в 2[г].
12. Покажите, что если z — простое число в 2[г], то существует
простое число р в Z, такое, что z\p в Z[i].
13. Докажите, что если р — простое число в 2, то либо р —
простое в Z[i], либо р = и • v, где и и г — сопряженные
простые числа в Z[i]. (Следовательно, разлагается ли р на
множители в 2[j], зависит от того, может лир быть записано
в виде суммы двух квадратов целых чисел. Следующие
два упражнения помогают нам определить их.)
14. Покажите, что если р — простое число в Z и р = 3 (mod 4),
то р просто в Щ}\.
15. (Ферма) Покажите, что если р — простое число в Z и
р = 1 (mod 4), то р = х2 + у2, х, у — целые числа, т.е.
р не является простым в Z[t]. (Указание. Воспользуйтесь
теоремой Вильсона из следующего раздела.)
См. также упр. 5(Ь) в упражнениях для разд. 2.8.4-
Раздел 2.3.2
1. Завершите доказательство теоремы 2.3.7.
2. Завершите доказательство теоремы 2.3.8.
128 Целые числа
3. Покажите, что если 5 не делит п, то 5 делит п8 — 1.
4. Найдите 247 (mod 23); используйте теорему Ферма.
5. Покажите, что для любого п число п7 — п делится на 2, 3,
6 и 7.
6. Используя два способа, которые обсуждались в тексте,
вычислите мультипликативные обратные к числам 7, 8 и 9
по модулю 19. [Указание. Используйте алгоритм Е.]
7. Покажите, что мультипликативный обратный к (га — 1) в
кольце 2т равен т — 1.
8. Пусть G — группа и а — ее элемент порядка s; покажите,
что порядок элемента аг равен s/(r,s).
9. Найдите все примитивные корни по модулю 27.
10. Используйте теорему 2.2.4 для доказательства того, что
система сравнений х = a (mod mi) и х = 6 (mod тг) имеет
решение тогда и только тогда, когда (mi,m2) | (Ь - а).
Если решение существует, то оно единственно по моду-
модулю [nti.mj], наименьшего общего кратного чисел mi и
пи. (Обобщите это утверждение на случай произвольно-
произвольного числа уравнений. Лля доказательства единственности
покажите, что х = хо (mod n»i) и х = хо (mod m2) тогда и
только тогда, когда х = хо (mod [mi,гаг]).)
11. Докажите теорему 2.3.25.
12. (Никомах; см. также историческое замечание 6.) Решите
следующую систему уравнений:
х = 2 (mod 3),
х = 3 (mod 5),
х = 2 (mod 7).
13. а. Покажите, что существует бесконечно много чисел,
свободных от квадратов.
Ь. Покажите, что всякое положительное целое число
представляется единственным образом в виде произ-
произведения квадрата и числа, свободного от квадратов.
14. Докажите, что десятичное целое число делится на 3 тогда
и только тогда, когда сумма его цифр делится на 3, и что
оно делится на 9 тогда и только тогда, когда сумма его
цифр делится на 9.
15. а. Пусть т = (pi)ei • (рг)" •••(р*)е*- Докажите, что
любое решение системы сравнений х = a (mod р^')>
i = 1,2, ...,k, является также решением сравнения
х = a (mod m) и обратно. (Обобщите этот результат
на сравнения высших степеней и покажите, что если
16.
Упражненья 129
S(m) обозначает число решений сравнения f(x) = О
(mod m), где m — данное выше число, то S(ni) =
IWW))
b. Покажите, что х = a (mod m;) для i = 1,2,... ,k тогда
и только тогда, когда х = а (mod [mi, m2,..., га*]), где,
как вы помните, [...] обозначает наименьшее общее
кратное чисел, заключенных в скобки.
а. Сколько решений имеет сравнение
х2 = 1 (mod m),
9—274
если два решения х и х считаются совпадающими,
если х = х'1 {Указание. Сначала докажите, что если m
имеет вид р" или 2ра, а > 0 ир > 2 для обоих случаев,
то сравнение х2 = 1 (mod m) имеет два решения х = 1
(mod m) и х = — (mod m). Затем докажите, что если
т имеет вид 2*, k ^ 3, то существуют четыре решения,
х = ±1 (mod m) и х = 2* ± 1 (mod m). Что случится
при к = 1 и к = 2? Наконец, воспользуйтесь тем,
что я8 = 1 (mod т) тогда и только тогда, когда х2 = 1
(mod р*') для всех простых чисел р,-, у которых е< > 0 в
полном разложении т на множители, и скомбинируйте
полученные результаты, чтобы показать, что если
т имеет ровно г различных простых делителей, то
общее число решений равно Т, с корректировкой для
четных т. То есть в общем случае точное число
равно 2r+(8lm)+DW-Blm), где (Jk|m) равно 1, если к\тп,
и 0 в противном случае.)
b. С помощью рассуждений, аналогичных предложенным
выше, докажите, что число решений сравнения х2 = х
(mod m) для любого целого m равно 2Г, если m имеет
ровно г различных простых делителей.
c. Сколько 3-значных чисел удовлетворяет сравнению
х2 = х (mod 1000)? Обобщите свой ответ.
17. Покажите, что сравнение х2 = —1 (mod р), где р — простое
число, имеет решения тогда и только тогда, когда р = 2
или р = 1 (mod 4). (Указание. Воспользуйтесь теоремой
Вильсона и тем, что если р ф 2 и р не сравнимо с 1 по
модулю 4, то р = 3 (mod 4).)
18. а. Докажите, что если р — простое число и gcd(a,p) = 1,
то сравнение хп = a (mod p) имеет gcd(n,p— 1) реше-
решений или не имеет решений в зависимости от того,
130 Целые числа
a(p-l)/gcd(n,p-l) = 1 (modp) или a(p-l)/gcd(n,p-l) ^ I
(modp). (Указание. Воспользуйтесь малой теоре-
теоремой Ферма, чтобы показать, что сравнение хп = a
(modp) не имеет решений, если а^р~1^scd^n>p~1^ ф 1
(mod р). Лля доказательства обратного утверждения
воспользуйтесь следующей информацией: должен су-
существовать образующий д по модулю р такой, что
gi = a (mod p), а значит, исходная проблема может
быть сведена к сравнению уп = j (mod p— 1); затем
воспользуйтесь тем, что линейное сравнение обще-
общего вида ах = b (mod m) имеет gcd(a, m) решений по
модулю т (теорема 2.3.22).)
Ь. Критерий Эйлера. Используйте (а), чтобы показать,
что если р — нечетное простое число и gcd(a,p) = 1,
то сравнение з? = a (mod p) имеет два решения или
не имеет ни одного в зависимости от того, а^^2 = 1
(mod р) или а^)/2 = -1 (mod p). (Величина а(р~^/2
(mod p) играет важную роль в теории чисел; см.
упр. 9 разд. 2.3.3, утверждающее, что ее значение
равно значению символа Лежандра (f), по опреде-
определению равного 1, если a — квадратичный вычет по
модулю р, и равного —1, если a — квадратичный не-
невычет по модулю р. Существует также символ Якоби:
для q = 9i92...q$, т.е. когда j равно произведению s
не обязательно различных простых чисел, он опре-
определяется как (f) = Пк«. (fj)> где (fj) — символ
Лежандра. Ясно, что Ы) — ±1, но неверно, что из
равенства (-) = 1 следует, что а является квадра-
квадратичным вычетом по модулю q, например (§) = 1, но
сравнение х2 = 2 (mod 9) не имеет решений.)
19. Найдите наименьшее положительное число, дающее оста-
остаток 2 при делении на 11, остаток 3 при делении на 12 и
остаток 4 при делении на 13.
20. Расширьте алгоритм возведения в степень Е так, что-
чтобы он вычислял 6" (mod m) в общем случае (т.е. для
любых значений п), и воспользуйтесь этим расширенным
алгоритмом, чтобы вычислить 7538 (mod 107).
21. Как указано в тексте, если gcd(a,p) = 1, то ар~7 являет-
является обратным к а по модулю р. Предположим, что р —
очень большое число. Скомбинируйте бинарный алгоритм
Упражнения 131
возведения в степень с расширенным алгоритмом Евкли-
Евклида, чтобы получить эффективный метод вычисления а
(mod p), когда (а) а имеет столько же цифр, сколько и р, и
(Ь) когда а гораздо меньше р.
22. Предположим, что 3-значное (десятичное) положительное
целое число, дающее остаток 2 при делении на 11, остаток
9 при делении на 12 и остаток 11 при делении на 13,
является делителем шестизначного натурального числа,
дающего остаток 5 при делении на 11, 9 при делении на
12 и 8 при делении на 13. Найдите частное. (Указание.
Имеется два возможных ответа.)
23. (Обращение теоремы Ферма.) Покажите, что если am-1 = 1
(mod m) и a^m~l>lv не сравнимо с 1 по модулю го для всех
простых р, таких, что р|(га — 1), то m — простое число.
(Указание. Покажите, что если это условие выполнено, то
числа a* (mod m) различны для 1 ^. к < т.)
24. а. Пользуясь малой теоремой Ферма, докажите, что если
а не делится на простое число т и п = к (mod m — 1),
то ап = a* (mod m).
Ь. Используйте (а), чтобы вычислить последнюю цифру
по основанию 7 числа З10000.
25. Пользуясь греко-китайской теоремой об остатках, покажи-
покажите, что ^-функция Эйлера мультипликативна, т.е. покажи-
покажите, что ф(т • п) = ф(т) • ф(п), если только gcd(m,n) = 1.
26. Пользуясь теоремой Эйлера (теорема 2.3.14), докажите,
что если gcd(a,m) = 1, то ап = ап' (mod m) тогда и только
тогда, когда п = п' (mod ф(т)). (Этот результат будет
использован в разд. 4.2.2.)
27. а. Покажите, что в теореме Эйлера (теорема 2.3.14), если
т — не простое число и не четное число вида 2р, где
р — простое число, то существует меньшая (чем ф(т))
степень числа а, гарантированно дающая 1 по модулю
т, а именно наименьшее общее кратное степеней,
дающих 1 mod pa, a — наибольшее целое, такое, что
ра\т. Например, пусть га = 105, где 105 = 3-5-7;
в этом случае фA05) = 48 и a48 = I (mod 105) для
некоторого а; заметим, что также a12 = I (mod 105),
потому что 12 — это наименьшее общее кратное чисел
3-1, 5-1и7-1.
Ь. Пользуясь (а), вычислите 210000 mod 77. Получите то
же самое решение, пользуясь греко-китайской теоремой об
остатках.
132
Целые числа
28. Найдите 3-значное (десятичное) число (две возможности),
дающее остаток 4 при делении на 5, 7 или 13.
29. Рассмотрим систему сравнений
х = а\ (mod mi),
х = п2 (mod гаг),
где mi и гаг не являются взаимно простыми. Приведите
пример чисел at и а2, для которых нет решения. Для каких
ai и аг эта система имеет решение?
Раздел 2.3.3
1. Покажите, что если т — нечетное составное число, то
имеет место следующее:
a. Бели т делится на полный квадрат > 1, то га не
является кармайкловым числом.
b. Если т свободно от квадратов, тога — кармайклово
число тогда и только тогда, когда (р — 1)|(га — 1) для
каждого простого числа р, такого, что р\т.
(В качестве примера рассмотрите га = 561 = 3 • 11 • 17;
560 делится на 3-1, 11-1 и 17-1.)
2. Используйте упр. 1, чтобы доказать, что кармайклово чис-
число должно быть произведением не менее трех различных
простых чисел.
3. а. Найдите все основания 6, по которым 15 — псевдоп-
псевдопростое число (не включайте тривиальные основания
±1.)
Ь. Покажите, что если и р, и 2р - 1 — простые числа
и г» = рBр — 1), то в — псевдопростое число для
50% возможных оснований 6, т.е. для всех 6, которые
являются квадратичными вычетами по модулю 2р— 1.
4. Пусть т — положительное нечетное составное число, и
пусть gcdF,m) = 1.
a. Покажите, что если р — простое число, р|га и m
псевдопросто по основанию 6, то Ьт ~1 = 1 (mod р),
где т' = т/р.
b. Покажите, что никакое целое число вида т = Зр
(р > 3 — простое число) не может быть псевдопростым
по основанию 2, 5 или 7.
Упражнения 133
c. Покажите, что никакое целое число вида т = 5р
(р > 5 — простое число) не может быть псевдопростым
по основанию 2, 3 или 7.
d. Покажите, что 91 — наименьшее псевдопростое число
по основанию 3.
5. Чему равно наименьшее псевдопростое число по основа-
основанию 2? по основанию 5?
6. Покажите, что если р — простое число, то р2 псевдопросто
по основанию 6 тогда и только тогда, когда f = 1
(mod p2).
7. Пусть т = pq — произведение двух различных простых
чисел. Положим d = gcd(p - 1,? - 1)- Покажите, что т
псевдопросто по основанию b тогда и только тогда, когда
bd = 1 (mod га). Сколько, в терминах d, существует осно-
оснований, относительно которых т псевдопросто? Сколько
существует оснований, относительно которых т псевдоп-
псевдопросто, если q = 2р + 1? Перечислите все такие основания
в терминах р. (См. также упр. 19 ниже.)
8. Покажите, что если га псевдопросто по основанию 6 и если
gcdF - l,m) = 1, то целое число Fт - 1)/F - 1) псевдоп-
псевдопросто по основанию Ь. Приведите пример, показывающий,
что это может быть не так, если мы опустим условие
gcd(&-l,m) = l.
9. а. Воспользуйтесь малой теоремой Ферма, чтобы по-
показать, что если т — нечетное простое число и
gcdF,m)= 1, то
6(m-l)/2_(M (modm).
(*)
(См. определение символа (^) в упр. 18 разд. 2.3.2.)
Мы покажем, что если т — нечетное составное
число, то сравнение (*) ложно по крайней мере для
50% всех 6, для которых gcd(u, га) = 1.
Ь. Покажите, что если сравнение (*) истинно для &i и
ложно для &2, то оно ложно для произведения &i62.
Используйте этот результат, чтобы доказать, что
если сравнение (*) ложно хотя бы для одного 6, то
число значений 6, для которых оно ложно, по крайней
мере так же велико, как число значений 6, для которых
оно истинно.
134 Целые числа
c. Если т делится на квадрат простого числа р, пока-
покажите, как найти целое число Ь, gcdF,m) = 1, такое,
что б^-1)/2 ф ±1 (mod m).
d. Покажите, что если т — произведение различных
простых чисел, р — одно из этих простых чисел и b
таково, что (г) = —1 и 6 = 1 (mod т/р), то сравнение
(*) для Ь ложно. Затем покажите, что такое 6 всегда
существует.
10. Если т — нечетное составное число и Ь — целое число
такое, что gcdF,т) = 1 и имеет место сравнение (*), то т
называется псевдопростым числом Эйлера по основанию Ь.
Если т — псевдопростое число Эйлера по основанию
Ь, то оно псевдопросто по основанию Ь. (Отметим, что
обратное утверждение неверно; например, 91 псевдопросто
по основанию 3, но З45 = 27 (mod 91).)
11. Предположим, что п — положительное целое число, такое,
что 6т» + 1, 12п + 1 и 18п + 1 — простые числа. Докажите,
что га = (бя + 1)A2п + 1)A8п + 1) — кармайклово число.
(Существует также много кармайкловых чисел не такого
вида.)
12. Проверьте, что все следующие числа кармайкловы: 1105 =
5 13- 17; 1729 = 7-13-19; 2465 = 5-17-29; 2821 = 7-13-31;
6601 = 7-23-41; 29341 = 13 • 37 • 61; 172081 = 7 • 13 • 31 • 61;
278545 = 5-17-29- ИЗ.
13. а. Покажите, что для любого фиксированного простого
числа г существует только конечное число кармайк-
кармайкловых чисел вида rpq (p, q — простые числа).
b. Найдите все кармайкловы числа вида Spq (р, q —
простые числа).
c. Найдите все кармайкловы числа вида bpq (p, q —
простые числа).
с. Покажите, что для любого фиксированного простого
числа г существует только конечное число кармайк-
кармайкловых чисел вида rpq (p, q — простые числа).
14. Покажите, что 561 — наименьшее кармайклово число.
15. Рассмотрим 561, наименьшее кармайклово число.
а. Найдите число оснований 6 б (Z/561Z)* (обратимые
по модулю 561 элементы), для которых 561 — псев-
псевдопростое число Эйлера.
Упражнения 135
Ь. Найдите и перечислите основания, по которым 561
строго псевдопросто.
16. Покажите, что если т — ра, где а > 1 и р — простое число,
то т строго псевдопросто по основанию 6 тогда и только
тогда, когда оно псевдопросто по основанию 6.
17. Проверьте, что 65 строго псевдопросто по основанию 8 и
по основанию 18, но не по основанию 14, которое равно
произведению 8 и 18 по модулю 65.
18. Покажите, что если га = 3 (mod 4), то т строго псевдоп-
псевдопросто по основанию 6 тогда и только тогда, когда оно —
псевдопростое число Эйлера по основанию 6.
19. Покажите, что если мы найдем основание 6, такое, что га
псевдопросто, но не строго псевдопросто по основанию 6,
то мы можем быстро найти нетривиальный сомножитель
числа т. Объясните, как бороться с этим при выборе
т = pq в RSA^KprarrocHcreMe, обсуждаемой в разд. 4.2.2;
см. также выше упр. 7.
Раздел 2.3.4
1. а. Докажите, что для любого целого числа 6 и любого
положительного целого числа п число Ьп — 1 делится
на Ь — 1 и частное равно б" + Ьп~2 Н 1- Ь2 + Ь + 1.
Ь. Заменив Ь на 6т, мы видим, что 6mn — 1 делится на Ьт -1
с соответствующим образом измененным частным.
Чему равны два легко вычисляемых сомножителя
числа 221 - 1?
2. Докажите, что если п нечетно, то Ьп + 1 делится на 6 + 1 и
частное равно б" - 6П~2 Н + б2 - 6 + 1.
3. а. Докажите, что если 2П — 1 — простое число (Мерсен-
на), топ — простое число, и что если 2" +1 — простое
число (Ферма), то п — степень числа 2. (Указание. До-
Докажите это методом от противного, используя упр. 1
и 2.)
Ь. Используйте малую теорему Ферма (и несколько де-
десятков умножений), чтобы доказать, что 232 + 1 — не
простое число.
4. Предположим, что gcdF, n) = 1 и что а и с — положительные
целые числа. Докажите, что если Ьа = 1 (mod г») и 6е == 1
(mod п), то bd = 1 (mod п), где d = gcd(a,c).
5. Используйте упр. 4, чтобы доказать, что если р — простое
число, делящее Ьп — 1, то либо (i) p\(bd — 1) для некоторого
136 Целые числа
собственного делителя d числа п, либо (ii) р = 1 (mod n).
Если р > 2 и п нечетно, то в случае (ii) мы имеем р = 1
(mod 2п).
Приведенные выше упражнения используются далее в упр. 6-9:
6. а. Разложите на множители 215 — 1 и 230 — 1.
Ь. Разложите на множители 233 — 1 и 221 — 1.
7. Разложите на множители З15 — 1 и З24 — 1.
8. Разложите на множители 512 — 1.
9. Разложите на множители 106 — 1 и 108 — 1.
Разложение на множители методом Ферма (обоснование мето-
метода, описанного в тексте).
10. а. Покажите, что если т — положительное нечетное чис-
число, то существует взаимно однозначное соответствие
между разложениями m на множители вида т = pq,
р ^ q > 0, и представлениями го в виде го = и2 — v2,
где и, г; — неотрицательные целые числа. Это соот-
соответствие задается уравнениями
« = (р + ?)/2, v = (p-q)/2; p=u + v, q = u-v.
b. Используя (а), мы можем разложить т на множители,
вычисляя для к = 1,2,... числа <ц = [\/гп\ + к и
проверяя, является ли и2 — п = v2 полным квадратом
(где, разумеется и := at).
c. Пользуясь описанной в (Ь) процедурой, разложите на
множители 91, 323.
Метод цепных дробей; этот метод отличается от обсуждаемого
в тексте только тем, что величины а* выбираются с применением
цепных дробей (также здесь используются системы множителей).
Он основан на двух следующих упражнениях.
11. Покажите, что если х > 1 — вещественное число, разло-
разложение которого в цепную дробь имеет подходящие дроби
Pi/qi, то \р2 - x2q?\ < 1х для всех г.
12. а. Покажите, что если га — положительное целое число,
не являющееся полным квадратом, и pt/qt — подходя-
подходящие дроби в разложении у/т в цепную дробь, то на-
наименьший по абсолютной величине вычет р2 (mod m)
меньше, чем 2i/ro. (Указание. Воспользуйтесь упр. 11.)
Ь. Часть (а) является ключевой в методе цепных дробей;
она утверждает, что, перебирая числители подходя-
подходящих дробей в разложении -у/го в цепную дробь, мы
Упражнения по программированию 137
можем найти последовательность чисел р,-, квадраты
которых имеют малые вычеты. (Отметим, что нам
нужны только числители р,-, т.е. нам не нужно нахо-
находить точное значение подходящей дроби.) Процеду-
Процедура разложения на множители аналогична процедуре,
описанной в тексте, и детали мы оставляем читателю
(просмотрите еще раз разд. 2.2.4).
с. Пользуясь методом цепных дробей, разложите на мно-
множители 899 и 1443.
Раздел 2.4
1. Докажите теорему 2.4.1.
2. Пусть d — наибольший общий делитель целых чисел m
и п. Покажите, что полином xd — 1 является наибольшим
общим делителем полиномов хт — 1 и а?" - 1 над любым
полем.
3. Используя многомодульную арифметику с вектором осно-
оснований р = [3,5,7], вычислите a + b, a — b, abvi 6 (mod /?),
где a = 19 и Ъ = 23.
4. Используя тот же вектор оснований f$ — [3,5,7], найдите
многомодульное представление следующих целых чисел
как для симметричной системы остатков, так и для системы
наименьших неотрицательных остатков: (а) 127; (Ь) —127;
(с) 537; (d) -537.
5. Пусть /9 = [7,5,3,2] — вектор оснований. Каков знак числа
х = [6,3,1,1]?
Упражнения по программированию
Раздел 2.2.1
1
Свойство евклидовости утверждает, что для заданных а и
ненулевого 6 существует единственное частное q и остаток
г, такие, что а = bq + r, 0^r< |6|.
a. Напишите процедуру QUO, которая возвращает час-
частное q.
b. Напишите процедуру MOD, которая возвращает на-
наименьший неотрицательный остаток г.
138
Целые числа
с. Напишите процедуру LAVMOD, которая возвраща-
возвращает минимальный по абсолютной величине остаток г,
такой, что -|6|/2 < г ^ |6|/2.
Раздел 2.2.2
1. Используя ЕА, напишите процедуру GCDLCM, которая
для заданных а и 6 возвращает d = gcd(o, 6) и m = lcm(a, 6).
Эта процедура должна возвращать значения @, а) = (а, 0) =
|а| и [0, а] = [а,0] = 0 для любого а. Выполните эту
процедуру для следующих входных данных:
a Ь
18755 6727
4199 407
69 9453
1463 14098
Если возникнут трудности с переполнением (т.е. если мак-
максимальное представимое целое число равно 215 —1 = 32767),
то выразите наименьшее общее кратное в виде [a/(a,b)]b
(например, [21,35] = 3 • 35).
2. Выберите 500 пар случайных чисел в интервале от 1 до 500.
Для каждой пары вычислите gcd(a, 6), используя процедуру
из предыдущего упражнения. Найдите в процентах долю
пар, состоящих из взаимно простых чисел. Сравните
полученное число (процентов) с 100F/я-2), т.е. определите,
насколько эта доля близка к 0.60793 (Дирихле).
Раздел 2.2.3
1. Напишите подпрограмму GLE (линейное уравнение общего
вида (General Linear Equation)), которая по заданным о, Ь, с,
таким, что а и b не равны нулю одновременно, возвращает
х, у и t, где
( 0, если ах + by = с имеет решение,
\ 1, если это уравнение не имеет решений,
и, если t = 0, то х, у — решение с наименьшим положитель-
положительным х. Эта подпрограмма должна сначала использовать
ХЕА, чтобы найти решение уравнения ах + by — (а,Ь), а за-
затем использовать теорему 2.2.4. Выполните подпрограмму
для следующих входных данных:
168х - 66у = 42, 343i + 407у = 7,
426х - 156у = 128, 1463* + 4235у = 11.
Упражненья по программированию 139
Раздел 2.2.4
1 (Лагранж, 1798). Пусть р(х) = спхп Н |- с0, с„ > 0 —
полином с целыми коэффициентами, не имеющий рацио-
рациональных корней и имеющий в точности один вещественный
корень ? > 1. Напишите процедуру нахождения (вместе
с любой добавочной информацией, которую вы хотите
получить) неполных частных (pq) (от слов partial guotiens)
числа ?, используя следующий алгоритм с экспоненци-
экспоненциальным временем работы (который включает в основном
только операции сложения; для его понимания необходимо
овладеть материалом гл. 7):
1. [Инициализация] Положить (pq) := 1.
2. [х := 1 + х] Для t = 0, 1, ..., п - 1 (в таком порядке)
и для j = п — 1, ..., г (в таком порядке) вычислить
Cj = Cj+i + Cj. [Этот шаг основан на методе Руффини-
Горнера, который обсуждается в разд. 3.1.2; корни
полинома pti(l + x) на единицу меньше, чем корни
полинома Ри(х), где Ри(х) получается из исходного
полинома р(х) после ряда преобразований.]
3. [Продолжить?] Если cn + cn_iH \-cq < 0, то положить
pq := pq -f 1 и перейти к шагу 2.
4. [х := 1/х] Выдать pq, значение следующего частич-
частичного приближения, заменить коэффициенты (с„, cn_i,
..., с0) на (—с0, — с\, ..., -с„) и перейти к шагу
1. [Корни функции р<,A/1) взаимны (reciprocals) с
корнями полинома ри(х).]
Попробуйте выполнить этот алгоритм для полинома
р(х) = х3 — 2 и аналогичных полиномов.
Раздел 2.3.1
1. Используя рассмотренный в тексте метод решета, пост-
постройте вектор всех простых чисел, не превосходящих 100.
2. Найдите 20 наибольших простых чисел < 215, используя
приведенный в тексте метод.
Раздел 2.3.2
1. Напишите процедуру LCE (Linear Congruence Equation),
которая по заданным ненулепым а, 6 и т > 1 возвращает
140
Целые числа
х, nut, где
t =
0, если ах = b (mod m) имеет решение,
1, если уравнение не имеет решений,
и, если t = 0, то х — наименьшее неотрицательное решение
по модулю п = т/(а,т); см. теорему 2.3.22. Процедура
должна использовать GLE (разд. 2.2.3). Выполните эту
программу для следующих входных данных:
36* = -20 (mod 16),
57* = 148 (mod 38),
22ж = 253 (mod 143),
35* = 9973 (mod 12).
2. Используя LCE, напишите процедуру MODINV, которая
по заданным о^0ит>1 возвращает х nt, где
-1°'
0, если ах = 1 (mod m) имеет решение,
если это уравнение не имеет решений,
и, если t = 0, то х — наименьшее неотрицательное решение
по модулю т. Выполните программу для следующих
входных данных:
32* = 1 (mod 35),
119ж = 1 (mod 12),
74ж = 1 (mod 128),
486ж = 1 (mod 1033).
3. а. Реализуйте GRAk и используйте его для решения
следующих систем:
(i) (ii) (iii)
х = -28 (mod 15), x = 24 (mod 13), x = 6 (mod 23),
x = 18 (mod 22), x - 52 (mod 17), x = -50 (mod 12),
x = -1 (mod 19), * = 27 (mod 31).
b. Модифицируйте алгоритм так, чтобы он возвра-
возвращал наименьший по абсолютной величине остаток,
LAVGCR.A, и выполните его для указанных выше
входов.
Исторические замечания и литература 141
Раздел 2.3.4
Опишем процедуру получения разложения числа г» > 1 на
простые множители. Используя метод решета, построим
таблицу простых чисел ^ i/n и проверим, делится ли п на
простые числа 2, 3, ..., < у/п. Если делителей нет, то п
просто (см. также упр. 2 разд. 2.3.1). Если какое-либо р
делит п, то найдем наибольшую степень е числа р, которая
делит п. Запомним р, е и для нового частного q = п/ре
проверим, делится ли оно на последующие простые числа
< у/п. Если новых делителей не будет найдено, то либо
q = 1 и все простые делители уже найдены, либо а/п < q < п
и q — еще один простой делитель (п может иметь не более
одного простого делителя > -у/гГ). Напишите процедуру
FACT, находящую разложение на простые множители для
чисел п ^ 215 — 1 = 32767. Вам потребуется таблица
простых чисел < [\/2"] = 181. Используйте эту процедуру
для разложения чисел 9583, 9973, 16384, 17017 и 29957.
Исторические замечания и литература
1. Наше представление теории множеств «наивно», потому
что мы предполагаем, что любое внушающее доверие описание
определяет множество. В начале нашего столетия Бертран Рас-
Рассел удивил логиков и математиков, выведя несколько логических
противоречий в наивной теории множеств. Рассмотрим множес-
множество у = {х : х ? х}, т.е. множество, содержащее все множества,
которые не содержат себя в качестве элемента. Для наших целей
не важно знать, существует ли множество, которое содержит себя
в качестве элемента, нас заботит, что у может быть множеством
всех множеств. Возникает вопрос, верно ли, что у € у? Если
у ? у, то у ? у по определению у. С другой стороны, если у ? у,
то у 6 у. Оба случая, как у € у, так и у ? у, ведут к проти-
противоречию. Это — один из парадоксов Рассела, и он аналогичен
парадоксу цирюльника: в деревне живет цирюльник, который
бреет только тех мужчин, которые не бреются сами. Кто бреет
цирюльника? Бреет себя цирюльник или не бреет, оба случая
ведут к противоречию. Усилия развить состоятельную теорию
множеств привели математиков к построению аксиоматической
142 Целые числа
теории множеств, которая указывает точные способы, как может
быть построено множество. Однако если не забираться слишком
глубоко и использовать теорию множеств преимущественно как
инструмент, то годится наивная теория множеств.
2. Леонардо Пизанский, широко известный как Фибоначчи, был
одинокой звездой первой величины на темном математическом
небосклоне средневековья. Он жил около 1200 г., много путешес-
путешествовал по Аравии и с помощью своей «Книги абака» принес в
Европу индо-арабскую числовую систему и другие достижения
Востока.
3. Интересно отметить, что в 1896 г., почти через сто лет после
того, как были сформулированы гипотезы Гаусса и Лежандра,
Адамар и Валле Пуссен доказали «теорему о простых числах»,
пользуясь «аналитическими» методами, т.е. математическими
средствами, не относящимися к области целых чисел. Первое
доказательство без использования таких средств было получено в
1949 г. (Эрдёш).
4. Пьер Ферма сформулировал свою «малую теорему» в письме
к другу Френиклу де Бесси 18 октября 1640 г. Модулярная ариф-
арифметика была изобретена и сформулирована Карлом Фридрихом
Гауссом.
5. Кармайкловы числа были названы по имени американско-
американского математика Кармайкла (R.D. Carmichael), исследовавшего их
свойства в 1909 г.
6. В литературе греко-китайская теорема об остатках называ-
называется просто «китайской теоремой об остатках» и приписывается
Сунь-Цзы, жившему в первом1) веке нашей эры. В своей книге
«Суань-Цзинь» («Математический трактат») Сунь-Цзы дает пра-
правило «тья-тен» (= большое обобщение) определения натурального
числа, дающего остатки 2, 3, 2 при делении на 3, 5, 7 соответс-
соответственно. Однако греческий математик Никомах из Герасы, также
живший в первом веке нашей эры, упоминает подобную задачу
в своей книге «Введение в арифметику», а именно он вводит как
игру метод для определения натурального числа по остаткам,
полученным от деления этого числа на другие натуральные числа
(Nicomachi Geraseni Pythagorei Introductionis Arithmeticae, Libri II,
Lipsiae, 1866). Эти методы сходны, и мы отдаем должное обо-
обоим. (Следует также отметить, что Никомах был пифагорийским
философом и что решето Эратосфена описано в его книге.)
1)
По другим данным — в III в. н.э. — Прим. ред.
Исторические замечания и литература 143
Абрамов С.А. Некоторые оценки, связанные с алгоритмом Евк-
Евклида, Журнал выч. мат. и мат. физ. 19, 756-760, 1979.
Абрамов С.А., Рыбин СИ. Обобщение бинарного алгоритма
вычисления наибольшего общего делителя целых чисел. В кн.
Вопросы математической логики и теории алгоритмов, 34-37,
ВЦ АН СССР, Москва, 1988.
Adleman L.M., Pomerance С, Rumely R.S. On distinguishing prime
numbers from composite numbers, Annals of Mathematics 117, 173-
206, 1983.
Bradley G.H. Algorithm and bound for the greatest common divisor of n
integers, Communications of the ACM 13, 433-436, 1970.
Childs L. A concrete introduction to higher algebra. Springer-Verlag,
New York, 1979.
Cohen H., Lenstra H.W. Jr. Primality testing and Jacobi sums. Re-
Report 82-18, Mathematical Institut of the University of Amsterdam,
Amsterdam, 1982.
Dickson L.E. History of the theory of numbers. Chelsea, New York, 1952.
Dirichlet P.G.L. Abhandlungen der koeniglichen preussischen Akademie
der Wissenschaften, 1849, 69-83.
Dixon J.D. Asymptotically fast factorization of integers. Mathematics of
Computation 36, 255-260, 1981.
Dixon J.D. Factorization and primality tests. American Mathematical
Monthly 91, 333-352, 1984.
Dudley U. Formulas for primes. Mathematics Magazine 56, 17-22, 1983.
Erdoes P. On a new method in elementary number theory which leads
to an elementary proof of the prime number theorem. Proceedings of
the National Academy of Sciences (USA) 35, 374-384, 1949.
Goldstein L.J. A history of the prime number theorem. American
Mathematical Monthly 80, 599-614, 1973.
Gregory R.T., Krishnamurthy E.V. Methods and Applications of Error-
free Computation. Springer-Verlag, New York, 1984. [Имеется
перевод: Грегори Р., Кришнамурти Е. Безошибочные вычис-
вычисления. Методы и приложения. — М.: Мир, 1988.]
Guy R.K. How to factor a number. Congressus Numerantium XVI, Pro-
Proceedings of the Fifth Manitoba Conference on Numerical Mathematics
(Winnipeg, 1976) pp. 49-89.
Knuth D. The art of computer programming. Vol. 2. Seminumerical
algorithms. Addison-Wesley, Reading, MA, 1969. [Имеется перевод:
144 Целые числа
Кнут Л. Искусство программирования для ЭВМ. Т. 2. — М.:
Мир, 1977.]
Lagrange J.L. Traite de la resolution des equations nutneriques. Paris,
1798.
Lame Gabriel. Note sur la limite du nombre des divisions dans la
recherche du plus grand commun diviseur entre deux nombres entiers.
Comptes Rendues de I'Academie des Sciences (Paris) 19, 867-870,
1844.
Lang S., Trotter H. Continued fractions for some algebraic numbers.
Journal fuer die reine und an ge wan die Mathematik 255, 112-134,
1972.
Legendre A.M. Theorie des nombres. Paris, 1798.
Lehman R.S. Factoring large integers. Mathematics of Computation 28,
637-646, 1974.
LeVequeW.J. Fundamentals of number theory. Addison-Wesley, Reading,
MA, 1977.
Levinson N. A motivated account of an elementary proof of the prime
number theorem. American Mathematical Monthly 76, 225-245, 1969.
Lipson J.D. Elements of algebra and algebraic computing. Addison-
Wesley, Reading, MA, 1981.
Lucas E. Theorie des nombres. Blanchard, Paris, 1961.
Mills W.H. A prime representing function. Bulletin of the American
Mathematical Society 53, 604, 1947.
Morrison M.A., Brillhart J. A method of factoring and the factorization
of F7. Mathematics of Computaion 29, 183-205, 1975.
Motzkin T.S. The Euclidean algorithm. Bulletin of the American
Mathematical Society 55, 1142-1146, 1949.
Niven I., Zuckerman H.S. An introduction to the theory of numbers, 4th
ed. Wiley, New York, 1980.
Olds CD. Continued fractions, Random House, New York, 1963.
Pomerance C. Recent developments in primality testing. The Mathematics
Intelligencer 3, 97-105, 1981.
Pratt V.R. Every prime has a succinct certificate. SI AM Journal of
Computing 4, 214-220, 1975.
Rabin M.O. Probabilistic algorithm for testing primality. Journal of
Number Theory 12, 128-138, 1980.
Richards I. Continued fractions without tears. Mathematics Magazine
54, 163-171, 1981.
Исторические замечания и литература 145
Schroeder M.R. Number theory in science and communication. Springer-
Verlag, New York, 1984 and 1986 Bnd ed.)
Scott N.R. Computer number systems and arithmetic. Prentice-Hall,
Englewood Cliffs, N.J., 1985.
Sims C.C. Abstract algebra, a computational approach. Wiley, New York,
1984.
Solovay R., Strassen V. A fast Monte Carlo test for primality. SIAM
Journal of Computing 6, 1977, 84-85; erratum ibid., 7, 118, 1978.
Wilf H.S. Algorithms and complexity. Prentice-Hall, Englewood Cliffs,
N.J., 1986.
Williams H.C. Primality testing on a computer. Ar» Cembmatofia 5,
127-185, 1978.
Williams H.C. The influence of computers in the development of number
theory. Computers and Mathematics with Applications 8, 75-93, 1982.
Williams H.C. Factoring on a computer. The Mathematics Intelligencer
6, 29-36, 1984.
Wunderlich M. A running time analysis of Brillhart's continued fraction
factoring method. Number theory Cardondale 1979, Lecture notes in
Mathematics no. 751. Springer-Verlag, Berlin, 1979, pp. 328-342.
10-274
Глава 3
Полиномы
В этой главе мы познакомимся с полиномами; мы обнаружим,
что с многих точек зрения полиномиальная арифметика родствен-
родственна арифметике целых чисел: для полиномов имеется некоторая
версия алгоритма Евклида и даже греко-китайская теорема об
остатках. И еще многое из того, что мы узнали о целых числах
(системы вычетов и т.д.), можно обобщить на полиномы, и здесь
имеется бесконечно много приложений. Наиболее важным прило-
приложением полиномов с целыми коэффициентами является построение
полей Галуа, которые играют ключевую роль в вычислительных
науках.
ЗЛ
Основные понятия
В этом разделе мы формально вводим полиномы и исследуем
различные алгоритмы выполнения операций над ними. Мы будем
главным образом интересоваться полиномами над кольцом целых
чисел и над (конечными) полями. Читатель должен помнить об
этом при изучении материала, поскольку полиномы по-разному
«ведут себя» над этими двумя различными алгебраическими
структурами.
3.1.1. Основные сведения о полиномах
Пусть J — область целостности их — неизвестная, т.е. х — это
не независимый элемент области J, а просто формальный символ.
Выражение вида
р(х) = спхп + Cn-i
р(х) = сохп + cixn
+
f- схх + с0,
cn-ix + с„,
или
где с,- е J, t = 0,1,..., п, называется полипомом от х с коэффици-
коэффициентами из J или полиномом от х над J; в этой книге мы будем
использовать обе формы записи полиномов. Каждое выражение
с,ж: называется членом степени j полинома р(х). Если коэффици-
коэффициент при хп не равен 0, то п — степень полинома; она обозначается
Основные понятия 147
deg[p(z)]; коэффициент при хп называется старшим коэффициентом
полинома р(х) и обозначается 1с[р(аг)]; если 1с[р(а;)] = 1 (единичный
элемент области J), то полином называется нормированным. При
описании полиномов мы обычно будем использовать неизвестную,
но в некоторых случаях, в частности при умножении или делении,
полином будет представляется только своими коэффициентами,
т.е. будет рассматриваться как кортеж коэффициентов.
Два полинома Pi(x) = ?o<<<m ctx{ ф 0 и р2(х) = ?0<,<n dixi ф О
с коэффициентами в J равны тогда и только тогда, когда с0 =
d0, ex = d\,... ,с,- = di,... для всех г. Для этих полиномов р\(х) и
р2(ж) определяем их сумму и произведение следующим образом:
= ? «** + ? **'=
= E
E
Ясно, что и сумма, и произведение полиномов Pi{x),p?{x) пре-
представляют собой некоторый полином от г с коэффициентами из
той же самой области целостности J. Мы можем теперь лег-
легко показать, что множество полиномов от i с коэффициентами
из области целостности / само является областью целостности,
обозначаемой J[x]. (J[x] содержит как J, так и неизвестную х.)
Чтобы в этом убедиться, рассмотрим полиномы Pi(x) и р?{х),
определенные выше; покажем, что р\(х) -рг(^) ф 0, где 0 обоз-
обозначает нулевой полином 0 + Ох + Ох2 + .... Предположим, что
deg[pi(a:)] = т и deg[p2(a:)] = n, так что ст ф 0 и dn ф 0. Отсюда
следует, что cmdn ф 0, поскольку ст и dn являются элементами
области целостности J. Однако Cmdn — это коэффициент при
хт+п в Произведении рг(х) -Р2(х); следовательно, Pi(x) -ръ{х) ф 0,
что означает отсутствие в J[x] делителей нуля.
Следует заметить, что равенство полиномов, как оно определено
выше, — это не то же самое, что равенство функций, несмотря
на то что любой полином р(х) из J[x] определяет на J функцию
путем подстановки, т.е. функция, определенная полиномом р(х),
отображает любой элемент j из J в p(j). Однако, как вы помните,
две функции равны в точности тогда, когда они имеют равные
значения для каждого элемента из /, и возможно, что два полинома
определяют одну и ту же функцию на J, не будучи равными как
полиномы. Например, в кольце 2г[х] полиномы pi(x) = я3 — 1
и Р2(х) = х5 — 1 не равны как полиномы, но pi@) = Рг(О) = li
ю*
148 Полиномы
Pi(l) = РгA) = 0, так что они равны как функции на Z2[x]. В
общем случае если J — область целостности с п элементами
ao,ai,.. .,an_i, где ао,ai — нуль и единица соответственно, то
полином
р(х) = х(х - ai)(x - а2) ... (ж - an_i) ^ О
равен нулю для всех х из J, и поэтому определяет функцию,
равную функции, определенной нулевым полиномом. Мы далее
докажем, что если область целостности J содержит бесконечное
число элементов, например J = Ж, то два полинома, определяющие
одну и ту же функцию на J, должны быть равны как полиномы.
Тот факт, что мы можем ставить полиному в соответствие целое
число ^ 0, его степень, является чрезвычайно полезным, потому
что это позволяет нам переносить на полиномы доказательства по
индукции того же типа, что мы использовали для целых чисел.
Ниже приводятся приложения.
Рассмотрим полином р2(х) ф 0 [мы говорим, что р2(х) — не
тождественный нуль]. Полином Р\{х) делится на полином р2(х),
если существует полином q(x), такой, что р\{х) = р2(х) • q(x); в
этом случае мы пишем p2{x)\pi(x). Степень полинома р2(х) не
превосходит степени полинома pi(x), если, конечно, р\(х) ф 0;
р2(х) называется делителем или сомножителем полинома р\{х).
Отметим, что определенная так делимость не совпадает с введен-
введенной ранее делимостью целых чисел; например, 5|7 имеет место,
если J = Q и 5 и 7 рассматриваются как полиномы степени 0, в то
время как целое число 5 не делит 7.
Теорема 3.1.1 (свойство евклидовости). Пусть J — область
целостности; кроме того, пусть р\(х) — стхт + Cm^ix'1 + • • • +
cix + co ирг(х) = dnxn + dn-ixn~l-\ \-dix + d0 ф 0 — два полинома
степеней га и г» в кольце J[x], и пусть dn обратим в J. Тогда
существуют единственные полиномы q(x) и г(х) в J[x] (частное и
остаток соответственно), такие, что
pi{x) = p2(x)q(x) + r(x), deg[r(z)] < deg[p2(x)].
Доказательство. Воспользуемся индукцией по степени делимо-
делимого pi(x). Если pi(x) = 0 или deg[pi(x)] < deg\p2(x)], то по-
положим q(x) = 0 и r(x) = Pi(x). В противном случае,' пусть
deg[pi(x)] = deg\p2(x)] + k, k ^ 0, и образуем полином р'^ж) =
Pi{x) - (cm/dn)xkp2(x). Тогда deg[pi(a:)] < degfr^ar)], посколь-
поскольку мы уничтожили старшую степень неизвестной х. Если
Основные понятия 149
р[(х) = 0 или degfp^x)] < deg[p2(a;)], то все доказано, в против-
противном случае по индукции р^аг) = p2(x)q0(x) + r(x) для некоторых
qo(x) и г(х), таких, что deg[r(a;)] < deg|^3(x)]. Поэтому pi(x) =
P2(x)[qo(x) + (cm/dn)xk] + г(х), что доказывает существование по-
полиномов q(x), r{x). Ясно, что q(x) и г(х) - полиномы в кольце J[x] и
либо г(х) = 0, либо deg[r(a;)] < deg[p2(a;)]. Для доказательства един-
единственности предположим, что существует другая пара qi(x),r\(x),
такая, что pi(a;) = p2{x)qi{x) + гг(х), deg[rj(x)] < deg\p2(x)]. Тогда
ri(x) = P2(z){qi(x) — q(x)] и рг(х)|[г(а;) — ri(x)], что может иметь
место, только если г(х) — п(х) = 0. Следовательно, г(х) = г\(х) и
q(x) = qi(x). D
В гл. 5 мы обсуждаем, что случится, если dn не является
обратимым в кольце J. Заметим, что если J — поле, то для
наличия свойства евклидовости или деления достаточно, чтобы
полином-делитель р2{х) был отличен от нуля.
Мы имеем следующую процедуру, которая является хорошо
известным синтетическим алгоритмом деления:
PDF. Полиномиальное деление над полем (Polynomial Division
over a Field)
Вход: pi(x) = ?o<i<mс(х{; и р2(х).=. '?,0^i4ndixi над полем,
m ^ n ^ 0 и dn ^tD. (Этот алгоритм будет работать и над
областью целостности J при условии, что dn обратим в J.)
Выход: q(x) = ?o<i<m-n ?•*' и ]?o<,-<n-i пх\ обладающие свой-
свойством евклидовости (теорема 3.1Л).
1. [Основной цикл] Для к от т — п до 0 выполнять {q\. := cn+»/dn;
для j от г» + к — 1 до к выполнять с,- := с,- — qicdj-k}.
2. [Выход] Вернуть </,, i = 0,1,2,...,т — п, коэффициенты поли-
полинома q(x), вычисленного на шаге 1, и г», i = 0,1,2,..., п — 1,
коэффициенты полинома г(х), где г,- = с,- (с,- также вычисля-
вычисляются на шаге 1).
Анализ времени работы алгоритма PDF. Во все время работы
алгоритма операции сложения, умножения и деления коэффициен-
коэффициентов выполняются в поле (арифметика с одинарной точностью), и
поэтому каждая операция выполняется за время ~ 1.
Шаг 1, основной цикл, очевидно доминирует во времени работы
алгоритма. Этот цикл, очевидно, выполняется (га —п+1) раз и при
каждом выполнении имеет место одно деление и пересчитывается г»
150 Полиномы
коэффициентов. Поэтому шаг 1 выполняется за время О[п(т—п+1)]
и
tpD?\Pl{x), Р2 \Х)\ = 0[я(»71 — П + 1)].
То есть <pdf[pi(*),P2(*)] равняется времени, которое необходимо
для вычисления произведения рз(я)я(х) над полем (точно так же,
как в случае деления целых чисел).
Пример. Рассмотрим полиномы Pi(x) = 7а;5 + 4а;3 + 2х + 1 и
р2(аг) = х3 + 2х + 1 с целыми коэффициентами. Поскольку старший
коэффициент полинома Р2(х) равен 1, мы можем применить PDF и
получить
7 Xs +4х3 +2х + 1
7а:5 +14*2
4х3 -
4*3
+2х
+8
-Ых2 +2ж-7
Если мы будем выписывать только коэффициенты, то получим
следующую таблицу:
7 0 4 0 2
7 0 0 14
1002
704
0
0
4
0
4
4
-14
0
-14
0
2
0
2
0
1
1
8
-14 2 -7
Пусть J — область целостности, и рассмотрим р(х) из J[x].
Если a G J, то можно разделить р(х) на х — а (это может быть
выполнено, поскольку коэффициент при х обратим) и получить
р(х) = (х- a)q(x) + r(x), deg[r(x)] < deg(a; - а) = 1,
т.е. г(я) — константа из кольца J. Мы говорим, что а б J —
корень или нуль полинома р(я), если р(а) = 0.
Имеет место следующая
Теорема 3.1.2. Пусть J — область целостности, р(х) б J[x]
к а & J. Тогда а — корень полинома р(х), если и только если
(х-а)\р(х).
Основные понятия 151
Доказательство очевидно из приведенных выше рассуждений.
Следствие 3.1.3. Пусть J — область целостности, р(х) е J[x] и
а € J. Тогда, если мы разделим р(х) на (х — а), то остаток равен
р(а).
Пример. Рассмотрим полином х2 — х — 2 6 7L[x], имеющий корни
-1 и 2. Тогда, очевидно, (х + 1)|(аг2 - х - 2) и (х - 2)\(х* -х-2);
более того, если мы разделим х2 — х — 2 на х - 3, то получим в
остатке 4 = (ЗJ — C) — 2. В следующем разделе мы увидим, как
эффективно вычислять значение полинома в данной точке.
Если а — корень полинома р(х) и р(х) = (а; — a)mq(x), т ^ 1,
q(a) ф 0, то т называется кратностью корня а; если m = 1, то а
называется простым корнем.
Имеет место следующая
Теорема 3.1.4. Пусть J — область целостности и р(х) ф 0 —
полином из J[x]. Если степень полинома р(х) равна п, то р(х)
имеет не более п корней с учетом кратностей. Эти корни лежат в
J или в большей области.
Доказательство. Предположим, что ai,at2,... ,ат — различные
корни полинома р(х) в J или в большей области. (Случай
кратных корней мы оставляем читателю.) Мы будем доказывать по
индукции, что р(ж) делится на (ат—оц)(х—а2)... (х—ат). Для m = 1
это выполняется по теореме 3.1.2. Пусть предположение индукции
верно для т — 1; тогда р(ж) можно представить в виде р(х) =
(х — oti)(x — at2)... (x — am~i)q(x), для некоторого q(x) 6 J[x]. Однако
прих = ат мы получаем (am-ai)(am-or2)...(am-om_i)g(am) =0;
поскольку все корни различны, отсюда следует, что q(am) = 0.
Снова пользуясь теоремой 3.1.2, получаем q(x) — (х - ат)г(х), и,
следовательно, р(х) = (х — Qi)(x — a2)... (ж — am_i)(ar — am)r{x)\
более того, из последнего выражения видно, что m не может
быть больше, чем г», поскольку при т = п полином г(х) является
константой, и это завершает доказательство теоремы.
Следующий пример показывает, что будет с теоремой 3.1.4,
если J не является областью целостности.
Пример. Рассмотрим полином х2 — 1 с коэффициентами из кольца
Z8, содержащего делители нуля. Этот полином имеет четыре
корня, а именно 1, —1 (или 7), 3 и 5.
152 Полиномы
Следствие 3.1.5. Пусть J — область целостности и р(х) G J[x].
Если степень полинома р(х) равна п и р(х) имеет больше, чем п,
корней, то р(х) = 0.
Теперь можно доказать следующую теорему.
Теорема 3.1.6. Пусть J — область целостности с единицей.
Если она имеет бесконечное число элементов, то два различ-
различных полинома р(х) и q(x) из J[x] всегда определяют различные
полиномиальные функции.
Доказательство. Разность двух данных полиномов р(х)—q(x) = d(x)
определяет функцию dj(x), которая является разностью полино-
полиномиальных функций Pf(x) и q/(x), определенных полиномами р(х)
и q(x) соответственно. Если функции р/(х) и qj(x) равны, то их
разность должна быть равна 0 для любого х из J. Однако из это-
этого следует, что каждый элемент кольца J будет корнем полинома
d(x), т.е. если deg[d(a:)] = пд, то d(x) имеет больше, чем n<i, корней,
откуда следует, что d(x) = 0. Поэтому р(х) = q(x). ?
3.1.2. Метод Руффини-Горнера
В этом разделе мы рассмотрим два эффективных алгоритма,
которые помогут нам A) вычислить значение полинома р{х) в
данной точке х = а и B) вычислить новый полином р(у), где
х = а + у.
Рассмотрим область целостности J[x] и полином
р(х) = со + схх Н h спхп
из этой области, значение которого в точке х = а мы хотим вы-
вычислить. Очевидно, наиболее прямой способ достигнуть этого
состоит в том, чтобы заменить х на а в выписанном полиномиаль-
полиномиальном выражении и вычислять каждый член отдельно. Заметим, что
это довольно трудоемкий процесс. Существует, однако, другой
способ, а именно можно использовать метод Руффини-Горнера.
[Он хорошо известен как метод Горнера, но Руффини опередил
Горнера на 15 лет; см. статью Кайори (Cajori, 1911).]
Метод Руффини-Горнера для эффективного вычисления р{а)
работает следующим образом. Положим ро := сп; умножив это
равенство на о и прибавив cn_i, получим pi := аро + cn_i. Затем,
Основные понятия 153
умножив р\ на а и прибавив с„_2, получим pi := api + cn_2 и т.д.
То есть рекурсивная схема этого процесса такова:
и „
. Рк '•= apk-i + с„_*, к > 0,
и мы получаем вложенную форму
р(а) = с0 + а{а + а[с2 + 1- <*(cn_i + acn)...]}.
Анализ времени работы, метода Руффини-Горнера. Мы
рассмотрим следующие два случая:
Случай а. Коэффициенты полинома р(х) и точка а принадлежат
(конечному) полю. В этом случае мы имеем п операций сложения
и умножения с одинарной точностью, где п = deg[p(r)]; поэтому
р(а) вычисляется за время О(п).
Случай Ь. Коэффициенты полинома р(х) и точка а принадлежат
кольцу целых чисел. В этом случае мы имеем п сложений и
умножений длинных целых чисел, и, как мы отмечали в разд. 1.2,
время умножений доминирует над временем сложений; поэтому мы
предполагаем, что только умножаем п различных членов на а, где
п = deg[p(x)]. Если ft — значение наибольшего члена, полученного
при выполнении метода Руффини-Горнера, то, очевидно,
<r-h[p(z),<*] = O(nL(a)L(p)].
Чтобы оценить ц, положим d = |р(ж)|оо [наибольший по абсо-
абсолютному значению коэффициент р(х)] и рассмотрим «наихудший»
возможный случай, когда все коэффициенты полинома р(х) равны
d; тогда ft получается из следующей схемы:
d
d
d(an
a"
To есть наибольший член, получающийся в течение вычислений, —
это значение р(х) в точке х = а, и ft = d(an + a" + (- а + 1).
Однако ft = d(an + an~1^ ha + 1) ^ rf[(n+l)an] и, следовательно,
tn-H(p(x), a) = 0{nL(a)L[d(n + l)an]}
= 0{nL{a){L{d) + L(n + 1) + nL(a)}).
Однако во всех практических приложениях L(n + 1) = 1, и,
поскольку L(d) + nL(a) ^ nL(a)L(d) + 1, мы имеем
154
Полиномы
Пример. Вычислим значение полинома р(х) = я3 — 7х + 7 в точке
а = 3, работая с целыми числами. Пользуясь методом Руффини-
Горнера, получаем рC) = 13.
1 0 -7
1 3 2
7
13
Мы действуем следующим образом. В первой строке выписываем
все коэффициенты полинома р(х), включая нулевые; старший ко-
коэффициент стоит слева. Вторая строка получается так: первый
(крайний левый) элемент второй строки — это старший коэф-
коэффициент полинома р(х). Этот первый элемент умножаем на а,
прибавляем к произведению второй элемент (первой строки) и
записываем сумму как второй элемент второй строки; в нашем
примере а = 3, и мы имеем 1-3 + 0 = 3. В общем случае, чтобы
вычислить «следующий» элемент второй строки, умножаем пос-
последний вычисленный элемент второй строки на а и прибавляем
к произведению «следующий» коэффициент из первой строки.
Таким образом, продолжая наш пример, мы имеем 3-3-7=2 и
2 • 3 + 7 = 13, что дает рC).
Заметим, что рC) = 13, последний элемент второй строки
в приведенном примере, — остаток, полученный при делении
х3 — 7х + 7 на х — 3. Частное q(x) этого деления также вычисляется
в упомянутой выше схеме и получается из остальных элементов
второй строки; а именно q(x) = х7 + Зх + 2. Этот метод известен
также как синтетический алгоритм деления.
Рассмотрим теперь в области целостности J[x] следующий
полином от х:
рп(х)=
= соа:п
(RH1)
из которого мы хотим получить другой полином от у, где х —
а + у. Очевидно, что полином от у может быть вычислен с
использованием теоремы о разложении Тейлора, согласно которой
р(а + у) = Ylo<i<nb)(''\a)/^]y'- Однако мы можем действовать
лучше; заметим, что эта подстановка дает уравнение от у с
коэффициентами 6,-, как показывают следующие соотношения:
сх-<=
= Е ь*уп~'= Е ?*-«)"
(RH2)
Основные понятия 155
Используя первое и последнее выражения в (RH2), мы покажем,
что коэффициенты 6,- преобразованного полинома могут быть полу-
получены последовательным применением синтетического алгоритма
деления.
Мы можем написать
(RH3)
— коэффициент Ьп в
где pn-i(x) — полином степени п - 1, а г„
(RH2). Если мы выразим pn_i(ar) в виде
i, (RH4)
подставим в (RH3) и приравняем коэффициенты при одинаковых
степенях х в обеих частях равенства, то получим
оо = со, aj=cj+aaj-i, j = l,2, ...,n, (RH5)
что является синтетическим алгоритмом деления, рассмотренным
выше. Заметим, что последний коэффициент ап ¦—¦ в точности
остаток гп в (RH3), или коэффициент Ьп в (RH2).
Дальнейшее применение того же самого процесса v-pn-i{x) дает
pn-i(x) = (х- а)рп_2(х) + г„_ь
(RH6)
где pn_2(x) — полином степени п — 2. Сочетая (RH3) и (RH6), мы
получаем
г„.
р„(х) = (х- аJрп-2(х) + г„_! •(*-
Если процесс повторить п раз, то получим
рп(х) = го-(х- а)п + п • (* - а)" + • • • + г„,
где коэффициенты г,- — это коэффициенты 6,-, появляющиеся как
остатки при каждом применении алгоритма (RH5). В частности,
при а = 1 этот алгоритм не требует умножений, поэтому пре-
преобразование х — у + 1. можно выполнить очень эффективно. Мы
оставляем читателю в качестве упражнения показать, что для
вычисления р(у), где х = а + у, необходимо время
156
Полиномы
Пример. Рассмотрим полиномиальное уравнение р(х) = х3 — 1х +
7 = 0, для которого мы хотим вычислить полином рA + у). По-
Повторным применением синтетического алгоритма деления преоб-
преобразованный полином от у может быть получен двумя следующими
способами:
Руффини A804)
10-7 7
1 1 -6 1
1 2 -4
1 3
1
Горнер A819)
10-77
11-6/
1 2 -4
1 3
1
В обоих случаях преобразованное уравнение от у имеет вид
у3 + Зу2 — 4у + 1 = 0. (В каждом случае читайте коэффициенты
последнего столбца снизу вверх.)
3.1.3. Интерполяция надполем
Пусть теперь J — поле, и рассмотрим совокупность п+1
«пробных» точек (а,-,6<) ? J х J, i = 1,2,... ,п + 1 и а^ различны.
Тогда задача интерполяции над J состоит в том, чтобы найти
полином р(х) б J[x], такой, что
р(а;) = Ь{, t = 1,2 п+1.
Задача интерполяции имеет важное значение во многих облас-
областях математики, и в этом разделе мы рассмотрим два метода ее
решения. (В гл. 6 мы воспользуемся интерполяцией для получения
сомножителей полинома.)
Начнем с интерполяции Лагранжа.
Теорема 3.1.7. Пусть (а,-, 6,) Е J xJ, J — поле, i = 1,2,..., п +1 и
щ различны. Тогда существует единственный полином р{х) € J[x]
степени < п, такой, что p(ai) = 6,-, i = 1,2,... ,n + 1.
Доказательство. (Существование.) Для доказательства существо-
существования р(х) воспользуемся интерполяционной формулой Лагранжа
где
0е ~ а0 • • • 0е ~ ai-i
¦••(*- ап+i)
(а,- - ai)... (а,- - а<_1)(а,' - а,+1) ... (а,- - ап+1)'
Основные понятия 157
Проверкой убеждаемся, что Li(aj) = 0 для i ф j благодаря
сомножителю (uj — a;) в числителе Ц(х), в то время как ?,(а,) = 1;
следовательно, p(ai) = &,-, что и требовалось. Более того, по
построению deg[p(i)] ^ п.
(Единственность.) Предположим, что существует другой поли-
полином pf(x) G J[x], такой, что ^(щ) = р(о.) = &,-, t = 1,2,...,п+ 1.
Тогда полином р'(х) — р(х) имеет, очевидно, п+1 корней, но его
степень ^ п. Из теоремы 3.1.4 видно, что это может быть только
в случае, когда р'(х) — р(х) — 0. Следовательно, р'(х) = р{х).
Пример. Рассмотрим «пробные» точки ai = 0, 61 = 0, a2 =
1, 62 = 1, a3 = —1, 63 = 1, 04 = 3, 64 = 9, и пусть J = Ж.
Заметим, что значения 6, не обязаны быть все различными, и в
примере встречаются одинаковые. Пользуясь формулой Лагранжа
и выполняя вычисления в Ж, мы получаем следующий полином
р(х) 6 Щх]:
(*-0)(я+!)(*-
+ 1
--х\
-1 - 0)(-1 - 1)(-1 - 3)
C - 0)C -
Проверка: р@) = 0, рA) = 1, р(-1) = 1, рC) = 9.
Пример. Вычислим р(х) € 2ц[а;], такой, что р@) = 3, рA) = 2,
рB) = 1 и рC) = 2. Работая с множеством неотрицательных целых
чисел, получаем
- 2)@
-ЗЛ
- 3) J
+ 1
-з).
К*-2I
. B - 0)B - 1)B - 3) J ' "LC-0)C-l)C-2)_
=3 • б^3 + 5а:2 + 5) + (ж3 + 6ж2 + 6х)
+ 9'V + 7х2 + Зж) + 2 • 6-V + 8х2 + 2аг)
=4ж3 + Юж2 + 7а: + 3.
Проверка: р@) = 3, рA) = 2, рB) = 1, рC) = 2 над Zn.
Посмотрим теперь, как решать задачу интерполяции с исполь-
использованием греко-китайской теоремы об остатках.
158 Полиномы
Из следствия 3.1.3 мы знаем, что если разделить р(х) е J[x] на
(х — а), а ? J, то в остатке получим р{а), т.е.
р(х) = (х - a)q(x) + р(а).
Поэтому (х - а)|(р(ж) — р(а)), а следовательно,
р(а) = Ь тогда и только тогда, когда р(х) = 6 [mod (я — а)].
Если рассматривать 6 как полином-константу, то видно, что
мы ввели в J[x] отношение сравнимости по модулю полинома.
Сравнимость по модулю полинома т(ж) обладает свойствами,
аналогичными свойствам сравнимости mod m для целых чисел,
и все факты относительно сравнимости, полученные для целых
чисел, остаются справедливыми для сравнимости по модулю т[х).
Учитывая, что мы хотим найти р(х) € J[x], такой, что
р(х) = Ь{ [mod (ж - a,)], t = 1,2,... ,п+ 1,
легко убеждаемся, что задача интерполяции — это частный слу-
случай греко-китайской задачи об остатках над J[x].
Теперь, конечно, модули — это линейные полиномы, но посколь-
поскольку все at различны, то различны и полиномы (ж—а;); следовательно,
они удовлетворяют ограничению быть попарно взаимно просты-
простыми. (См. теорему 6.2.12 и окружающий ее текст для формального
распространения греко-китайской теоремы об остатках на полино-
полиномы. Также аналогично случаю целых чисел два полинома взаимно
просты, если любой их наибольший общий делитель — константа;
см. также следующий раздел.)
Следующая теорема покажет нам, как приспособить к нашим
потребностям греко-китайский алгоритм, представленный в гл. 2.
Теорема 3.1.8. Пусть дано поле J, р(х) ? J[x] и а е J) тогда
a. р(х) [mod (х — а)] = р(«).
b. Если р(а) ф О, то p~l{x) [mod {х —а)}= р~1{а).
Доказательство.
а. Доказательство вытекает из следствия 3.1.3, согласно ко-
которому, чтобы найти остаток от деления р(х) на (х — а),
достаточно просто вычислить значение р(х) в точке х .= а.
Основные понятия 159
Ь. По определению мультипликативного обратного нам нужен
единственный полином v(x) степени < 1[= deg(« - о)], такой,
что
p(x)v(x) = 1 [mod (x — а)].
Поскольку deg[v(a;)] < 1, v(x) — константа; эта константа
равна р~1(а), потому что
[mod {x - а)], или
р{х) •р~1(а) — {р(х) [mod (х -
\р(х) (mod (х - а))]р-1(а) = р(а)р-\а) = 1.
П
Представляем теперь греко-китайский алгоритм, приспособ-
приспособленный к задаче интерполяции.
GCRAn-Interpolation. Интерполяция на основе греко-китайско-
греко-китайского алгоритма
Вход: (а,', 6;) 6 J x J, г = 1,2,..., п + 1, значения а,- различны и
/ — поле.
Выход: р(х) € J[x], такой, что р(а.) = fy, * = 1,2,..., п + 1.
1. [Инициализация] т(х) := 1; р(х) := 6i.
2. [Основной цикл] Для i от 1 до п выполнять {т(х) := т(х) • (ж —
а,); с := ra-^a.+i); q := [bi+l-p(ai+1)]-c; p(x) :=p(x) + q-m(x)}.
3. [Выход] Вернуть р(х).
Анализ времени работы алгоритма GCRAn-Interpolation. По-
Поскольку упомянутый алгоритм используется исключительно над
(конечными) полями, сложение и умножение коэффициентов вы-
выполняется за время ~ 1; более того, в этом случае расширенный
алгоритм Евклида для целых чисел вычисляет мультипликатив-
мультипликативный обратный данного числа за время ~ 1.
Мы ясно видим, что шаг 2 доминирует над временем выполнения
нашего алгоритма. Более того, при i-й итерации шага 2 мы имеем
следующие четыре операции:
1. т(х) := т(х)(х — а^). После этого умножения полином т(х)
имеет степень i; очевидно, это умножение выполняется за
время О(г).
2. с := m~1(ai+i). Как мы знаем, вычисление над полем значения
полинома степени i в данной точке требует времени O(i);
поскольку обращение выполняется за время ~ 1, ясно, что
с := m-1(a,+i) вычисляется за время O(i).
160
Полиномы.
3. q := [61+i — p(a,+i)]c. Полином р(х) в этой точке имеет степень
< i, и, следовательно, p(aj+i) вычисляется за время О(г); это
верхняя граница времени, необходимого для вычисления q,
поскольку вычитание и умножение требуют время ~ 1.
4. р(х) := р(х) + qm(x). Это выполняется за время O(i).
Из приведенных рассуждений мы видим, что г-я итерация
шага 2 выполняется за время O(i), поэтому п итераций шага 2
выполняются за время
что является временем выполнения алгоритма GCRAn-Interpo-
1а t ion.
Пример. Вычислим р{х) ? 2?ц[г], такой, что р@) = 3, рA) = 2,
рB) = 1, рC) = 0. Применяя описанный алгоритм и работая с мно-
множеством неотрицательных целых чисел, мы получаем следующую
таблицу:
i
1
2
3
4
(Ч
0
1
2
3
к
3
2
1
0
т(х)
1
X
х2 + Юх
х3 + 8х2 + 2х
с
-
1
6
2
Я
-
10
0
0
р(г)
3
10а:+ 3
10z + 3
10а:+ 3
Таким образом, р(х) = 10ж + 3 — решение данной задачи ин-
интерполяции. Проверка: р@) = 3, рA) = 2, рB) = 1 и рC) = 0 в
Однако если бы последняя «пробная» точка была оц = 3, 64 = 2
вместо 04 = 3, 64 = 0, то на шаге 2 мы бы получили q = B — 0J = 4
и р(х) = 10ж + 3 + 4(а:3 + 8ж2 + 2а:) = 4а:3 + Юж2 + 1х + 3, что и было
бы решением нашей задачи. Проверка: р@) = 3, рA) = 2, рB) = 1
Читателю следует обратить внимание на то, что точно так же,
как в случае алгоритма GCRAk, решение для (п + 1)-точечной
задачи интерполяции строится следующим образом:
р(х) =?1 + q2(x - ai) + q3(x - ах)(я; - а2)
+ qA{x - а{){х - а2)(х - а3)
- ai)(x - а2)... {х - ап),
Основные понятия 161
где ?1 = 61 G J и qit i > 1, вычисляется на (i - 1)-й итерации
описанного алгоритма. С другой стороны, интерполяционная
формула Лагранжа дает
*<«)=
П
х — aj
Сравнивая две различные формы полинома р(х), замечаем, что
только первая форма расширяема в том смысле, что присоединить
новую «пробную» точку можно, выполнив еще одну итерацию
алгоритма GCRAn-Interpolation. С другой стороны, с добавле-
добавлением новой пробной точки все коэффициенты полинома Лагранжа
должны быть вычислены заново.
3-1>4. Вычисления, использующие схему: (вычисление
значение-интерполяция
Лля наших дальнейших рассуждений нам понадобится следую-
следующее. Полином р(х) в J[x], J — область целостности, называется
простым, если из условия р(х) = pi{x)p2{x), следует, что или
Pi(x), или р2(ж) является обратимым. [Полином р(х) называется
обратимым, если существует другой полином q(x), такой, что
p(x)q(x) = 1.] Полином р(х) в J[x], J — область целостности, назы-
называется неприводимым, если из условия р(х) = Pi(x)p2(x), следует,
что или Pi(x), или Ръ(х) является полиномом нулевой степени, т.е.
принадлежит J. Очевидно, что всякий простой полином является
неприводимым, но обратное утверждение в общем случае неверно.
Заметим, что если J — поле, то все обратимые полиномы являются
полиномами нулевой степени (константами); значит, в этом слу-
случае, для того чтобы полином р(х) был прост, необходимо, чтобы
хотя бы один из полиномов pi(x), и р2{х) был константой, т.е. над
полем понятия неприводимого и простого полинома совпадают.
Пример.
1. За;2 + 3 неприводим над Ж.
2. За:2 + 3 = 3(х2 + 1) не будет простым над Z, поскольку ни 3,
ни х + 1 не являются обратимыми в кольце Щх], однако этот
полином неприводим над 7L.
3. х2 + 1 неприводим над Z, Q или Ж, но приводим над С
х2 + 1 = (х + i)(x - »).
4. х2 — 2 неприводим над Q, поскольку д/2 ? Q.
11-274
162 Полиномы
Точно как же, как мы определили =т в Z, мы можем теперь
определять отношение эквивалентности в J[x], где J — поле.
Пусть т(х) = хп-\ H/^^+A'iz+A'o — нормированный полином
в J[x] степени п > 0. Тогда для любого р(х) € J[x] мы имеем
р(х) = m(x)q(x) + r(x), deg[r(x)] < deg[m(x)].
Остаток г(х) в приведенных соотношениях обозначается гт^\р{х)\
или, эквивалентно, р(х) [mod т.(х)]. Если р(х) [mod т(ж)] = 0, то
т(х) делит без остатка р(х) и мы пишем т(х)\р(х).
Определим теперь отношение эквивалентности mod m(x) или
=т(х) в кольце J[x] следующим образом:
pi(x) =т(г) Р2(х) тогда и только тогда, когда т(х)\\р1(х)-р2(х)].
Читатель должен проверить, что это — отношение эквивалент-
эквивалентности. Мы затем определяем J[x]/ =m(y) или просто J[x]m^ =
{р(х) € J[x] : deg{p(x)] < deg[m(z)]}; каждый класс эквивалентнос-
эквивалентности, обозначаемый [p(z)]m(*) или просто [р(ж)], имеет единственный
представитель в J[i]m(r), а именно rm^]p(x)], deg[r(x)] < deg[m(x)].
Определим сложение и умножение классов эквивалентности фор-
формулами
\Pl(*)]m(x) + \Р2(*)]т(х) = Ь>\ («) + Рг{*)]т(х),
Легко показать, что определенные таким образом операции пре-
превращают •7[z]m(s) в кольцо (аналог теоремы 2.3.П.).
Мы можем рассматривать J как подмножество кольца <7[я]т(л)>
отождествляя а 6 J с [а]т(х). [Это может быть сделано, потому что
если [а]т(х) = Mm(i) Для а,Ь в J, то полином т(х) должен делить
а—Ь; однако deg[m(:c)] > 1, так что полином а — Ь должен быть нуле-
нулевым, следовательно, а = Ь в J. Таким образом функция, которая
отображает а из J на [а]т(х) из J[x]m^, взаимно однозначна, и мы
можем отождествлять а с [о]т(ат)-] Следовательно, каждый элемент
кольца J[x]m(j:) — это элемент кольца J плюс Jfxj-кратное элемен-
элемента [ж],,,^). Если мы положим а = [х]т(х\, то каждый элемент кольца
J[x]m(x) имеет вид т„_1а"~1Н (-т2а^-|-т1а-|-то, где т,- принадле-
принадлежит J для всех i; это то же самое, что сказать, что каждый элемент
кольца J[x]m(x) — это единственная J-линейная комбинация эле-
элементов l,a,a2,... ,an~1. Поэтому удобно представлять элементы
Основные понятия 163
кольца •7[z]m(s) как полиномы кольца J[x], вычисленные в точке
« = Ит(*), где гп(а) = 0, поскольку т(а) = [т(х)]т(х) = [0]т(а;).
Если мы представляем элементы кольца J[x]m(x-) (также обоз-
обозначаемого J[a\) как полиномы от а, то сложение и умножение в
J[a] совпадают со сложением и умножением значений полиномов,
вычисленных в точке а. Более того, при умножении в J[a] полезно
иметь таблицу, выражающую степени а между п и 2п — 2 в тер-
терминах полиномов от а степени < п. (Значение этого факта мы
оценим позже.)
Пример. Если J — Ж, то нормированный полином т(х) = х2 + 1
неприводим в Ж[х]. Из предыдущего обсуждения следует, что
каждый элемент кольца К[ж](гз+1) имеет вид a + b[x]^+1^,a,b € Ж.
Если мы положим i — [ж](хз+1), то заметим, что
2 = [* V+D = [*2+1 - i](.»
Тогда сложение и умножение — те же, что и для полиномов;
например,
(a + ib)(c + id) = ac + i(ad + be) + i2bd.
Чтобы выразить этот результат в виде полинома от t степени
^ 1, используем то, что г2 = —1, и получим
(a + ib)(c + id) - ac-bd+ i(ad + be).
Более того, заметим, что K
или b ф 0, то
— поле, потому что если a
Поэтому R[a;](j.a+1) выглядит точно так же, как С.
Пример. Рассмотрим нормированный полином т(х) = х2 + х + 1,
который неприводим над Z2, и пусть J[x] = ^[ж]. Тогда множество
7Li\x\l =m(x) содержит элементы {[0], [1], [х], [1 + х]}. Все операции
на этих элементах выполняются по модулю т(х), т.е. все они
выполняются по правилам кольца Zi[x], а результаты заменяются
их остатками от деления на т(х). Так,
[a?+l]-[i + l] + H = (х+1)(х+1) + х = (х2 + 1) + х = (х2 + х+1) = [0].
Заметим также, что
[х] ¦ [х + 1] = (х2 + х) = (*2 + х + 1) + 1 = [1],
так что [ж] = [х+1] в 7L<^x\l =m(r). Таким образом, мы построили
поле с 4 элементами.
11*
164
Полиномы
Теорема 3.1.9. Если J — поле, то /[г]т(«г) — коммутативное
кольцо с единицей. Оно является полем тогда и только тогда,
когда полином т(х) неприводим в J[x].
Доказательство. Доказательство аналогично доказательству те-
теоремы 2.3.11. Например, тот факт, что J[x]m^x) удовлетворяет
аксиомам коммутативного кольца с единицей, следует из того, что
J[x] удовлетворяет тем же самым аксиомам.
Теперь, чтобы показать, что J[x]m(x) является полем, если
полином т(х) неприводим, мы должны проверить, что ненулевые
элементы обратимы. Пусть р(х) - любой ненулевой полином
степени < п = deg[m(a;)]; тогда р(х) и т(х) взаимно просты и, как
мы увидим в следующем разделе, существуют полиномы f(x) и
д(х), такие, что р(х)д(х) + m(x)f(x) = 1. Тогда, вычисляя значение
последнего выражения в точке а, где а = [«]„,(*) и т(а) — О,
получаемр(а)д(а) = 1 в J[a;]m(x), и, значит, р(а) обратим в J[x]m^.
Поскольку это верно для любого ненулевого элемента кольца
J[x]m(x), 9T0 кольцо является полем. Доказательство обратного
утверждения оставляется читателю в качестве упражнения. D
Из приведенных рассуждений видно, что мы имеем способ
построения новых полей. Мы просто берем неприводимый полином
т(х) в J[x] и рассматриваем •7[я]т(в) — вот вам и поле.
Поле вида ./[zjm^) называется простым расширением поля J, и
ниже мы увидим некоторые приложения таких полей.
Как мы уже видели при изучении целых чисел, если мы хо-
хотим вычислить окончательный результат, res, выражения с це-
целыми аргументами, часто легче воспользоваться окольным пу-
путем; то же самое верно для вычисления значений выражений с
полиномиальными аргументами. Предположим, например, что
мы хотим вычислить окончательный результат res(a;) выражения
e[i1(x),i2(x),... ,ih(x)] над J[x], где J — полеиц(х),... ,ih(x) € J[x].
Если работа над J[x] «трудна», то мы можем работать над по-
полями J[x]mk(x) для различных к, где гпк(х) = х — ак, очевидно, —
неприводимый полином, ак € J. В этом случае, однако, мы дол-
должны знать границу для deg[res(z)]; например, если мы знаем, что
deg[res(a:)] ^ п, то индекс к пробегает значения 1,2,..., п+1. Более
того, заметим, что в результате нашего выбора полиномов тк(х)
поле /[z]m([(x) совпадает с J для любого к, и, таким образом,
вычисления не представляют труда.
Окольный подход работает следующим образом. Для к =
1,2,... ,п + 1 мы сначала вычисляем ij(ak), j = 1,2,...,/», а*за-
Основные понятия
165
тем при условии, что мы выбрали точки ак так, что выраже-
выражения етк определены, получаем resmk = Ьк = emjk[t1(at),...,**(ai)].
Окончательный результат res(:r) получается тогда при помощи
интерполяции по выбранным точкам (at,bk), к = 1,2,. ..,п + 1,
и удовлетворяет условию res(at) = Ьк, к = 1,2,...,п + 1. (См!
рис. 3.1.1.)
J[x)
Выражение
е[»1 (*),...,»*(*)]
Вычисления |
над J[x] i
Результат[ге8(ж)]
Рис. 3.1.1.
Окольная схема вычисления выражения, использую-
использующая схему: (вычисление значения)-интерполяция.
Пример. Работая над Zn[x], вычислим произведение полиномов
Pi(x) = 5х+2 и р2(х) = 8х2+3, используя схему, представленную на
рис. 3.1.1. Заметим, что степень полинома р(х) = Pi(x)p2(x) меньше
или равна 3, следовательно, мы должны вычислять значения в 4
точках, т.е. * = 1,2,3,4. Полагая (ц = 0, а2 = 1, а3 = 2 и а4 - 3 и
вычисляя {Pl(x) [mod (x - ак)]}{р2(х) [mod (x - ак)]}, к = 1,2,3,4,
над 2ц, получаем следующие точки:
Эквивалентное выражение
етЛ'1(а*).---,«лЮ]
| Вычисления
1над J[x]mk{x)
Эквивалентный результат
x) = 6*
PiB)p2B) = l-2 = 2=63,
PiC)-p2C) = 6-9=10 = &4.
Имея 4 пробные точки, применяем алгоритм GCRAn-Interp
1а t ion:
i a,- b{
m(x)
p(x)
1
2
3
4
0
1
2
3
6
0
2
10 x3
1
X
x2 + Юг
+ 8а;2 + 2а:
—.
1
6
2
5
4
7
7а;3
6
5а: + 6
Ах2 + х + 6
+ 5а;2 + 4а; + 6
166
Полиномы
и получаем р(х) = 7х3+5х2+4х+6 = Eж + 2)(8ж24-3), что совпадает
с ответом, полученным ранее.
Проверка: р@) = 6, рA) = 0, рB) = 2, рC) = 10 над 2ц.
Следует отметить, что мы могли воспользоваться алгоритмом
GCRAn-Interpolation, потому что работали в поле. Наш под-
подход должен быть несколько изменен, если J — только область
целостности, и это — тема последующего обсуждения.
В этом случае мы хотим вычислять окончательный резуль-
результат res(a;) выражения e[ii(x),i2(x),.. .,ih(x)] над Щх], где res(a;),
ii(x),...,ih(x) G Щх]. Следует заметить, что если р(х) =
Е <***€?[*], то
где гт(с) для целого числа с обозначает остаток от деления с
на т. Предположим теперь, что все коэффициенты res,- полинома
res(a;) удовлетворяют неравенствам 0 < res,- < mim^-.-rrij, где
mi,...,my суть j попарно взаимно простых модулей. Тогда для
вычисления гев(ж) окольным методом можно сделать следующее.
Лля к — 1,2, ...,j при условии, что emfc определены, получаем
Iesmk(x) = етк(гтк[ii(x)],...,rmk[ih(x)]) над Zmk[x] и затем решаем
греко-китайскую полиномиальную задачу об остатках
Tes(x) = resmk(x) (mod тк), fc = 1,2,...,;,
для наименьшего неотрицательного решения. [Если мы знаем
границу для абсолютных значений коэффициентов res< полино-
полинома res(a;), то будем искать наименьшее по абсолютной величине
решение.]
Пример. Мы хотим вычислить р(х) = Pi(x) -р2(х), где pi(x) =
и Р2(х) — 8х2 + 3 над Щх]. Мы отмечаем, что все коэффициенты
произведения р(х) не превосходят 40, и, поскольку 3-5-7 > 40,
мы будем использовать только эти три модуля. Лля mj = 3 мы
получаем
гз
Ы*И ¦
= B* + 2)B*2) = х3 + х2.
Лля mi = 5 произведение равно
*)] = B)C*2 + 3) = х2 + 1.
Основные понятия 167
Наконец, для тз = 7 мы имеем
] = (Ьх + 2)(х2 + 3) = 5*3 + 2х2 + х + б.
Итак, мы знаем, как выглядит р(х) (mod пц) для различных
модулей. Чтобы восстановить сам р(х), мы должны решать
систему
р(х) = х3 + х7 (mod3),
р(х) = х + 1 (mod 5),
р(х) = Ьх3 + 2х2 + х + 6 (mod 7).
Ясно, что р(х) = ах3 + Ьх2 + сх + d, где коэффициенты получаются
решением следующих 4 систем:
a=l(mod3), 6 = 1 (mod 3), c = 0(mod3), d=0(mod3),
a = 0 (mod 5), 6 = 1 (mod 5), c = 0(mod5), d=l(mod5),
a = 5(mod7), 6 = 2 (mod 7), с = 1 (mod 7), d=6(mod7).
Применяя 4 раза греко-китайский алгоритм, получаем а = 40,
Ь = 16, с = 15 ud = 6. Другими словами, р{х) = АОх3 + 1бх2 + 1Ьх + 6,
ответ правильный.
Обобщая сказанное выше, мы видим, что существуют приложе-
приложения, в которых сам окончательный результат является полиномом,
задаваемым в виде решения системы полиномиальных сравнений;
т.е.
p(x) = pi(x) (mod mi),
р{х)=рк(х) (mod
где pi, г = 1,2,... ,k, — это полиномы р,- = pOi + рцх Н-рг.х2 + h
р„,ж" е Щх].
Чтобы восстановить р(х), заметим, что для полиномов q(x) =
E« aixi и w(x) = Еоо<" dixi из ZM и m Z+
q(x) = w{x) (mod m), если и только если a,- = dj (mod m),
поскольку т|[д(ж) — w(x)] тогда и только тогда, когда rn\(a.j — dj),
j = 0,l,2,...,n.
Из сделанных замечаний следует, что если модули т,- (дан-
(данных систем сравнений) попарно взаимно просты и мы полагаем
168
Полиномы
М = mirri2 ¦ ¦ ¦ mi,, то система полиномиальных сравнений имеет два
однозначно определенных решения, одно из которых — решение с
наименьшими неотрицательными коэффициентами, а второе — ре-
решение с наименьшими по абсолютной величине коэффициентами.
Любое из этих решений получается п + 1-кратным применением
GCRAk (греко-китайского алгоритма, обсуждавшегося при изу-
изучении целых чисел). Ясно, что время работы этого процесса —
O[nL2(m1m2 •.. m*)].
Наибольшие общие делители полиномов над полем
В этом разделе мы ограничиваем наш анализ полиномами над
полем. Глава 5 целиком посвящена вычислению ¦ наибольших
общих делителей полиномов над кольцом целых чисел — гораздо
более захватывающему сюжету (большой интерес представляет
книга Нетто (Netto, 1896)).
3.2.1. Делимость полиномов
Мы начнем со следующего определения:
Определение 3.2.1. Евклидова область — это область целост-
целостности J вместе с функцией «степени» (или «порядка») d : J\0 —* N,
такой, что
1. dfap,) ? d(n) (pi,P2#0).
2. Для любых элементов р\ и рз из J (р2 ф 0) в J существуют
элементы q и г, обладающие евклидовым свойством pi =
p2q + г, d(r) < d(p2) или г = 0.
Пример (евклидовы области). J = Z с d(p) = \р\ — евклидова
область, потому что длярх.рз € Z, р2 ф 0, существуют q,r, такие,
что
Pi=p2q + r, (Kr<|p2|-
Отметим, что если г ф 0, то г — р2 также обладает свойст-
свойством евклидовости; единственность здесь получается требованием
неотрицательности г. Кроме того, если J — поле, то J[x] с
d\p(x)] = deg\p(x)] — евклидова область, потому что в предыдущем
Наибольшие общие делители полиномов над полем
169
разделе мы видели, что для любых р\(х),р2(х) € J[x], рч(х) ф 0, в
J[x] существуют единственные полиномы q(x),r(x), такие, что
Pi(*) = P2(x)q(x) + r(x), deg[r(z)] < deg[p2(x)].
Пример (неевклидовы области). J = Q, поле рациональных
чисел, с d(p) = \p\ не является евклидовой областью, потому что
d[5 ¦ A/5)] = d(l) < d{b) и первое условие определения 3.2.1 не
выполняется. Кольцо Z[x] с d[p(a:)] = degfp(:c)] также не является
евклидовой областью, потому что если мы разделим, например,
7х5 + 4х3 + 1х + 1 на 5х3 + 2, то частное не принадлежит кольцу
ад.
Определение 3.2.2. Пусть J — область целостности и pi(x),
Р2(х) 6 J[x], p2(x) ф 0. Полином Ph(x) из J[x] называется наиболь-
наибольшим общим делителем полиномов Р\(х) и р2(х), что обозначается
pii(x) = gcd\pi(x)tp2(x)], если выполняются следующие условия:
a- Ph(x)\pi(x) Hph(x)|p2^)-
Ь. Если q(x)\pi(x) и q(x)\p2(x), то deg[q(x)] ^ deg\ph(x)] и q(x)\ph(x).
Ниже мы сосредоточим наше внимание на полиномах от одной
переменной. Изучение полиномов от многих переменных мы
опускаем, потому что с помощью техники вычисления значений и
интерполяции, которую мы излагали в предыдущем разделе, оно
сводится к изучению полиномов от одной переменной.
Мы можем найти наибольший общий делитель двух полиномов
Pi{x)> РгС*) в J[x]> гДе J — область целостности и р2{х) ф 0,
используя несколько раз теорему о делимости (теорема 3.1.1).
Соответствующий процесс назван алгоритмом Евклида для поли-
полиномов и работает следующим образом:
Pi(x)=p2(x)qi(x)+p3(x),
p2(x) = p3(x)q2(x)
) + ph(x),
+ 0.
deg\p3(x)]
deg\p4(x)]
deg[pA(a;)]
deg\p2(x)],
deg[p3(z)],
Поскольку deg[p,-(z)] < deg[p,_i(a;)] для t = 3,4, ...,h, гарантиро-
гарантировано, что эта последовательность делений заканчивается после
самое большее deg\p2(x)] шагов,
170 Полиномы
Теорема 3.2.3. Пусть J — область целостности и Pi{x),pi(x) €
J[x], Р2(х) Ф 0. В описанном выше алгоритме Евклида для
полиномов последний отличный от нуля остаток ри(х) — это
наибольший общий делитель полиномов pi(x) и рз(х).
Доказательство. Из приведенных выше рассуждений видно, что
любой делитель полиномов р?(х) и рз(х) является также делите-
делителем полинома pi(x), а любой делитель pi(x) и рг(х) — делителем
Рз(х). Поэтому общие делители полиномов {pi(x),p2(x)} — так-
также общие делители полиномов {р2(х),Рз(х)}, и, следовательно,
gcd[pi(a;),p2(a;)] = &с<Цр2{х),Рз{х)]- Продолжая таким же образом,
имеем:
gcd\pi(x),p2(x)] = gcd\p2(x),p3(x)] = •• • = gcd\ph-i(x),ph(x)] = ph(x).
Последовательность остатков полиномов, полученная при вы-
выполнении алгоритма Евклида, называется последовательностью
полиномиальных остатков (PRS).
Следует, однако, заметить, что бессмысленно (в общем случае)
говорить о «единственном» наибольшем общем делителе двух
полиномов, поскольку в алгебраической системе J может быть
много обратимых элементов, т.е. если Ph(x) — наибольший общий
делитель полиномов pi(x) и ръ(х), то им является и aph(x), если
а - обратимый элемент, и, обратно, если ри(х) и рт(х) — два
наибольших общих делителя одних и тех же полиномов pi(x),p2(x),
то рн(х) = арт{х) для некоторого обратимого элемента а.
Мы будем говорить, что два полинома р(х) и q(x) ассоциированы,
если каждый из них является скалярным кратным другого. Любой
полином ассоциирован ровно с одним нормированным полиномом;
поэтому, когда рн(х) нормирован, мы можем говорить о единст-
единственном наибольшем общем делителе. (Именно это мы имеем в
виду, когда, несколько небрежно пользуемся терминологией.)
Стоит упомянуть, что в 7L наибольший общий делитель двух
целых чисел не единствен, если мы определяем его как «наиболь-
«наибольший по абсолютной величине»; например, числа 6 и 9 будут иметь
два наибольших по абсолютной величине общих делителя: 3 и —3.
Два полинома в J[x] называются взаимно простыми, если любой
их наибольший общий делитель — обратимая константа из J. В
этом случае мы будем говорить, что единичный элемент кольца
J — их наибольший общий делитель.
Наибольшие общие делители полиномов над полем 171
Ниже мы исследуем алгоритм Евклида для полиномов над
полем — относительно простая процедура. Напротив, вычисление
наибольшего общего делителя полиномов р\(х) ир2(х) в Щх] может
значительно усложняться главным образом потому, что Щх] — не
евклидова область. При попытке вычислять полиномиальный gcd
в Щх] коэффициенты полиномов в последовательности остатков
могут становиться очень большими, и это замедляет вычисления.
Мы будем в гл. 5 исследовать способы обхода этой трудности.
3.2.2. Алгоритм Евклида для полиномов над полем
Пусть теперь J — поле, и пусть pi(x) ир2(х) фО — два полинома
в J[x]. Как мы уже видели, повторным применением алгоритма
деления PDF, описанного в разд. 3.1.1, можно легко вычислить
наибольший общий делитель полиномов pi(x) и Р2(х).
Если Ph(x) — наибольший общий делитель полиномов pi(x)
и рг(ж), то ясно, что ри(х) — делитель каждого полинома из
множества
Pi(x)v(x) + р2(х)и(х),
где v(x) и и(х) — произвольные полиномы из J[x]. Возникает
вопрос, принадлежит ли этому множеству сам ph(x), т.е. можно ли
найти два полинома f(x) и д(х) в J[x], такие, что
Pi(x)g(x) + р2(х)/(х) = ph(x).
Имеет место следующая
Теорема 3.2.4. Пусть J — поле, и рассмотрим полиномы pi (ж),
р2(ж) ф 0 € J[x]. Если Ph(x) = gcd\pi(x),p2(x)], то в J[x] существуют
два полинома u(x),v(x), такие, что
Pi(x)v(x
=ph(x).
Доказательство. Из всех полиномов вида (F), не равных тождес-
тождественно нулю, выберем полином наименьшей степени и обозначим
его Ph(x). Если рл(ж) не делит pi(x), то по теореме 3.1.1 мы имеем
Pi(x) = Ph(x)q(x)+r(x), r(x) ф 0ndeg[r(x)] < deg\ph(x)]. Но тогда по-
полином г(ж) = pi (x) -ph(x)q(x) = pi(x)-{p1(x)v(x) + p2(x)u(x)}q(x) =
pi(a:){l - v(x)q(x)} — p2(x){u(x)q(x)} имеет вид (F), в противоречие
с выбором рн(х). ?
172
Полиномы
Следствие 3.2.5. Необходимым и достаточным условием, чтобы
два полинома р! (г) иргОО из J[x]> J — поле, были взаимно просты,
является существование двух полиномов v(x), и(х), таких, что
pi(x)v(x) +p2(x)u(x) = 1.
Полиномы и(х) и v(x) в теореме 3.2.4 не единственны. Действи-
Действительно, если u(x) = f(x) и v(x) = g(x) удовлетворяют требованиям
теоремы, то им удовлетворяют и полиномы
и(х) = f(x) - t(x)Pl(x), v(x) = д(х) + t(x)pi(x),
где t(x) — произвольный полином из J[x]. (Проверьте это непос-
непосредственной подстановкой.) Поэтому можно выбрать и(х) и v(x)
произвольно высокой степени. Однако для их степеней имеются
ограничения снизу.
Теорема 3.2.6. Пусть J — поле, и рассмотрим полиномы pi(x) и
р2(я) из J[x]. Если рн(х) = gcd[pi(r),p2(*)], то в J[x] существуют
два единственных полинома f(x) и д(х), степени которых меньше
степеней полиномов pi(x) и р2(х) соответственно, такие, что
Р\{х)д{х) + p2(x)f(x) = рЛ(ж).
Доказательство. Для конструктивного доказательства см. ниже
расширенный алгоритм Евклида. П
Все приведенные выше результаты справедливы также для
полиномов с коэффициентами из области целостности с единицей
при условии, что можно применять алгоритм PDF.
ХЕА-Р. Расширенный алгоритм Евклида для полиномов над
полем (Extended Euclidean Algorithm for Polynomials over a Field)
Вход: Pi(x),pt(x) € J[x], p2(x) Ф 0, m = deg^Oc)] ^ deg[p2(ar)] =
n; J — поле.
Выход: Ph(x),f(x),g(x) € J[x], такие, что deg[/(z)] < deg[pi(z)] -
deg\ph(x)], deg[ff(*)] < degfp^a;)] - deg\ph(x)] и ph(x) =
gcd\pl(x),p2(x)] = pi(x)g(x) + p2(x)f(x).
1. [Инициализация] \po(x),pi(x)] := \pi(x),P2(x)];
Наибольшие общие делители полиномов над полем 173
2. [Основной цикл] Пока pi(x) ф 0 выполнять
l]
\po(x),pi(x)} := [pi(x),po(x) - Pi(x)q(x)];
bo(x),gi(x)] := \gi(x),go(x) - gi(x)q(x)];
\fo(x),fi(x)] := [/i(*),/o(*)- fi(x)q(x)]}.
3. [Выход] Вернуть \ph(x),g(x),f(x)] := \p^x),g0(x),f0(x)].
Анализ времени работы алгоритма ХЕА-Р. Ясно, что время
работы этого алгоритма доминируется временем выполнения шага
2.
Поскольку мы работаем в поле, первое выполнение алгорит-
алгоритма PDF требует времени О[п{т — п + 1)], где т = deg[pj(a;)],
n = deg[p2(r)], m ^ п, и т — п = deg[g(a;)]; кроме того, первое выпол-
выполнение каждого из полиномиальных умножений pi(x)q(x), gi(x)q(x)
и fi(x)q(x) также происходит за время 0[п(т — п + 1)], и оно яв-
явно доминирует время выполнения каждого из соответствующих
полиномиальных вычитаний. Поэтому время первого выполнения
шага 2 равно 0[п(т — п + 1)], что доминирует и время всех его
последующих выполнений (проверьте это).
Итак, мы можем сказать, что в худшем случае каждое выполне-
выполнение шага 2 происходит за время О[п(т — п +1)], а поскольку может
быть не более п выполнений этого шага, мы имеем
= 0[п2{т- п+ 1)].
Пример. Рассмотрим поле 2ц и полиномы pi (ж) = 7ж5 + 4а;3+2а;+1
и Рг(я) — 5а;3 + 2 над этим полем. Применяя ХЕА-Р к р\{х)
и рз(х), получаем следующую таблицу (работая с множеством
неотрицательных целых чисел):
Ите-
Итерация q(x)
Го(-)
0 — 7жт+4х3+2ж+1 5х3+2 10
1 8яа+3 5х*+2 6х3+2«+6 0 1
2 Юх+4 6г3+2х+6 9х 1 х+Т
3 8х+10 9х 6 х+7 Зг3+8
4 7х 6 0 3*а+8 —
+
3«3+10х3+8х+2
Проверка: 6 = Gхъ + 4х3 + 2х+ 1)Cа;2 + 8) + Eа;3 + 2)(9аг4 + 4ж2 +
Зх +10).
174 Полиномы
Эти вычисления показывают, что 6 — наибольший общий де-
делитель двух исходных полиномов. Как мы уже отмечали, каждый
отличный от нуля элемент поля обратим, следовательно, любое
ненулевое кратное наибольшего общего делителя — также наи-
наибольший общий делитель. Поэтому удобно разделить результат
на его старший коэффициент и именно полученный нормирован-
нормированный полином назвать наибольшим общим делителем двух данных
полиномов. Соответственно таким наибольшим общим делителем
в приведенном выше примере будет 1, а не 6.
Если т(х) — неприводимый полином в Ър[х\, р — простое число,
то мы можем воспользоваться приведенным выше алгоритмом так
же, как при работе с целыми числами, чтобы вычислить обратный
к полиному р(х) ^Ов Zp[z]m(x)i где deg[p(a;)] < deg[m(a;)]. Мы
просто применяем ХЕА-Р к т(х) и р(х) и получаем полиномы f(x)
и д(х), такие, что
т(*)/(*)+р(*М*)=1.
Тогда, вычисляя значение последнего выражения в точке а, где
а — [ж]т(х) и т(а) - 0, мы получаем р(а)д(а) = 1 в Zp[x]m^, откуда
следует, что р(а) обратим в Zp\x\m^.
Рассмотрим теперь другой пример, и сконцентрируем наше
внимание на росте коэффициентов членов последовательности
полиномиальных остатков.
Пример. Рассмотрим полиномы р\{х) = х3 — 7х + 7 и ръ{х) =
За;2 — 7. Применяя алгоритм Евклида над рациональными числами,
получаем такие последовательности:
Р2(х) = З*2 - 7, 91(х) = A/3)*,
Рз(х) = (-14/3)* + 7, «(*) = (-9/14)* - 27/28,
= О-
Как и прежде, 1 = gcd\pi(x),p2(x)].
Рост коэффициентов последовательности полиномиальных ос-
остатков может быть минимизирован, если каждый член, как только
Наибольшие общие делители полиномов над полем 175
он получен, нормируется. В этом случае мы получаем
Р2(х) = х>- 7/3,
рз(х) = х- 3/2,
М*) = 1.
й(*) = 0.
qi(x) = х,
й(*) = * + 3/2,
й(*) = * - 3/2,
Лействительно, мы видим, что цель достигнута, но ценой
вычислений gcd целых чисел на каждом шаге, чтобы максимально
редуцировать дроби.
Из этого примера видно, что использовать арифметику рацио-
рациональных чисел для вычисления последовательности полиномиаль-
полиномиальных остатков нецелесообразно; с одной стороны, число требуемых
для максимального редуцирования коэффициентов вычислений
gcd целых чисел слишком велико и, с другой стороны, отказ от
редукции ведет в стремительному росту выражения.
3.2.3. Неприводимые сомножители полиномов
Неприводимые полиномы играют ту же роль, что и простые
числа в теории разложения на множители целых чисел, поэтому
исследуем некоторые их свойства. Мы должны знать, какие
полиномы неприводимы в J[x], когда J = С, J = Ж, .7 = Q и
J — Z; случай J = Zp, p — простое число, будет рассмотрен
отдельно в разд. 3.3 и гл. 6. (В гл. 6 мы также исследуем,
как вычислять неприводимые сомножители данного полинома с
целыми коэффициентами,— весьма нелегкая задача.)
Мы знаем, что поле С было изобретено, чтобы включать корни
неприводимых полиномов из Ш[х]; мы видели, что * = л/—1 —
корень полинома ж2 + 1- Из следующей теоремы мы заключаем,
что единственные отличные от констант неприводимые полиномы
в С[х] — полиномы степени 1.
Основная теорема алгебры. Каждый полином р(х) из С[х]
степени ^ 1 имеет корень в С.
Доказательство. Имеются различные доказательства этой тео-
теоремы, принадлежащие разным знаменитым математикам. Эти
доказательства можно найти в большинстве учебников по алгебре
[см., например, (Childs, 1979)]. ?
176 Полиномы
С помощью основной теоремы алгебры мы можем теперь легко
определять неприводимые полиномы в Ж[х]. Однако отметим, что
знание того, какие полиномы в Ж[х] (или в С[х]) неприводимы, не
облегчает разложение данного полинома.
Теорема 3.2.7. Отличный от константы полином р(х) из Ж[х]
неприводим, если и только если либо (а) р(х) имеет степень 1,
либо (Ь) р(х) = ах2 + Ьх 4- с и Ь2 - Аас < 0.
Доказательство. Очевидно, что любой полином степени 1 непри-
неприводим.
Предположим теперь, что р(х) = ах2 + Ьх + с. Тогда р(х)
разлагается в С[х] на множители:
6 — у/Ь2 — 4ас
р(х)
= а \х +
1а
1а
Мы знаем, что если Ь2 — 4ас < 0, то корни полинома р{х) комп-
комплексные, а значит, р(х) неприводим в Ж[ж]. Таким образом, мы
доказали, что два типа полиномов, которые по нашему утвержде-
утверждению неприводимы в Ж[х], действительно неприводимы.
Докажем теперь обратное утверждение теоремы. Предположим,
что р(х) — неприводимый в Ш[х] полином, deg[p(x)] > 1. Следо-
Следовательно, у р(х) нет вещественных корней. Однако по основной
теореме алгебры у него есть комплексный корень д = а + ib, где
а,Ь — вещественные числа, 6^0. Образуем теперь полином второй
степени t(x) = (х-д)(х—д), где д = a—ib, и, разделивр(х) на<(ж), по-
получим р(х) = t(x)q(x)+r(x), где q(x),t(x) Е Щх], deg[r(z)] < deg[t(x)].
Ясно, что r(z) — полином степени ^ 1, т.е. r(x) — cx + d. Рассмат-
Рассматриваем равенство р(ж) = t(x)q(x) + r(x) как равенство функций на
С и полагаем х = д. Получаем 0 = р(д) = t(g)q(g) + r(g); t(g) — 0 по
построению и, значит, г(д) = 0. Однако, поскольку д — не вещест-
вещественное число, равенство г(д) = 0 может иметь место, только если
с = d = 0, а тогда г(х) = 0. Таким образом, р(х) = t(x)q(x); значит,
р(х) не является неприводимым, если q(x) — не константа. Но
если q(x) — константа, то р(х) — неприводимый полином степени
2, что и требовалось доказать. ?
Сформулируем теперь некоторые результаты, имеющие место
для полиномов над полем.
Теорема 3.2.8. Пусть J — поле и р\(х),р2(х) € J[x]- Если
неприводимый полином т(х) € J[x] делит произведение Pi(x)p2(x),
то т(х) должен делить или pi(x), или р2(х).
Наибольшие общие делители полиномов над полем 177
Доказательство. Если хотя бы один из полиномов р\ (х) и рг(я) тож-
тождественно равен нулю, то результат очевиден. Еслир1(ж)р2(а;) Ф 0,
то предположим, что т{х) не делит pi(x), и покажем, что т(х)\р2(х).
По предположению gcdjVn^^p^a:)] = 1, и по следствию 3.2.5 су-
существуют полиномы v(x) и и(х), такие, что
rn(x)u(x) + pi(x)v(x) = 1.
1,Умножая на рг(ж), получаем
р2(х)т(х)и(х) + P2(x)pi(x)v(x) = р2{х).
Поскольку т(х) делит левую часть уравнения, мы заключаем, что
. D
Теорема 3.2.9. (теорема о разложении на простые множители для
полиномов). Пусть / — поле и р(х) 6 J[x], deg\p(x)] > 0. Тогда
полином р(х) может быть однозначно разложен в произведение
неприводимых нормированных полиномов над J[x], т.е. р(х) =
cpi(x)p2(x).. .рк(х), Pi(x) G J[x], i = 1,2,... ,k и с € J. Разложение
является единственным с точностью до порядка сомножителей.
Доказательство. Доказательство проведем индукцией по степе-
степени полинома р(х). Очевидно, что если deg[p(a:)] = 1, то те-
теорема верна, поскольку полином р(х) неприводим. Предполо-
Предположим, что р(х) имеет два разложения на простые множители, т.е.
р(х) = cpi{x)p2{x) .. .Pk(x) = dqi(x)q2(x).. .qj(x). Согласно теореме
3.2.8, pi(x) делит некоторый qi(x). Поскольку и pi(x), и д,(ж)
нормированы и неприводимы, мы имеем pi(ar) = qi(x). Поэтому мы
можем написать
Р>1^ = ~J
По предположению индукции разложение на простые множители
полинома p'i(x) единственно с точностью до порядка сомножи-
сомножителей, т.е. каждый Pi(x) равен некоторому qk(x), и наоборот.
Следовательно, разложение на простые множители полинома р(х)
должно также быть единственным с точностью до порядка сомно-
сомножителей. ?
Так же как для целых чисел, мы можем записать разложение на
множители полинома р(х) в Ж[х] в виде
12-274
178
Полиномы
Если какое-либо из чисел е,- больше единицы, то мы будем го-
говорить, что у полинома p(z) есть кратный сомножитель. На-
Например, р(х) = (х — 1K(х + 1) имеет кратный сомножитель, а
р(х) = (ж - 1)(ж + 1) таковых не имеет. В первом случае мы гово- |
рим, что у р(х) есть кратный корень в J, а во втором — что р(х)
имеет только простые корни. Мы видим, таким образом, что раз-
разложение на множители в Ж[х] или в С[х] эквивалентно нахождению j
корней полинома. Имеет место следующая I
Теорема 3.2.10. (Гаусс). Пусть J — область целостности;
и р(х) 6 J[x], deg[p(z)] > 0. Тогда полином р[х) может быть
единственным образом разложен в произведение неприводимых
нормированных полиномов над J[x] при условии, что каждый
элемент в кольце J может быть единственным образом разложен в
произведение неразложимых элементов.
Доказательство. Локазательство достаточно длинное, и мы его
опускаем; детали см. в книге (Sims, 1984, pp. 229-234). ?
Следствием теоремы 3.2.10 является тот факт, что Щх] —
область с однозначным разложением на множители, хотя она не
является евклидовой.
В качестве примера области, не являющейся областью с од-
однозначным разложением на множители, рассмотрим область це-
целостности, состоящую из чисел вида а 4- 6л/—5, а, Ь - целые чис-
числа. (Проверьте, что это действительно область целостности.)
Число 21 имеет два разложения на неразложимые множители:
21 = 3 • 7 = A + 2л/=5)A - 2л/=5).
Сформулируем общий результат.
Теорема 3.2.11. Если J — евклидова область, то она явля-
является областью с однозначным разложением на множители, т.е.
каждый ее отличный от нуля элемент или обратим, или может
быть представлен в виде конечного произведения неразложимых
элементов.
Доказательство. Локазательство достаточно длинное, и мы его
опускаем; детали см. в книге (Sims, 1984, pp. 214-221). D
Мы продолжаем обсуждение неприводимых над Щх] полиномов.
В отличие от Ж[х] или С[х], где мы могли явно описать все
неприводимые полиномы, в Щх] мы можем дать только некоторые
достаточные критерии неприводимости (по причинам, которые
Наибольшие общие делители полиномов над полем 179
станут понятными ниже). Основной пункт нашего обсуждения
состоит в том, что разложение на множители в Q[x] — это то же
самое, что разложение на множители в Щх].
Пусть р(х) = спхп + с„^ххп~1 + • • ¦ + cjx + со — полином с
() „х + j + о ом с р&
циональными коэффициентами. Мы можем умножить р(х) на t,
наименьшее общее кратное знаменателей коэффициентов, и полу-
получить полином tp(x) = s(x) с целыми коэффициентами. Поскольку
полиномы р(х) и s(x) ассоциированы, s(x) неприводим в Q[x], если
и только если неприводим р(х). Поэтому, изучая полиномы в Q[x],
мы можем всегда предполагать, что их коэффициенты — целые
числа.
Мы называем полином р(х) ? Щх] примитивным, если его ко-
коэффициенты — целые числа и их наибольший общий делитель
равен 1. Тогда любой полином в Щх] с целыми коэффициентами
ассоциирован с примитивным полиномом. [Чтобы в этом убедить-
убедиться, рассмотрим полином р(х) в Щх] с целыми коэффициентами, и
пусть d — наибольший общий делитель его коэффициентов. Тогда
(l/d)p(x) — все еще полином с целыми коэффициентами, но те-
теперь наибольший общий делитель его коэффициентов — единица.
Следовательно, р(х) и (l/d)p(x) ассоциированы в Q[«].]
Теорема 3.2.12. Произведение двух примитивных полиномов из
Щх] снова является примитивным полиномом.
Доказательство. Ясно, что произведение двух полиномов с целыми
коэффициентами — снова полином с целыми коэффициентами.
Пусть р(х) и q(x) — два примитивных полинома. По определению
примитивности для любого простого числа р
Поэтому
р(х) ф 0 (mod p), q(x) ф 0 (mod p).
p(x)q(x) ф О (mod p)
для любого простого р, откуда следует, что никакое простое число
не делит все коэффициенты полинома p(x)q(x). Следовательно,
наибольший общий делитель коэффициентов полинома p(x)q(x)
равен 1 и полином p(x)q(x) примитивен. ?
Теорема 3.2.13. (Гаусс). Пусть р(х) — полином из Q[x] с
целыми коэффициентами. Если р(х) — q(x)r(x) в Щх], то р{х) =
qi(x)ri(x), где qi(x) и ri(x) — полиномы с целыми коэффициентами,
ассоциированные с q(x) и г(х) соответственно.
12 * ¦'
180 Полипомы,
Доказательство. Без потери общности предположим, что р{х)
примитивен и р(х) = q{x)r(x) в Щх]. Тогда из приведенных
рассуждений видно, что существуют рациональные числа а и
6, такие, что а ¦ q(x) и 6 • г(х) примитивные полиномы. По |
предыдущей теореме полином а ¦ b • q(x)r(x) = ab- р(ж) примитивен.
Но примитивен и р(ж), и, пользуясь тем, что если г — рациональное
число, такое, что г • р(х) и р(х) — примитивные полиномы, то
г = 1 или -1, получаем р(х) = ±а ¦ Ь • q(x)r(x). Для завершения
доказательства положим qi{x) = ±а • q(x) и Г\(х) = Ь • г(ж). ?
Мы говорим, что полином в Щх] неприводим, если он не раз-
разлагается в произведение двух полиномов степеней ^ 1 с целыми
коэффициентами. В силу теоремы 3.2.13 мы видим, что поли-
полином неприводим в Щх\, если и только если он неприводим как
полином в Q[x]. Следующая теорема помогает нам в вопросе о
неприводимости.
Теорема 3.2.14. Если р(х) — с„хп Н (- ах + со — полином в Щх\
и r/s — его корень, такой, что (г, s) = 1, то s\cn и г|с0.
Доказательство. Так как r/s— корень полинома р(х), то cn(rn/sn)+
• • • + ci(r/s) + со = 0. Умножая на s", получаем cnrn + cn-irn~1s +
• ¦ • + cirs" + cosn = 0, откуда cnrn = As для некоторого А € Z.
Следовательно, s\cnrn, и поскольку (г,в) = 1, то s\cn. Аналогично
Сов" = у.г для некоторого ц ? TL, а так как (г, s) = 1, то г|со. П
Пример. Единственные возможные рациональные корни полинома
ж2 - бж + 8 суть ж = 1, —1, 2, —2, 4, -4, 8, —8, поскольку они
являются единственными делителями числа 8; действительно, два
корня суть 2 и 4.
Заметим, что если r/s — корень полинома р(х) = 0, то sx —
г — линейный сомножитель полинома р(ж). Полезен следующий
критерий для обнаружения неприводимых полиномов в Z[x].
Теорема 3.2.15. (критерий Эйзенштейна, 1850). Пусть р(ж) =
"~2 + + СХ + С — ПОЛИНОМ ИЗ Щх\. ЕСЛИ
й Эйзенштейна, 1850). у р()
С0Хп + Ci» + С2Х + • ¦ • + С„_1Х + С„ — ПОЛИНОМ ИЗ Щх\. ЕСЛИ
существует простое число р, такое, что р не делит со и делит
ффты сссно р2 не делит сп, то
С0Хп +
(
+ С2Х"~2 +
р
., с„, но р2 не делит сп, то
остальные целые коэффициенты с\,<
полином р(х) неприводим.
Доказательство. Будем доказывать от противного. Предположим,
чтор(ж)=' "' ' ' ' - ~'~2 ' L"- •¦*¦!-пЛ.(Ьпхк +6ixt-1 +
Наибольшие общие делители полиномов над полем 181
j + к = п; далее, положим ао = 60 = 1. Тогда, поскольку a,&t = с„,
ровно одно из чисел a;-,bt делится на р; пусть, например, р|а;- и
Ft,p) = 1. Кроме того, так как p|cn_i, где cn_x = aj_i6* -I- ajbk-i,
то p|a;-6it_i и p|aj_i6t; однако, поскольку (bk,p) = 1, мы будем
иметь p\aj-\. Таким же образом мы покажем, что р делит
0,-2, dj-з, • • •) oii а также коэффициент ао, который равен 1. Однако
это противоречие, и, следовательно, полином р(х) неприводим. ?
Теорема 3.2.15 верна также, когда коэффициенты полинома р(х)
принадлежат области целостности, которая является областью с
однозначным разложением на множители.
Пример. Согласно теореме 3.2.15, полином хп — 2 неприводим при
любом п.
Теорема 3.2.15 показывает, что в Q[x] имеются неприводимые
полиномы любой степени. Заметим также, что имеются полиномы,
к которым критерий Эйзенштейна неприменим; например, для
полинома р(г) = х2 — 6х + 7 критерий Эйзенштейна абсолютно
бесполезен, но тем не менее полином р(х) неприводим.
Пример. В Q[x] полином р(х) = х3 — 2 неприводим. В Ж он имеет
корень, а именно 21'3, и
- 2 = (* -
+ 21'3* + 41'3),
Jt-2
где второй сомножитель имеет два комплексных корня.
Лругой тест неприводимости состоит в редукции полинома по
модулю т, т.е. вычисляем pJ(x) = p{x) (mod m), где т не де-
делит старший коэффициент полинома р(х), и проверяем р1(х) на
неприводимость. [Заметим, что degjp^a;)] = deg[p(a;)].] Проверка
неприводимости полинома р1(х) в Zm[x] — конечная задача (по-
(поскольку имеется только конечное число возможных делителей);
в гл. 6 мы детально разбираем метод разложения полиномов в
конечных полях.
Имеет место следующая
Теорема 3.2.16. Если р*(х) = р(х) (mod m) для некоторого т,
не делящего старший коэффициент полинома р(х), и полином рх(х)
неприводим в Zm[x], то р(х) неприволим в Q[x].
182 Полиномы
Доказательство. Предположим, что р(ж) = q(x)r(x), где q(x) и
г(х) — примитивные полиномы с целыми коэффициентами. Тогда
для любого т, не делящего старший коэффициент полинома р(х),
мы имеем р1(ж) = q1(x)rl(x) в 2^ [ж], так что р1(х) разлагается на
множители. ?
3.2.4. Разложение полиномов на свободные от квадратов
множители
Полином р(ж) называется свободным от квадратов, если не
существует полинома q(x) положительной степени, такого, что
q'2(x)\p(x). Процесс нахождения свободных от квадратов сомно-
сомножителей данного полинома широко используется в математике.
Среди его приложений — разложение полиномов на множители,
разложение на простейшие дроби и интегрирование рациональных
функций; более того, в гл. 7 мы увидим, что решение полиномиаль-
полиномиального уравнения с кратными корнями может быть сведено к реше-
решению одного или нескольких уравнений, имеющих только простые
корни, и эти уравнения — свободные от квадратов сомножители
исходного уравнения.
Пусть J — произвольная числовая область; определим р'(х) —
D\p(x)], производную полинома р(х) € J[x], следующими двумя пра-
правилами: A) D(axn) = апхп~1 для а € J и п ^ 0; следует отметить,
что D(axn) = 0, если J = 2„, и B) D[p{x) + q(x)] = D\p(x)] + D[q(x)].
Напомним, что для производных имеет место известное правило
произведения D[p(x) ¦ q{x)] = p(x)D[q(x)] + D\p(x)]q(x).
Теорема 3.2.17. Пусть J — область с однозначным разло-
разложением- ко множители характеристики нуль, и пусть р(х) —
примитивный отличный от константы полином в J[x]. - Пусть
р(х) = [piOc)]'1!^*)]*' • • ¦ [Рп(я)]еп — однозначное разложение поли-
полинома р(х) на неприводимые сомножители и р'(х) — его производная.
Тогда
Наибольшие общие делители полиномов над
полем
183
Доказательство. Пусть q(x) = Y\2^i<n\Pi(x)]ei и г(х) — gcd[p(a?),
р'(х)]. Тогда р(х) = <K*)[pi(*)]ei и
р'(х) = [pi (*)Г V(*) + eibiW-Vi^M*),
откуда следует, что [pi(ar)]ei~1|r(ar). Покажем методом от против-
противного, что [pi(z)]ei не делит г(х). Предположим, что [pi(a;)]ei|r(x);
тогда \pi(x)]'1\p'(x), откуда мы заключаем, что \pi(x)]ei делит
ei[?i(*)]*'~lP>i(xL(x)' После сокращений в последнем соотношении
мы получаем Pi{x)\e\p'l^x)q(x); однако, поскольку полиномы р,(я)
взаимно просты, gcd\pi(x),q(x)] = 1 и, стало быть, pi(a;)|cipi(z).
Это и есть нужное противоречие, поскольку из pi(x)\eip[(x) сле-
следует, что deg[pi(a;)] < deg[pi(z)]. Таким образом степень pi(x)
в г(х) равна t\ — 1, и из соображений симметрии мы получаем
г(х) = [piOO]'1... [PnO*)]'*! что и требовалось доказать. П
Из теоремы 3.2.17 мы заключаем, что если gcd\p(x),p'(x)] = 1, то
р(х) не имеет кратных сомножителей, и наоборот. Справедливо
также
Следствие 3.2.18. Простые корни полинома не являются корнями
его производной.
Следствие 3.2.19. Пусть J — поле и р(х) — неприводимый
полином в J[x], который делит s(x) G J[x]. Тогда [р(ж)]2|в(ж), если
и только если p{x)\s (x).
Доказательство. Поскольку p(x)\s(x), мы можем записать s(x) =
p(x)q(x) и, следовательно, s'(x) = p'(x)q(x)+p(x)q'(x). Значит, если
[p(a;)]2|s(z), то p(x)\q(x), и очевидно, что p(x)\s'(x). Обратно, если
p(x)\s'(x), то p(x)\p'(x)q(x) и по теореме 3.2.8 р(х) делит или р'(х),
или q(x). Однако deg[p'(a;)] < deg[p(a;)] и, следовательно, p(x)\q(x),
откуда вытекает, что [p(a:)]2|s(a;). П
Мы теперь готовы обсуждать алгоритм разложения на свобод-
свободные от квадратов множители. Пусть р(х) — примитивный полином
положительной степени от одной переменной, определенный на J,
области с однозначным разложением на множители. [Как мы ви-
видели, выбирая р(х) примитивным, мы не ограничиваем общности.]
Предположим, что р(х) = [pi(a:)]ei [рг(ж)]ез... [рп(я)]е" — разложение
р(х) на неприводимые множители р*(х) положительной степени, так
что е,- > 0 для каждого г, и пусть е = max(ei,..., е„); для 1 ^ i ^ e
положим
Ji = {j ¦ ej = i}, Si(x) = Д Pj(x).
Тогда, очевидно,
p{x) = JJ
что называется разложением полинома р(х) на свободные от квад-
квадратов множители. [Заметим, что некоторые из полиномов в,(ж)
184 Полиномы
могут быть равны 1; si(x) — это произведение всех линейных
множителей, соответствующих простым корням, s2(a;) — произве-
произведение всех сомножителей, соответствующих двойным корням, и
т.д.] Полиномы Si(x) ¦¦— это свободные от квадратов сомножители
полинома р{х); мы можем найти их с помощью теоремы 3.2.17,
заметив, что
[si(x) здесь не присутствует]. Тогда наибольший свободный от
квадратов делитель полинома р(х) равен
t{x)=p(x)/r(x) = П «(«)= П •'(*)•
и, следовательно,
= gcd[r(*), *(*)] = Д «,(*)
Поэтому 8i(x) — t(x)/v(x), т.е. первый свободный от квадратов
сомножитель полинома р(х) может быть вычислен с помощью
дифференцирования, вычисления gcd и деления. Повторяя процесс
с г(х) вместо р(х), мы можем вычислить в2(ж) к^к первый свободный
от квадратов сомножитель полинома г(х) и в конечном счете
получить все свободные от квадратов сомножители полинома р(х).
Итак, мы имеем следующий алгоритм:
PSQFF. Разложение полиномов на свободные от квадратов мно-
множители (Polynomial Squarefree Factorization)
Вход: р(ж) — примитивный полином положительной степени
от одной переменной над областью J характеристики нуль с
однозначным разложением на множители.
Выход: Полиномы «<(г) и число е, такие, что р(х) = fJ1^i^e[et-(a;)]*
— разложение полинома р(х) на свободные от квадратов
множители.
1. [Инициализация] r(x) :— gcA\p(x),p'(x)}; t(x) := p(x)/r(x); j :=
1.
2. [Конец?] Если, deg[r(x)] = 0, то {е := j; Sj(x) = t(x); выход;}.
3. [Вычисление 8j(x)] v(x) := gcd[r(x),*(*)]; sj(x) := t(x)/v(x).
4. [Обновление] r(x) := r(x)/v(x); t(x) := v(x); j := j + \; перейти
к шагу 2.
Наибольшие общие делители полиномов над полем 185
Анализ времени работы алгоритма PSQFF. Ясно, что время
работы этого алгоритма доминируется вычислениями gcd, имею-
имеющими место на шаге 3.
Если п = deg[p(z)], то п ограничивает число выполнений цикла
(состоящего из шагов 2, 3, и 4), в котором находится шаг 3. Кроме
того, время, необходимое для вычисления r(x) := gcd[p(x),p'(x)] на
шаге 1, — это верхняя граница времени каждого вычисления gcd
на шаге 3. Имеют место:
Случай а. Полином р(х) принадлежит J[x], где J — поле. В
этом случае gcd\p(x),p'(x)] вычисляется за время О(п2), и так как
имеется п выполнений шага 3, то
<psqff[p(*)] = О(п3).
Случай Ь. Полином р(х) принадлежит J[x], где J = Z. В этом
случае, как мы увидим в гл. 5, gcd\p(x),p'(x)] вычисляется за время
0{п52/2[|р(ж)|00]}, и снова, поскольку имеется п выполнений шага 3,
Дополнительную информацию об алгоритме разложения на
свободные от квадратов множители можно найти в книгах (Wang,
Trager, 1979) и (Yun, 1976). Мы завершаем этот раздел примером,
в котором неявно используется информация из гл. 5, а именно как
вычислять gcd\p(x), р'(х)] в Щх].
Пример. Найдем свободные от квадратов сомножители полинома
р(х) = х5 - х4 - 2х3 + 2х2 + х - 1. Применяя алгоритм PSQFF,
получаем при первом проходе: г(х) = х3 — ж2 — х + 1, t(x) = х2 — 1,
v(x) = х2 — 1 и si(x) — 1, что указывает на отсутствие линейных
сомножителей. При втором проходе мы имеем г(х) = х — 1,
t(x) — х2 — \, а значит, v(x) = х-1 и S2(x) = х + 1; это означает, что
(х + IJ — сомножитель исходного полинома. В начале третьего
и последнего прохода мы имеем г(х) = 1, t(x) = х — 1 и на шаге
2 видим, что степень полинома г(х) равна нулю; следовательно,
в3(ж) := t(x) = х — 1, т.е. (х — IK — также сомножитель исходного
полинома. Таким образом, р(х) = (х + 1J(х — IK.
186
3.3
Полиномы
Поля Галуа GF(pr)
Мы уже сталкивались с конечными полями порядка р, где р —
простое число, например с классами вычетов по модулю р. Однако
в многочисленных приложениях нам понадобятся числовые поля
порядка рг, и в этом разделе мы узнаем, как их построить и как
производить в них вычисления. Сейчас читателю целесообразно
заново просмотреть материал разд. 2.3.2, в частности теоремы с
2.3.17 по 2.3.21, и также разд. 3.1.4.
3.3.1. Основные факты о конечных полях
Из определения мы уже знаем, что каждое поле — область
целостности; обратное утверждение в общем случае неверно, в
чем можно убедиться на примере кольца Z. Однако для конечных
полей имеет место
Теорема 3.3.1. Каждая конечная область целостности — поле.
Доказательство. Пусть J — конечная область целостности. Если
а,Ь — два элемента из J, а ф Ь, то для всех ненулевых элемен-
элементов с в J по правилу ^сокращения ас фЬс (см- также теорему .
2.3.8). Поэтому cJ = J и cd = 1 для некоторого d € J, а это
означает, что каждый ненулевой элемент области J имеет в ней
мультипликативный обратный, и, значит, J — поле. ?
Следующие две теоремы непосредственно вытекают из теорем
гл. 2. Значения q будут определены позже теоремой 3.3.6; оно не
может быть произвольным.
Теорема 3.3.2. Если F — поле из q элементов и а — любой его
ненулевой элемент, то а' = 1.
Доказательство. Ненулевые элементы поля F образуют абелеву
группу порядка q — 1 относительно умножения (см. также теорему
2.3.17). D
Следствие 3.3.3. Если F — поле из q элементов, то любой
элемент a G F удовлетворяет уравнению хя — х = 0.
Поля Галуа GF{f) . 187
Доказательство. Из теоремы 3.3.2 мы знаем, что все ненулевые
элементы поля F удовлетворяют уравнению ж* — 1 = 0; нулевой
элемент поля, 0, удовлетворяет уравнению х = 0. Поэтому все
элементы поля удовлетворяют уравнению х{хч~1 — \) = хя—х = 0. ?
Теорема 3.3.4. Пусть F — поле из q элементов и а — его
произвольный ненулевой элемент. Если п — порядок элемента а,
то n\(q- 1).
Доказательство. Если п не делит q — 1, то мы можем найти к и
г, такие, что q — 1 = кп + г, где 0 < г < п. Тогда ая~1 = акп+г =
акпаг — (ап)каг = 1; следовательно, аг = 1, поскольку а* = а" = 1.
Это, однако, невозможно, так как 0 < г < п и п — наименьшее
число, такое, что о" = 1. Поэтому n\(q — 1). ?
В разд. 3.1.4 мы уже видели, что, отправляясь от J[x] = 22ЭД,
мы построили новое поле, 2q[x]/ =т(г), где т(х) = х2 + х + 1 —
неприводимый полином над Ъ^- (Предположим временно, что для
любого п существуют неприводимые над Zp полиномы степени п;
этот факт мы докажем позже в этом же разделе.) Это новое поле,
которое является множеством классов полиномов по модулю гп(х),
содержит четыре элемента {[0], [1], [х], [1 + ж]} и обозначается также
GFB2) = GF(A). Кроме того, мы можем представлять элементы
поля GFD) как полиномы с коэффициентами из Zp, вычисленные
в точке а = [х]т^: рассматриваемой как корень полинома т(х),
т.е. это новое поле построено добавлением к Z2 единственного
элемента, и, значит, является простым расширением поля TLi и
обозначается Ъ}\а\. Имеет место следующая
Теорема 3.3.5. Пусть р — простое число и гп(х) — неприводимый
полином степени г в поле Ър[х]. Тогда классы вычетов 2^,[ж]/ =т(х)
образуют поле из рТ элементов, содержащее Ъг и корень полинома
тп(х).
Доказательство. Локазательство фактически было дано при об-
обсуждении примера в разд. 3.1.4. П
Теорема 3.3.6. Пусть F — поле из q элементов. Тогда q — рг,
где р — простое, а г — натуральное числа.
Доказательство. По определению F имеет единичный элемент
относительно умножения; мы обозначим его 1. Очевидно, что 1 + 1
принадлежит F, и мы обозначаем этот элемент 2. Мы продолжаем
188 Полиномы
таким образом: 2+ 1 = 3€Fh т.д., и после конечного числа шагов
нам встречается элемент, который мы уже видели.
Следуя аргументам, представленным в конце разд. 2.1.3 (еще
раз просмотрите их), предположим, что
Поля Галуа GF(pr)
189
где к' < fc"; следовательно, 52i<i<*»-i' 1 = 0. Значит, должно
существовать наименьшее целое число А, такое, что $3i<»<a * =
0; аналогично рассуждениям из теоремы 2.3.12 заключаем, что
А — простое число р и, таким образом, Fp — подполе поля F,
изоморфное полю Zp (покажите это).
Определим линейную независимость множества элементов из
поля F с коэффициентами из поля Fp очевидным образом (см.
приложение в конце книги). Среди всех линейно независимых
подмножеств поля F пусть {cti,ot2,... ,«г} — подмножество с мак-
максимальным числом элементов. Если а — элемент поля F, то
{а,а\,а2,... ,аг] — линейно зависимое множество, т.е. имеются
коэффициенты х\,Жг,...,хг, такие, что а — линейная комбинация
элементов {а\,а2,. ¦ .,аг}. Очевидно, имеется рг различных ли-
линейных комбинаций элементов {сч,а2,... ,аг], и это доказывает
теорему. ?
Обратное к этому предложению см. в теореме 3.3.19.
Следствие 3.3.7. Если F — конечное поле, то оно имеет
характеристику р для некоторого простого р > 0 и, таким образом,
содержит подполе, изоморфное полю Zp.
Как мы знаем из разд. 2.3.2, групповой элемент а является при-
примитивным элементом, или примитивным корнем, если его степени
1,а,а2,... пробегают все элементы группы (см. также теорему
2.3.20); примеры также исследовались в разд. 2.3.2. Следую-
Следующая теорема гарантирует нам, что в каждом конечном поле есть
примитивный корень.
Теорема 3.3.8 (теорема о примитивном корне). Пусть F — поле
из q элементов. Тогда существует элемент а € F, такой, что
(i) каждый ненулевой элемент поля F является степенью элемента
а, и (ii) порядок элемента а равен q — 1.
Доказательство. Из теоремы 3.3.4 нам известно, что порядок
элемента а делит q — 1. Идея доказательства состоит в изучении
множества О порядков элементов поля F. Очевидно, что О —
некоторое множество целых чисел < q — 1, и доказательство будет
закончено, когда мы покажем, что q — 1 принадлежит О. Это
так, потому что тогда а1 = 1 для некоторого а ? F и никакая
меньшая степень а не равна 1. То есть будет доказана часть (ii)
теоремы. Часть (i) тогда легко следует из того, что все степени
1,а, а2,... ,а*~2 различны, и, таким образом, они пробегают все
ненулевые элементы поля F. Подробности можно найти в книгах
(Berlekamp, 1968) или (Childs, 1979). ?
Теорема 3.3.8 не дает нам никакой формулы для нахождения
примитивного корня в поле Zp, р — простое число. Фактически
никакой такой формулы не существует. Известно, однако, что если
р — простое число вида р = Aq + 1, где q — простое число, то 2 —
примитивный корень поля Щ,. Таким образом, 2 — примитивный
корень полей Ър для р = 5,13, и т.д. Примитивные корни в
конечном поле легко можно найти с помощью следующего метода
[обнаруженного в работе (Albert, 1958)].
Нахояодение примитивного корня в конечном поле. В
конечном поле GF(q) элемент а является примитивным корнем,
если и только если
аA-1)/* ф 1 (mod q)
для всех простых делителей di,c?2, • • • ,dr числа q — 1.
Обобщением теоремы 3.3.5 получается следующая
Теорема 3.3.9. Пусть F — поле и р{х) — (нормированный)
полином из F[x], deg[p(a;)] ^ 1. Тогда существует содержащее F
поле К, такое, что в К[х] полином р(х) разлагается в произведение
линейных сомножителей.
Доказательство. Локазательство индукцией по deg[p(a;)] = n мы
оставляем читателю в качестве упражнения. D
Поле К, определенное в теореме 3.3.9, называется полем расщеп-
расщепления для р(х). Например, согласно основной теореме алгебры,
С — поле расщепления для любого полинома из Q[x].
190
Полиномы
Пример. В Q[x] полином р(х) = х3 — 2 неприводим. Он имеет
корень в Ж, а именно 21'3, но К не является полем расщепления
для р(х), потому что
жз _ 2 = (j. _ 2V*){** + 2l'3x + А1'3),
а второй сомножитель имеет два комплексных корня.
Пусть F — поле и К — поле, содержащее F. Предположим,
что а € К — корень некоторого ненулевого полинома т(х) € F[x].
Тогда мы говорим, что элемент а алгебраичен над F. (Числа, не
являющиеся алгебраическими, называются трансцендентными]
примеры трансцендентных над Q чисел — ей я\)
Теорема 3.3.10. Пусть элемент а ? К алгебраичен над F. Тогда
существует единственный нормированный неприводимый полином
т(х) € F[x], такой, что а является его корнем, и каждый полином
р(х) € F[x] с корнем а делится на т(х).
Доказательство. Используя принцип полного упорядочения мно-
множества степеней полиномов из F[x] с корнем а, мы заключаем,
что имеется ненулевой нормированный полином гп(х) наименьшей
степени, для которого а является корнем. Методом от противного
noKa»eMj что полином гп(х) неприводим.- То есть предположим,
что гп(х) = а(х)Ь(х), где deg[a(a;)] < deg[m(a;)] и deg[6(a;)] < deg[m(x)].
Тогда 0 = m(a) = a(aN(a), и, поскольку К не содержит делителей
нуля, или а(а) = 0, или Ь(а) = 0. Однако это и есть требуемое
противоречие, поскольку а является теперь корнем полинома сте-
степени, меньшей, чем deg[m(z)]. Поэтому полином т(х) неприводим.
Наконец, пусть р(х) — любой полином в F[x] с корнем а. При-
Применяя теорему о делении, получаем р(х) = m(x)q(x) + r(x), где
deg[r(a;)] < deg[m(z)]. Поскольку р(а) = 0, то г(а) = 0, и г(х) —
нулевой полином и, следовательно, т(х)\р(х). ?
Полином т(х), определенный в теореме 3.3.10, называется ми-
минимальным полиномом элемента а над F, потому что из доказав
тельства мы знаем, что это полином минимальной степени в F[x]
с корнем а.
В гл. 4 нам понадобится нахождение минимальных полиномов.
Следующая теорема утверждает, что они существуют, и показы-
показывает, как их находить.
Поля Галуа GF(pr) 191
Теорема 3.3.11. Пусть К = F[a] — простое расширение поля F,
где минимальный полином т(х) элемента а над F имеет степень г.
Тогда, если Р — произвольный элемент поля К, то @ алгебраичен
над F и минимальный полином элемента /? над F имеет степень
^г.
Доказательство. Мы знаем, что каждый элемент поля К = F[a]
— полином от а степени ^ г — 1. То же верно для любой степени
элемента р. Чтобы найти минимальный полином элемента @ над
F, будем искать ненулевое решение уравнения
сг/Зг + Cr-i/Г-1 + --- + Clp + co = 0.
Заменяя степени элемента /3 эквивалентными им полиномиальны-
полиномиальными выражениями от а и собирая коэффициенты при одинаковых
степенях а, мы получаем систему п уравнений от г+1 неизвестных.
Мы используем затем результат из линейной алгебры (см. прило-
приложение в конце книги), что любая система г однородных линейных
уравнений от г + 1 неизвестных имеет ненулевое решение, чтобы
найти в F[x] ненулевой полином степени < г с корнем /?. ?
Пример. Пусть т(х) = х3+х+1 — неприводимый над Z2 полином, и
рассмотрим К = Щх]/ =„,(*)= Z2[a] = GFB3). Тогда a3 + a+l = 0
и поле К состоит из полиномов от а степени ^ 2 с коэффициентами
в Ъъ- Чему равен минимальный полином элемента /? = а + 1 над
Чтобы найти ненулевое решение уравнения сз/?3 + сг/?2 + ci/? +
со = 0, выразим степени 0 в виде полиномов от (а + 1) и получим
сз((* + IK + c2(<* + IJ + Ci(a + 1) + со = 0. Пользуясь тем, что а3 =
а + 1 (проверьте это), и собирая коэффициенты при одинаковых
степенях а, получаем систему
С2+С1 + Со = 0,
¦ ci =0,
сз+с2 = 0,
которую решаем в Z2. Решением будет ci = 0 и сз = с2 = со, и
поэтому минимальный полином элемента /? = a + 1 над Z2 равен
з + 2 + 1
Некоторые сокращения при выполнении вычисления вручную
читатель может найти в книге (Berlekamp, 1968, pp. 112-117).
Следующий результат играет существенную роль.
192
Полиномы
Теорема 3.3.12. Для данных простого числа р и натурального
числа г все конечные поля из q = pr элементов изоморфны.
Доказательство. Пусть F —конечное поле из q элементов. Тогда
из теоремы 3.3.2 нам известно, что порядок произвольного не-
ненулевого элемента а ? F делит q — 1, т.е. а' = 1 для а ф 0.
Умножая последнее равенство на а, получаем aq — а = 0, что
выполняется и для а = 0. Поэтому a\,ot2>... ,aq, все элементы
поля F, являются корнями полинома хя — х, Следовательно, пос-
поскольку полином хч — х делится на (х — а,), » = 1,2 q, он должен
делиться на Yli<i<q(x ~ Q*)¦ Из равенства степеней следует, что
xq — х = Yli<i<q(x ~ а»0- Из следствия 3.3.7 видно, что поле F
получается из Жр присоединением всех корней полинома xq — х
и поэтому определено единственным образом с точностью до
изоморфизма. ?
Как результат теорем 3.3.5 и 3.3.12 мы имеем такие следствия:
Следствие 3.3.13. Любое конечное поле изоморфно простому
расширению поля Ър для некоторого простого числа р.
Следствие 3.3.14. Если q не является степенью простого числа
р, то не существует конечного поля из q элементов.
Доказательство. Если F — конечное поле, то оно изоморфно
Sp[j;]m(j.) для некоторого неприводимого полинома т(х) степени г.
Тогда Zpfa;],,,^) имеет р* элементов, и то же верно для F. ?
Поскольку имеется по существу только одно конечное поле с рг
элементами, принято обозначать его GF(pr). Следующие теоремы
весьма полезны.
Теорема 3.3.15. В любом поле характеристики р выполняется
соотношение (х — а)р = хр — ар.
Доказательство. Раскрывая скобки, получаем (ж - а)р = хр +
Y7k=i{p(P ~ 1) • • • (р — & + l)/fc!}(—a)kxp~k. Доказательство теперь
немедленно следует из того, что коэффициенты делятся на р. ?
В качестве следствия теоремы 3.3.15 мы получаем, что в поле
характеристики р ни у одного элемента порядок не является
кратным р. Этот результат обобщается следующим образом.
Поля Галуа GF(f) 193
Теорема 3.3.16. Пусть F — поле характеристики р. Тогда для
всех г
•
«') •
Доказательство. Доказательство — индукцией сначала по г для
частного случая к = 2, а затем по к для произвольного г. Детали
мы оставляем читателю. П
Из теорем 3.3.15 и 3.3.16 вытекает
Следствие 3.3.17. Пусть q(x) — произвольный полином из Ър[х\,
а а — один из его корней. Тогда ар — также корень полинома
q(x).
Доказательство. Из ]Г\ 9»"а' = 0 легко следует, что 0 = (]TV g,a*)p =
Если ттг(х) — неприводимый полином в Ъг\х\ и а — один из его
корней, то ар — также корень полинома т(х) для любого нату-
натурального числа к, т.е. т(ар ) = [т(а)]р = 0. Однако, поскольку
степень полинома т(х) конечна, начиная с некоторого места, по-
последовательность а,ар,ар ,... должна повторяться. Следующая
теорема утверждает, что т(х), неприводимый полином из 2р[ж], не
имеет кратных корней ни в каком расширении поля.
Теорема 3.3.18. Пусть т(х) — неприводимый полином в Zp[x]
степени г, и пусть К — поле, содержащее Zp. Если а ? К —
корень полинома гп(х), то все корни т(х) суть а,ар,ар ,...,арГ~ .
Доказательство. Из замечаний, предшествующих теореме, мы
видим, что а,ар,ар ,... суть все корни полинома гп(х).
Пусть п — наименьшее натуральное число, с которого после-
последовательность начинает повторяться, т.е. пусть ар" = а1). Тогда
а,ар,ар ,..., ар" — все различные корни полинома т(х). [Ина-
[Иначе из ар' = otpl мы получаем (ар')р"~3 = {ар')р"~' — а, откуда
ар"~! = а, что противоречит минимальности п.] Поэтому т(х)
имеет по крайней мере п корней, п ^ г.
^ Существование такого п вытекает из следствия 3.3.3 и теоремы
3.3.6. — Прим. перев.
1Л-274
194 Полиномы
Для завершения доказательства пусть mi (ж) = (х — а)(х — of)...
(х-ар"~1). Так как (ар"~1)р = а, то [mi(x)]'> = тх(хр) и а — корень
полинома mi(x). Таким образом, т^х) принадлежит Zp[x] и по
теореме 3.3.10 полином т(х) должен делить mi(x); поскольку п < г,
мы имеем т(х) = mi (ж). П
Докажем теперь обращение теоремы 3.3.6.
Теорема 3.3.19. Для степени простого числа q = pr, г > 0,
существует одно, и с точностью до изоморфизма ровно одно,
конечное поле из q элементов. Эти элементы — корни полинома
Xя - X.
Доказательство. Рассмотрим полином р(х) = х1 — х € Zp[x]. Тогда
по теореме 3.3.9 существует поле расщепления К для полинома
р(х), т.е. в К[х] полином р(я) может быть представлен в виде
произведения линейных сомножителей.
Пусть F — подмножество поля К, состоящее из всех корней
полинома xq — х в К, т.е. F состоит из всех элементов а € К,
таких, что а' = а. Покажем, что F — искомое конечное поле.
Для этого нам нужно показать, что F содержит q = pr элементов
и что оно — поле. По теореме 3.2.17 gcd[p(x),p'(x)] = 1 [поскольку
мы находимся в Zp и производная полинома р(х) равна —1], и,
следовательно, у р(х) нет в К кратных корней. Поэтому в К
имеется q = рг различных корней полинома р(х) и F содержит рг
элементов. Чтобы показать, что F — поле, мы должны доказывать,
что если a,b € F, то то же верно и для а + Ь, а-Ь, —а и а. Детали
мы оставляем читателю. (Указание. Воспользуйтесь теоремой
3.3.16.) П
Мы теперь в состоянии доказать следующий результат.
Теорема 3.3.20. Для любого г в Zp[x] существует неприводимый
полином степени г.
Доказательство. Пусть F — конечное поле из рг элементов. Тогда
по следствию 3.3.13 поле F изоморфно 2р[х]т(г) для некоторого
неприводимого полинома т(х) € %р[я]- Поэтому поле Zp[a;]m(x)
также имеет рг элементов, и степень т(х) равна г. П
Теперь ясно, что любой неприводимый полином гп(х) степени
г в Zp[x] имеет корень в любом поле F из рТ элементов. Это
верно, потому что поле F изоморфно Zp[a;]m(x), в котором т(х)
имеет корень, а именно (z]m(x). Поэтому гп(х) имеет корень в F.
Поля Галуа GF(pr) 195
Дополнительная информация получается из следующей теоремы,
значение которой будет продемонстрировано в гл. 6.
Теорема 3.3.21. Полином р(х) = хр — х равен произведению всех
неприводимых полиномов в Zp[x], степени которых делят г.
Доказательство. Пусть т(х) — неприводимый полином степени
г над Zp, и рассмотрим поле F, полученное присоединением к
Zp корня а полинома т(х); очевидно, F содержит рг элементов.
В силу теоремы 3.3.10 мы знаем, что для любого полинома q(x)
равенство q(a) = 0 справедливо, если и только если q(x) делится
на т(х). Кроме того, по следствию 3.3.3 каждый элемент поля F —
корень полинома р(х) в F; в частности, р(а) = 0, следовательно,
р(х) делится на т(х). Однако то же верно и в случае deg[m(x)] = d
и d\r, потому что если г = d ¦ е, то ар = а, и, применяя это
соотношение е раз, мы видим, что а — корень полинома р(х).
Для завершения доказательства покажем методом от против-
противного, что если s не делит г, то ни один неприводимый над Zp
полином степени s не делит р(х). Предположим, что deg[m(x)] = s
и что т(х)\р(х). Рассмотрим поле F, получающееся из Zp присо-
присоединением к нему корня а полинома т(х). Мы можем считать а
примитивным корнем в поле F, т.е. р* является минимальным из
натуральных чисел п, таких, что а" = а. Поскольку т(х)\р(х),
элемент а является также корнем полинома р(х), т.е. арГ = а.
Пусть г = ks + q, где q — остаток от деления г на s. Тогда
= а1
,р-р< =
Л'
= а1
к» У а
р = ар , поскольку индукцией по к
легко показать, что ар<" = ар'р(к 1)' = ар'р = ар1к~1)г = а. Если
О < q < s, то полученное выше соотношение а = арЧ противоречит
предположению о примитивности корня а. ?
Пример. Рассмотрим поле Галуа GFB4) — Z2[x]m(x), где m(x) =
х4 — х - 1, и выразим х16 — х в виде произведения неприводимых
полиномов в Z2[x]. (Заметим, что +1 = -1 в GFB).) Ясно,
что т(х) = х4 — х — 1 — сомножитель с корнями а,а^,а4,а8 (по
теореме 3.3.18), т.е. х4 - х - 1 = (х - а)(х - а2)(х - а4)(х - а8)
(см. табл. 3.3.1 для проверки последнего равенства). Другие
очевидные сомножители — полиномы х и (х — 1).
Возьмем теперь степень элемента а, которая еще не рассматри-
рассматривалась, а именно, а3. Тогда другим сомножителем будет полином с
корнями а3,а6,а12,а9, т.е. полином (х- »3)(х -а6)(х — а12)(х — а9).
Сомножитель (х — а9) появляется потому, что последний поли-
полином имеет корень а12, а значит, будет также иметь корень
196 Полиномы
Таблица 3.3.1
Три различных представления элементов поля GFB4)
Степенное
представление
0
а° = 1
а
а2
а3
а4
а5
а6
а7
а8
а9
а10
а11
а12
а13
ан
Полиноми ально е
представление
0
1
а
а2
а3
а+1
а2 + а
а3 + а2
а3 + а + 1
а2 4-1
а3 4- а
а2 + а + 1
а3 + о? 4- а
а3 4-а2 4-а 4-1
а3 4- о? 4-1
а3 4-1
Векторное
представление
@000)
@001)
@010)
@100)
A000)
(ООП)
(ОНО)
A100)
A011)
@101)
A010)
@111)
A110)
A111)
AЮ1)
A001)
(а12J = а24 = а15а9 = а9. Затем рассмотрим а5 и еще один
сомножитель — полином (х - а5)(ж — а10). Наконец, последний
сомножитель — это полином (х — а7)(х - аи)(х — а13)(ж - а11).
Сомножитель (х — а13) появляется, потому что последний полином
имеет корень а14, следовательно, он будет также иметь корень
(а14J = а28 = а15а13 = а13. Аналогично сомножитель (х — а11)
появляется, потому что а13 — корень и (а13J = а26 = а15»11 = а11.
Поэтому
х16-х = х(х-1)(х*-х-1)(х4-х3-х2-х-1){х4-х3-1)(х2-х-1).
3.3.2. Построение полей Галуа GF(ST)
Мы представим теперь метод построения полей Галуа GFBr)
для любого г, исходя из двоичного поля GFB); GFB) называется
основным полем, и характеристика GFBr) равна 2. Отметим, что
Поля Галуа GF(pr) 197
арифметика в GFB) совпадает с арифметикой в Z2) и мы уже знаем,
как работать с элементами в этом поле, а также с полиномами над
Z2. Также мы говорим, что неприводимый полином р{х) степени
г с-примитиеен, если наименьшее целое число п, для которого
р(х)\(хп - 1), — это п = Т - 1; в теории кодирования используют
для таких полиномов термин примитивный, но, как мы отмечали,
мы резервируем этот термин для полиномов с взаимно простыми
коэффициентами, с-примитивные полиномы нелегко обнаружить и
для них даются таблицы.
Мы начинаем с двух элементов 0 и 1 из GF{2) и символа а.
Определяем умножение «•» для элементов из GFB) и а следующим
образом: 0« = а0 = 0, 1 -а = а-1 = а; затем полагаем а2 = а -а,
а - а ¦ а = а ¦ а ¦ а и т.д. Заметим, что из данного определения
следует 0 • а* = а* • 0 = 0, 1 • а* = а* • 1 = а* и а> • а* = «J+*.
Таким образом, мы построили множество F' = {0,1,а,а2,...,
а ,...}, на элементах которого определили операцию умножения.
Затем мы налагаем на элемент а некоторое условие, так что F'
содержит только 2Г элементов и операция умножения замкнута
в F'. Пусть р(х) есть с-примитивный полином степени г над
GFB), и предположим, что р(а) = 0. Так как р(а;)|(а;2Г-1 - 1), то
х ~ ~1= Р(ХЫХ) Для некоторого q(x) над GFB), и мы получаем
а - - 1 = p(a)q(a) = 0, или а2' = 1. Таким образом условие
р(а) = 0 превращает множество F' в новое множество F, которое
является конечным и содержит элементы {0,1,а,а2,... ,а2"-2},
которые все различны, т.е.
F = {0,1, а, а2,..., а2'}.
Как и прежде, F* обозначает ненулевые элементы множества F.
Покажем теперь, что F* — (мультипликативная) группа отно-
относительно умножения, замкнутой в F* операции. Прежде всего
заметим, что элемент 1 — единичный элемент. Затем возьмем два
элемента а' и а' из F* и рассмотрим их произведение а'' а' = а'+>.
Если 14-J < 2Р -1, то это элемент из F* и ничего делать не нужно;
однако если i 4; j > 2r - 1, то 14- j = Br - 1) 4- v, где 0 < v < 2P - 1
и a' • a» = a'+i = aBr-1)+" = a« _ ЭЛемент из F\ Более того'
каждый элемент a' € F\ 0 < i < 2r - 1, имеет мультипликативный
обратный, равный a<2 -1)"'. Поэтому F* — коммутативная группа
относительно умножения порядка 2Г - 1.
Теперь определим на F операцию сложения «4-» так, что F
образует коммутативную группу относительно «4-», и в процессе
198
Полиномы
ее определения мы получим также другой способ представления
элементов из F.
Заметим, что если мы разделим х' на р(х), 0 ^ г < 2Г — 1,
то получим х' = p(x)qi(x) + Vi(x), deg[v,-(z)] < г над GFB), т.е.
Vi(x) = Vir-\xr~l H h vt2X2 + ьцх + ViQ. Поскольку gcd[x%,p(x)] = 1,
p(x) не делит х*, и поэтому V{(x) ф О для любого »'. Более того,
Vi(x) ф Vj(x) для г Ф j. [В этом мы убеждаемся от противного.
Предположим, что V{(x) = Vj(x) для » ф j. Тогда из выражений
Xх = p(x)qi(x) + V{(x) и х? = p(x)qj(x) + Vj(x) получаем х' — х>' =
p(x)[qi(x) - qj(x)] + vi(x) - Vj(x) = p(x)[qi(x) - <y(*)]. Из последнего
равенства следует, что р(г)|(ж* — х*) — ж'A — х?~%) при условии,
конечно, что j > i. Так как р(ж) не делит х\ то р(ж)|A — х*~*) —
полином степени < 2Г — 1, а это и есть необходимое противоречие,
поскольку р(х) с-примитивен.] Поэтому для i — 0,1,2,... ,2Г — 2
мы получаем 2Г — 1 различных ненулевых полиномов v{(x) степени
^ г — 1. Заменяя а; на а в выражении х* — p(x)qi(x) + Vi(x), получаем
а1 = «,-(«) = vir^iar~1 Н (- vi2a2 + ьц<х + vi0.
Таким образом, из этого соотношения видно, что каждый элемент
из F* единственным способом представляется в виде полинома
от а над GFB) степени ^ г - 1. Нулевой элемент из F пре-
представляется нулевым полиномом. Следовательно, сложение в F
можно рассматривать как сложение полиномов, и нам известно,
как делать это над GFB). Теперь легко можно проверить, что
F —коммутативная группа по сложению, а вместе с предыдущими
результатами это означает, что F — поле.
Ло настоящего времени мы имели дело с двумя представлени-
представлениями поля GFBr): степенное представление (удобное при умноже-
умножении) и полиномиальное представление (удобное при сложении); см.
также табл. 3.3.1. Существует также третье представление, полу-
получаемое, если представлять полином вектором его коэффициентов.
Определяя г-кортеж
V = {Vr~l,Vr-2, . . . ,V2,Vi,V0)
как вектор над GFB), получаем очевидным образом векторное пре-
представление поля GFBr). Отметим, что существует 2Т различных
векторов длины г. Сложение векторов выполняется покомпонен-
покомпонентно, и результат сложения — снова вектор; следовательно, оно
весьма удобно для сложения элементов поля GFBr). Умножение
вектора v на скаляр s определяется правилом
8(Vr-l,Vr~2,---,V2,Vi,Vo) = (8Vr-i,SVr-2,...,8V2,SVi,8V0).
Поля Галуа GF(pr) 199
Кроме того, имеется нулевой вектор. Множество всех двоичных
векторов длины г с операциями и свойствами, определенными
выше, образует векторное пространство над GFB), обозначаемое
V,.
Скалярное произведение двух векторов u = («r_i,«r_2,...,
U2,iii,«o) и v = (iv-i,t>r-2i ¦• •,i>2,vi,v0) в Vr определим формулой
u-v = (ur_iiv_i, «г_2«г-2 «2^2, «1«1,«о»о)- Если скалярное про-
произведение двух векторов равняется нулю, то векторы называются
ортогональными.
Пример. Пользуясь с-примитивным полиномом р(я) = х4 + х +
1, построим поле GFB*). Элементы получаются повторным
применением равенства а4 = а+1, где р(а) = 0; в табл. 3.3.1 для них
даны описанные выше три представления. Например, а5 = а4 ¦<* =
(а+1)а = а2+а и т.д. Для перемножения двух элементов мы просто
складываем их показатели степени и пользуемся тем, что а15 = 1;
например, а8 • а9 = а17 = а2. Кроме того, а5/а8 = а5 • аA5"8) =
а5 • а7 = а12. Для сложения мы используем либо полиномиальное,
либо векторное представление элементов и выполняем сложение
покомпонентно.
3.3.3. Схемы для полиномиальной арифметики в GF(ST)
На материале этого раздела основана теория кодов, обнару-
обнаруживающих и исправляющих ошибки, обсуждаемая в гл. 4 [мы
придерживаемся книги (Afrati, 1985)]; однако тема довольно тех-
технична, и если читатель не знаком с регистрами сдвига, то для
хорошего понимания от него могут потребоваться дополнительные
усилия [см.-, например, (Taub, 1982)].
Схемы, которые мы будем обсуждать, в основном состоят из
элементов, показанных на рис. 3.3.1. Сумматор выводит сумму
двух значений, представленных на входе, а умножитель выводит
произведение значения, представленного на входе, на константу а.
Элемент памяти «сохраняет» значение, представленное на входе,
а потом выводит его.
Наши схемы очень напоминают регистры сдвига. Регистры
сдвига работают с сигналом сдвига, который обычно обеспечи-
обеспечивается генератором частоты; этот сигнал не будет включаться
в приведенные ниже диаграммы. В регистрах сдвига элементы
памяти — просто устройства задержки (триггеры D-типа), где
значение, представленное на выходе — это значение, представ-
представленное на входе точно одним тактом раньше. Каждый элемент
200
Полиномы
Поля Галуа GF(pr) 201
Сумматор
Элемент памяти
Рис. 3.3.1.
Строительные блоки схем.
Умножитель
Выход
Вход
Рис. 3.3.2.
Схема для умножения полиномов.
задержки рассматривается как этап регистра сдвига. Более того,
поскольку мы имеем дело с элементами поля GFB), сумматор —
это просто схема исключающего ИЛИ, а умножитель — просто
соединение, если константа равна 1, или разрыв соединения, если
константа равна нулю.
Ввод и вывод в регистре сдвига выполняются последовательно.
Когда вводится или выводится полином, то на вход или выход по-
подаются только коэффициенты [которые принадлежат полю GFB)]
по одному элементу за такт. Отметим, что сначала передаются
коэффициенты при самих высоких степенях. (Это происходит пото-
потому, что при делении мы сначала работаем с коэффициентами при
слагаемых наивысшей степени в делимом.) Например, полином
р(х) - спхп + Сп.хх"-1 + • • • + с0
вводится в регистр сдвига или выводится из него как последова-
последовательность элементов поля GFB), в которой первым идет с„, одним
тактом позже — с„_1 и т.д.
Ниже представлены схемы для умножения или деления произ-
произвольного полинома на другой данный полином. Схема, представ-
представленная на рис. 3.3.2, умножает любой полином
а(х) = сцж* + ak_ixk~l Н \- а0,
появляющийся на входе, на данный полином
h(x) = hrxr + /ir-i^ + • • • + h0.
Предполагается, что изначально все элементы задержки содер-
содержат «0»; кроме того, за коэффициентами полинома а(х), которые
вводятся последовательно, следует г раз «0».
Очевидно, что вычисляемое произведение равно
a(x)h{x) =akhrxk+r +
+ (а*_2Лг
aoho.
Как видно из рис. 3.3.2, когда первый коэффициент <ц полинома
а(х) появляется на входе, первый коэффициент athr полинома
a(x)h(x) появляется на выходе. В этот момент все элементы
задержки содержат «0». Через такт на входе появляется а*_1,
а* содержится в первом элементе памяти, а остальные элементы
памяти содержат «0»; выход равен a.k-\hr+(ikhr-i, что совпадает со
вторым коэффициентом произведения a(x)h(x). Аналогично, после
двух тактов а*_2 появляется на входе, элементы памяти содержат
ai_i,a*,0,. ..,0,0,0, и на выходе появляется третий коэффициент
полинома a(x)h(x). Этот процесс продолжается таким же образом.
После г + к — 1 тактов регистр сдвига содержит 0,0,0,..., 0, a0, ai,
и предпоследний коэффициент полинома a(x)h(x) появляется на
выходе, а именно aofti + aifto- После г + к тактов регистр сдвига
содержит 0,0,0,... ,0,0,ао, и выход— аоЛо, последний коэффициент
произведения a(x)h(x).
Другая схема для умножения показана на рис. 3.3.3. Коэффи-
Коэффициенты произведения формируются в элементах памяти регистра
сдвига. Когда первый коэффициент появляется на входе, на выхо-
выходе появляется а*Лг, и все элементы памяти содержат «0». Через
такт регистр сдвига содержит at^o,at/ii,... ,а*Лг_1, вход— a*-i,
а выход — это a.k-\hr + а*Лг_1, что является вторым коэффици-
коэффициентом произведения a(x)h(x). В следующем такте регистр сдвига
содержит ai_iAo,at/io-l-at_1/»i,a*h1-|-ajt_iA2,.. .,а*Лг_2-1-а*_1Лг_1,
вход есть ajt_2, а выход — это ak-2hr + ak-\hr-i + а*Лг_2, третий
коэффициент полинома a(x)h(x). Процесс продолжается таким
образом и дальше.
На последнюю схему можно взглянуть с другой стороны. А
именно, множество г элементов памяти образует регистр сдвига,
который может запоминать полином. В начале этот полином
равен 0. Когда вводится at, к содержимому регистра добавляется
а»Л(ж). Задержка на один такт означает умножение на х, и на
выходе мы получаем первый коэффициент. Появление а*_1 на
202 Полиномы,
Выход
Вход
Вход oi (х)
Рис. 3.3.3.
Другая схема для умножения полиномов.
Выход
Вход
Рис. 3.3.4.
Полиномиальный умножитель с двумя входами.
входе добавляет aj;_i/i(r) к содержимому регистра, а единичная
задержка умножает на х, и мы получаем второй коэффициент на
выходе и т.д.
Схема представленного на_рис. 3.3.3 типа может иметь несколько
входов. Например, схема на рис. 3.3.4 имеет два входа, cti(x) и
02(ж), и выход равен
где
Л(х) = hrxr + Л,-!*'-1 + • • • + Ло, к(х) = кгхг + Arr-ix"-1 + • ¦ • + к0.
Пример. Схема, приведенная на рис. 3.3.5, умножает входной
полином на h(x) = xe + x5+x4 + x3 + l над GFB). Читателю следует
шаг за шагом рассмотреть операции втой схемы и сравнить
результаты с результатами вычислений вручную.
Схема для деления произвольного полинома, скажем, d(x) =
dnxn+dn^ixn~l-\ \-d0 на полином д(х) — дгхг + дг-1хг~г Н \-до,
представлена на рис. 3.3.6. Регистр содержит вначале все «О».
Поля Галуа GF(pr) 203
Выход
Вход
Рис. 3.3.5.
Схема для умножения на х6 + хь + ж4 + х3 + 1.
Выход
Вход
Рис. 3.3.6.
Схема для деления полиномов.
Выход равен «О» для первых г тактов. Затем появляется первый
ненулевой выход, это dng~l — первый коэффициент частного. Для
каждого коэффициента частного iy полином qjg(x) должен вычи-
вычитаться из делимого [Напомним, что в GFB) сложение совпадает с
вычитанием.] Это достигается с помощью линий обратной связи.
После п тактов частное полностью появляется на выходе, а оста-
остаток находится в элементах памяти регистра. Это легче понять,
если рассмотреть схему на рис. 3.3.7, взять в качестве делимого
полином х
13
выполнить деление.
Выход
Рис. 3.3.7.
Схема для деления на хе + х5 + х4 + х3 + 1.
Приведенные выше схемы легко приспособить для полиноми-
полиномиальной арифметики по модулю д(х). Регистр, показанный на
рис. 3.3.6, может запоминать элементы поля GFB), которые можно
рассматривать как коэффициенты полинома
6(х) = б,-!*1-1 + 6Г-2*Г-2 + • • • + Ъо
степени ^ г — 1. После сдвига содержимого регистра на еди-
единицу вправо (или по истечении одного такта) полином в памяти
204 Полиномы
становится равным
Ь'(х) = 6г_2хг + Ьг_3х
г~3
¦ + Ьох - br-i
- xr},
где последнее слагаемое — результат линии обратной связи. Это
можно переписать в виде
что совпадает с
Ь'(х) = xb(x) [mod g(x)].
Чтобы сделать изложение яснее, рассмотрим пример. Возьмем
д(х) = х4 + х + 1 и поле GFB). Полином д(х) с-примитивен и его
корень а — примитивный корень поля GFB4), т.е. все элементы
поля GFB4) получаются из первых 16 степеней а. Соответствую-
Соответствующий регистр показан на рис. 3.3.8. Если поместить «1» в первый
слева элемент памяти и «0» в остальные, то последовательные
сдвиги дадут нам представления различных степеней а в том же
самом виде, как они даны в табл. 3.3.1. Отметим, например, что
выход «1» из последнего элемента памяти соответствует а4, что
заменяется на а + 1 с помощью линии обратной связи.
Вход
Рис. 3.3.8.
Схема, которая производит вычисления в GFB4).
Перемножение двух элементов в GFB4) может быть выполнено с
использованием регистра на рис. 3.3.8 в качестве накапливающего
регистра точно так же, как это реализуется в цифровых ЭВМ.
Пример. Используя регистр, изображенный на рис. 3.3.8, перем-
перемножим элементы а10 и а7 поля GFB4), как они представлены в
табл. 3.3.1, т.е. а10 = а2 + а + 1 = @,1,1,1) и а7 = а3 + а + 1 =
A,0,1,1). Содержимое накапливающего регистра показывается
ниже после каждой операции. Отметим, что используется схема,
которая может прибавлять векторы к вектору, содержащемуся в
накапливающем регистре; кроме того, векторное представление
элементов не содержит запятых и коэффициенты при а0 записы-
записываются слева.
110 1
Добавить
Сдвиг
Добавить
Сдвиг
Добавить
Сдвиг
Добавить
1
0
1
1
• A110)
¦A110)
•A110)
¦(ШО)
Упражнения
Накопитель
0000
1110
0111
0111
1111
0001
1100
0010
205
что и является ответом.
Упражнения
Раздел 3.1.1
1. Если мы работаем в полиномиальной арифметике по моду-
модулю 7, то чему равно Зг2 + 5х +1 минус 6г + 4? Чему равно
произведение втих полиномов?
2. Является ли произведение нормированных полиномов нор-
нормированным? Чему равна степень произведения полиномов
степеней тип соответственно? Чему равна степень суммы
полиномов степеней га и и соответственно?
3. Для каких простых чисел р существуют, и существуют ли
вообще, такие числа, что полиномы хь + 2х +1 и х8 + 8г2 +1
совпадают как функции на Щ,1
a. " Найдите корни полинома х3 + Ъх + 3 в Ъ$-
b. Используя PDF, разделите 2х* + Зж3 + х + 4 на х2 + 2
4.
5
5. Покажите, что если Pi(x) и Рг(я) — два полинома в Щх] и
полином Р2(х) нормирован, то при выполнении деления в
кольце Q[r], Pi(x) = p2(x)q(x) + г(х), полиномы q(x) и г{х)
принадлежат кольцу Ж[х]. Что произойдет, если полином
Ръ(х) не нормирован?
6. Пусть Pi(x) ирг(а;) — два полинома над полем вещественных
чисел степени не более п. Если xi,X2,- ¦. ,Xi, к > п, —
различные числа, причем pi(x,) = РгО^»), » = 1,2,..., А, то
pi(x) = pi(x) для всех значений х.
206
Полиномы
Упражнения 207
7. Пусть р(х) = спхп + cn^ixn~l 4- • • • + с\х 4- со — полином
над полем вещественных чисел степени п, и пусть х0 —
вещественное число, такое, что р(х0) > 0. Если q(x)
удовлетворяет соотношениям
р(х) = (х - xo)q(x) +p(x0)
Ъ2х + Ы + р(»о)
и 6,- > 0, i = 1,2,...,п, то ни один вещественный нуль
полинома р(х) не превосходит х0.
В двух следующих упражнениях представлены два специальных
типа полиномов. Они использовались для тестирования различных
методов отделения вещественных корней, описанных в гл. 7.
8. Полиномы Чебышёва могут быть рекурсивно получены по
формулам
ТЬ(х) := 1, Щх) :=х и
Тп+2(х) := 2хТп+1(х) - Тп(х), п > 0.
Все корни этих полиномов простые, вещественные, распо-
расположены в открытом интервале (—1,1) и симметричны (т.е.
если х — корень, то и —х — также корень); см. также
разд. 7.6. Определите Т2(х), Т3(х), Г4(х) и Т5(х).
9. Полиномы Лежандра могут быть рекурсивно получены по
формулам
Р0(х) := 1, Рг(х) := х и
(п + 2)Р„+2(х) := Bп + 2)хРп+1(х) - (п + 1)Р„(х), п
0.
Все корни этих полиномов простые, вещественные, распо-
расположены в открытом интервале (—1,1) и симметричны (т.е.
если х — корень, то и —х — также корень). Определите
Рг(х), Рз(х), Pi(x) и Рь(х) с целыми коэффициентами.
Раздел 3.1.2
1. Для полинома р(х) найдите оценку для времени вычисления
полинома р(а 4-х), а ^ 1. [Указание. См. также статью
(Akritas, Danielopoulos, 1980).]
2. Для р(х) = х3 - 1х + 7 вычислите рC + х), используя схему,
о которой говорилось в втом разделе.
3. Чему равно время вычислений подхода «грубой силы» для
вычисления значения полинома в данной точке? А именно,
каждый член вычисляется по формуле ж* := х :х'~1, а затем
умножается на С{.
Следующие упражнения распространяют метод Руффини-Горне-
ра на полиномы с комплексными коэффициентами.
4. Рассмотрим полиномр„(г) = cq + c\z-\ \-CnZn, где теперь
z = х + iy, Cj — a.j 4- ibj, j = 0,1,... ,n (т.е. коэффициенты
являются гауссовыми числами, определенными в упр. 7
разд. 2.2.2) и pn(z) = gn(x,y) + ihn(x,y) (гауссов полином).
Следовательно, в рекурсивной схеме (RH) этого раздела
Pi будет комплексным и вида р* := дь 4- *'Л*. (Напомним,
что о = z = ж 4- iy.)
Покажите, что следующая рекурсивная схема — вто
метод Руффини-Горнера для полиномов над полем комп-
комплексных чисел:
до •= а„,
h0 := bn
и для к >0 (пока кфп)
дъ ¦¦= ап-ь + х
Л» := 6n-fc + у •
k-i - у ¦ Л*_1,
k-i + х ¦ Л*_1.
5. Вычислите значение полинома рз(-г) = A — 5»)г3 — 2гг2 — 7г +
D — 3i) в точке г = 2 + 3»\
6. Вычислите значение полинома Ps(z) = z5 + (—9 + 2i)z4 +
A8 + 2h>3 + C9 - 72г>2 - B9 - 69i> -116» в точке г = 3 +».
7. Разработайте алгоритм, который для данного гауссова
полинома p(z) и гауссова целого числа а + Ы вычисляет
полином p(z + а + ib).
8. Воспользуйтесь алгоритмом упр. 7 и вычислите p(z+2+3i),
где р(г) — полином из упр. 5.
9. Воспользуйтесь алгоритмом упр. 7 и вычислите p(z+ 3 + i),
где р(г) — полином из упр. 6.
208
Полиномы
Раздел 3.1.3
1. Каково время вычисления интерполяционного полинома
Лагранжа?
2. Используйте интерполяцию Лагранжа для нахождения по-
полинома р(х) G Ш[х] степени не более 2, такого, чторA) = -8,
рC) = 2 и рD) = 13.
3. Найдите полиномр(х) е 2ц[х], такой, чторA) = 8 (mod 11),
рC) = 1 (mod 11) и рG) = 4 (mod И).
4. Покажите, что
? **(*) =!
для всех х.
5. Пусть ai,a2,. • • ,а«+1 —различные элементы поля /, и
пусть bi, 62, • • •, bn+i принадлежат /. Пусть р(х) — полином
из J[x], deg[p(x)] ^ п, такой, что р(<ц) = bit I ^ i < п +1.
Покажите, что р(х) - 6i = (х — <п)д(х) для некоторого по-
полинома q(x) из /[х], такого, что deg|g(x)] < п - 1. Чему
равны значения полинома д(х) в точках 02,03,-- .,an+i?
Опишите рекурсивную процедуру вычисления р(х). Ис-
Используйте эту процедуру, чтобы выполнить интерполяцию
в упр. 1 и 2.
6. (Двумерная интерполяция.) Разработайте алгоритм для
вычисления полинома р(х, у) € J[x, у], J — поле, где степень
полинома р(х, у) по у меньше п и
р(х,сц) = bi{x), i=l,2, ...,n,
для различных a,- G / и Ь,(х) е /[я]. Покажите, что полином
р(х,у) определен однозначно.
a. Бели предположить, что операции в поле J выпол-
выполняются за время 0A) и что степени полиномов h(x)
меньше т, i = 1,2,..., п, чему равно время вычислений
вашего алгоритма (в терминах m и п)?
b. Вычислите полином р(х, у) е 2ц[х, у], такой, что
р(х, 1) = х3 + 2х + 3,
р(*,2)=*3 + 5.
Упражнения 209
7. (Многомерная интерполяция.) Разработайте алгоритм для
вычисления полинома р(х\, х2,..., хТ) € J[x\, г2,..., гг], J —
поле, где степень полинома p(xi, жг,..., а;г) по жг меньше п
и
p(x1,x2,...,xr.1,ai) = 6,-(xj,«2,...,er_i), * = 1,2,...,n,
для различных а,- е / и ^(яъа^,... ,rr-i) G
J[ii,x2)...,a;r_i]. Покажите, что полином p(xi,X2,... ,хг)
определен однозначно. Более того, предполагая, что опе-
операции в поле / выполняются за время ОA) и что степени
полиномов bi(xi,x2,---,xr^i) меньше п, i = 1,2,... ,п, оце-
оцените время вычислений вашего алгоритма.
Раздел 3.1.4
1. Покажите, что pi(x) = ръ{х) тогда и только тогда, когда
™(x)\\pi(x) — р2(х)] определяет отношение эквивалентности
на J[x], J — поле.
2. Завершите доказательство теоремы 3.1.9.
3. Используя схему «(вычисление значений)-интерполяция»,
разработайте алгоритм для пробного деления двух полино-
полиномов над полем, т.е. еслирх(а;)|р2(а;), то возвращают частное,
в противном случае утверждается, что р\{х) не делит pi{x).
[Указание. Здесь существенно то, что если deg[pj(x)] = n и
^gfe^fa)] = го, m ^ n ^ 0, то для частного q(x) мы имеем
deg[g(x)] = m — п. Таким образом, если степень полинома,
полученного интерполяцией, не равна m — п, то мы можем
утверждать, что Pi(x) не делит Рг(я).]
4. а. Чему равно время вычислений алгоритма, разрабо-
разработанного в упр. 3?
Ъ. Покажите, как полученный алгоритм вычисляет проб-
пробные деления P2(x)/pi{x) над Ж.ц[х] для
Pi(x) = 5r + 7 и р(х) = х2+6х + 8;
Pi(x) = 5x + 7 и р(х) = х2 + 6х + 6.
5. Разработайте алгоритм, аналогичный алгоритму упр. 3
для пробного деления над Z, разделив 969/19 и 970/19,
пользуясь делениями только над Zp для р < 20.
6. Чему равно время вычислений алгоритма «(вычисление
значений)-интерполяция» для полиномиального умноже-
умножения над Щх], разработанного в этом разделе? (Как всегда,
предполагается единичная цена операций одинарной точ-
точности.)
1 4-274
210 Полиномы
Раздел 3.2.1
1. Делит ли полином х2 + х + 1 полином х6 — 1 над целыми
числами?
2. Найдите все т такие, что х3 + 5 делит х5 + х3 + х2 — 15 в
ZmW-
3. Вычислите наибольший общий делитель полиномов pi(x) =
х3 — 7х + 7 и р2{х) = Зх2 — 7 над вещественными числами.
4. В упр. 7 разд. 2.2.2 мы определили кольцо Щг\ гауссовых
целых чисел; напомним, что если z = x + iy — такое число,
х,у EZ, то его норма равна n(z) = х2 + у2[= (x + iy)(x-iy)].
Покажите, что Щг] — евклидова область.
Раздел 3.2.2
1. (Цепные дроби для полиномиальной аппроксимации.)
Пусть с(х) и d{x) — два полинома над полем, причем
deg[c(x)] > deg[d(x)], и пусть ai(x),a2(x),... — полиномы,
получающиеся как частные при применении алгоритма Ев-
Евклида к с(х) и d(x); кроме того, пусть ро(х) = q-i(x) = 0
и p-i(x) = qo(x) = 1. Мы хотим показать, что подходящие
дроби pn(x)/qn(x) для цепной дроби [а1(х),а2(ж),...] суть
«лучшие» приближения низких степеней для рациональ-
рациональной функции d(x)/c(x), где подходящие дроби определяют-
определяются аналогично тому, как они определялись в разд. 2.2.4.
(Читателю следует еще раз посмотреть его.)
Докажите, что если р(х) и q(x) — два полинома, та-
таких, что deg[g(x)] < deg[gn(x)] и deg[p(x)c(x) - q{x)d{x)} <
&eg\pn-i(x)c(x) - 4n-i(x)d(x)] для некоторого n ^ 1, то
p(x) = cpn-i{x) и q(x) = cqn-i(x) для некоторой константы
с. Каждый qn{x) — «лучший» полином в том смысле,
что ни для какого ненулевого полинома q(x) меньшей
степени нельзя подобрать полином р(х) так, чтобы сте-
степень полинома р(х)с(х) — q(x)d(x) не превосходила степени
рп(х)с(х) — qn(x)d(x). [Указание. Воспользуйтесь алгорит-
алгоритмом ХЕА-Р; см. также (Knuth, 1981; р. 622).]
2. Докажите, что если Р1(х),р2(х),рз(х) € J[x], J — поле,
gcd\pi{x),p2(x)] = 1 и pa(x)\pi(x), то gcd\p3(x),p2(x)] = 1.
3. Докажите, что если Р\(х),р2(х),рз(х) € J[x], J — поле,
gcd\p1(x),p2(x)] = 1, то gcd\p1(x)p3(x),p2(x)] = gcd[p3(z),p2(a;)].
4. а. Примените алгоритм ХЕА-Р к полиномам х2 + 1 и
хъ + 1 в 7L2[x].
Упражнения 211
b. Решите в Q[x] уравнение р(х)(х2 - Зх + 2) + q{x)(x2 +
* + 1) = 1.
c. В Щх] найдитеgcd полиномов zn-l иа;9-1. [Указание.
Воспользуйтесь тождеством хт — 1 (mod хп — 1) =
хт (mod r») _ j I
5. Используйте алгоритмХЕА-Р, чтобынайти gcd\p1(x),p2(x)]
для Pi(x), p2{x) G 2р[я] в каждом из следующих примеров. В
каждом случае вычислите соответствующие полиномы д(х)
и f(x), такие, что gcd\p1(x),p2(x)] -pi(x)g(x) +p2(x)f(x).
a. pi(x) = х3 + х + 1, р2(х) = х2 + х + 1 для р = 3 и р = 2.
Ь.
l, р2(х) = х3 + х
для р =
ир-Ъ.
c. pl(x) = х5 + х4 + х3 + х + 1, р2(х) = х4 + х3 + х2 + х +1
для р = 5.
d. Pi(x) = х5 + х4 + х3 - х2 - х + 1, Р2(*) = х3 + х2 + х+1
для р=Ъ вр=3.
Раздел 3.2.3
1. Докажите, что в Ш[х] нет неприводимых полиномов нечет-
нечетной степени и что в С[х] нет неприводимых полиномов
степени 2.
2. Известно, что у полинома р(х) = х3 - 2х2 + х - 2 есть корни
—i и +г; разложите р(х) в произведение неприводимых
полиномов в Щх].
3. Найдите, если они существуют, все сомножители степени
1 в Щх] следующих полиномов:
a. ж3 - 2х2 - 5х + 6.
b. Зх4 + 4х3 - Qx2 - 9х - 10.
4. Докажите, что если полином р(х) в Щх] нормирован, то он
примитивен.
5. Покажите, что если число г ? Q таково, что полиномы
г -р(х) и р(х) оба примитивны, то г = ±1.
6. Является ли полином р(х) = 2х5 + 15х4 + 9х3 + 3 неприводи-
неприводимым в Щх].
7. Покажите, что если р — простое число, то полином х11 — р
неприводим в Щх].
8. Определите, какие из следующих полиномов неприводимы
в Щх]:
a. х4 + 1;
b. х7+11х3-ЗЗх
212
Полиномы
С. X
+х2+х+1;
d. х3 - 7х2 + Зх + 3;
e. ж3 + х2 - 1х - 1.
Раздел 3.2.4
1. Примените алгоритм PSQFF для вычисления разложения
полинома р(х) = х12 - Збх10 + 510а:8 - 3580ж6 + 12825а;4 -
21384а;2 + 11664 на свободные от квадратов множители.
[Указание. Данный полином — произведение полиномов
х - 1, х + 1, (х - 2J, (* + 2J, (х - ЗK, (х + ЗK.]
2. Вычислите разложение на свободные от квадратов множи-
множители следующих полиномов:
a. х6 -х5 - 4а;4 + 2а;3 + 5х2 - х - 2;
b. х6 - Зх5 + 6х3 - Зх2 - Зх + 2;
c. хь - 2х4 - 2х3 + 4х2 + х - 2;
d. х6 - 2ж5 - 4х4 + 6х3 + 7ж2 - 4х - 4;
e. а;6 - 6х5 + 12х4 - 6х3 - 9х2 + 12х - 4.
f. х7 - 15х6 + 94х5 - 318х4 + 625х3 - 711х2 + 432х - 108.
(Явная демонстрация различия между разложением
на неприводимые множители и разложением на сво-
свободные от квадратов множители).
3. Для каждого простого р найдите отличный от константы
полином р(х) над Ж,р такой, что р'(х) = 0.
4. Докажите, что если р(х) — полином из F[x], где F —
поле, содержащееся в поле комплексных чисел, то р(х) не
имеет кратных множителей тогда и только тогда, когда
gcd[p(x),p'(a;)] = l.
5. Исследуйте следующие полиномы на кратные сомножители
в Щх\.
a. х3-За;2 + 4;
b. х3-2а;2-х + 2.
6. Докажите, что полином р(х) имеет кратный сомножитель
в Q[x] тогда и только тогда, когда р(х) имеет кратный
сомножитель в С[х].
Раздел 3.3.1
1. Каковы порядки ненулевых элементов поля GFG)?
2. Докажите теорему 3.3.9.
3. Пусть р — простое число; покажите, что хрт — х делит
хр — х в Zp[x] тогда и только тогда, когда га делит п.
Упражнения 213
4. Покажите, что если а € GF(q) и аТ = 1, то ad = 1, где
d = gcd[r,q-l].
5. Пусть га(х) = х2 + 1; найдите примитивный корень /? поля
%з[х]т(х)- Найдите также минимальный полином элемента
0 в Z3[x].
6. Докажите теорему 3.3.16.
7. Найдите все неприводимые сомножители полинома х8 — х
в Z2[x].
8. Теорема 3.3.8 утверждает, что у каждого конечного поля
Fq есть образующая. Покажите, что если а — образующая
поля Fq, то о* также является образующей тогда и только
тогда, когда gcA{j,q — 1) = 1. В частности, имеется всего
^(д — 1) различных образующих поля Fq.
9. Как мы видели непосредственно перед теоремой 3.3.9, на-
нахождение образующей в конечном поле Ft сильно зависит
от разложения числа р — 1. Покажите, что существует
последовательность простых чисел р, таких, что веро-
вероятность того, что случайный ненулевой элемент а € Fp
является образующим, стремится к нулю. (Указание.
Воспользуйтесь следующими фактами: (а) теоремой Ди-
Дирихле о простых числах в арифметической прогрессии,
которая утверждает, что если пик взаимно просты, то
существует бесконечно много простых чисел, которые = к
(mod n); (b) предыдущим упр. 8, откуда мы делаем вывод,
что отношение числа всех ненулевых элементов, являю-
являющихся образующими, к числу ненулевых элементов равно
ф(р — 1)/(р — 1) = ПA ~ 1Д0> гДе произведение берется по
всем d\(p — 1); (с) J] 1/A — 1Д0 стремится к бесконечности,
когда произведение берется по всем простым числам.)
10. Используйте теорему 3.3.21, чтобы доказать, что если г —
простое число, то существует (рг - р)/г различных нор-
нормированных неприводимых полиномов степени г. (Более
общий результат получен в разд. 6.2.2.) Заметим, что по
малой теореме Ферма (рг — р)/г — целое число.
11. Предположим, что г — степень простого числа /. Найдите
простую формулу для числа нормированных неприводимых
полиномов степени г над Fp.
12. Докажите, что сравнение f(x) = 0 (mod р) степени п (п < р,
/(х) нормирован) имеет п решений тогда и только тогда,
когда /(х) является делителем полинома хр — х (mod p);
т.е. тогда и только тогда, когда хр — х = /(х)д(х) + р ¦ г(х),
214
Полиномы
где q(x) и г(х) — полиномы с целыми коэффициентами и
г(х) — либо полином степени < п, либо нулевой полином.
13. Для р = 7,11 и 13 найдите наименьшее положительное
целое число, которое порождает ненулевые элементы поля
Fp, и определите, сколько из чисел 1,2,3,... ,р— 1 является
обр азующими.
14. Сколько элементов содержится в наименьшем расширении
поля F5, которое содержит все корни полиномов я2 + х + 1
и х3 + х + 1?
15. У каких полиномов в Fp[x] производные тождественно равны
нулю?
16. Пусть Fq — конечное поле из q = рг элементов и <т — отоб-
отображение, переводящее каждый элемент в его р-ю степень:
<т(а) = аР. Докажите, что (а) <т является автоморфизмом
поля Fq (т.е. <т — это взаимно однозначное отображение,
сохраняющее сложение и умножение); (Ь) элементы поля
Fq, остающиеся неподвижными под действием <т, — это в
точности элементы простого поля Fp; (с) множество эле-
элементов, остающихся неподвижными при <т;, — это поле Fpd,
где d= gcd(j, r).
17. Докажите, что если а — какой-либо элемент € Fq, то эле-
элементы поля Fq, удовлетворяющие тому же нормированному
неприводимому полиному с коэффициентами из Fq (назы-
(называемые также сопряженными), — это элементы <xJ(a) = ap ,
где р' = pi, а <т определено выше в упр. 16.
18. При каких условиях нар и г каждый элемент поля Fq, кроме
О и 1, является образующим ненулевых элементов поля Fq,
q = рг? При каких условиях каждый элемент, отличный
от 0, 1, является либо образующим, либо квадратом
образующего?
19. Предположим, что а ? Fpv удовлетворяет полиному х2 +
ах + Ь, где a, b E Fp.
a. Докажите, что ар также удовлетворяет этому поли-
полиному.
b. Докажите, что если а ? Fp, то a = —а — ар и Ь = ap+1.
c. Докажите, что если а $ Fp и с, d E Fp, то (ca + d)p+1 =
d2-acd + bc2 (u€Fp).
20. Мы хотим ответить на вопрос: сколько корней имеет
уравнение хп = 1 над Fql (Эти корни называются также
корнями «-и степени из единицы.) Пусть a — образующий
(ненулевых элементов) поля Fq. Докажите, что а* есть
Упражнения 215
корень п-й степени из единицы тогда и только тогда,
когда пк = 0 (mod q — 1), и что число корней n-й степени
из единицы равно gcd(n, q— 1). В частности, Fq имеет
примитивный корень n-й степени из единицы (т.е. элемент
?, такой, что степени ? пробегают все п корней n-й степени
из единицы) тогда и только тогда, когда n\(q — 1); если
? — примитивный корень n-й степени из единицы в ^д,
то ?* — также примитивный корень n-й степени тогда и
только тогда, когда gcd(it, п) = 1.
21. Сколько корней 15-й степени из единицы имеется в поле из
73 элементов?
22. Для всех а, таких, что gcd(a, т) = 1, элемент а называется
квадратичным вычетом по модулю т, если сравнение
г2 = a (mod m) имеет решение. Если оно не имеет решения,
то а называется квадратичным невычетом. (См. также
упр. 18(Ь) раздела 2.3.2.)
a. Докажите, что квадратичный вычет никогда не может
быть образующим группы ненулевых элементов поля
FP-
b. Покажите, что если р — простое число Ферма, то
любой квадратичный невычет является образующим
группы ненулевых элементов поля Fp; более того,
покажите, что-5 является образующим группы нену-
ненулевых элементов поля Fp, кроме случая р — 3, а 7 —
образующим для Fp, кроме случая р = 3.
23. (Вычисление квадратных корней по модулю р.) Пусть р —
нечетное простое число. Рассмотрим сравнение ж2 = о
(mod p), про которое мы знаем, что оно имеет решение (см.
упр. 18(Ь) разд. 2.3.2); мы хотим найти такое целое число
х, которое удовлетворяет этому сравнению. Нужно дей-
действовать следующим образом. Пусть к — квадратичный
невычет, вычисленный нами каким-либо образом. Запи-
Запишем р — 1 в виде 2а • s, где s нечетно, и положим и := к'
(mod р) и г := a(s+1^2 (mod р). Если р = 3 (mod 4), то
а = 1, s = (р - 1)/2, (s + 1)/2 = (р + 1)/4, и мы видим,
что х = г = a(-p+1Mi — требуемый квадратный корень. В
противном случае г достаточно близко подходит к квад-
квадратному корню из а и должно быть соответствующим
образом подправлено (с помощью корня степени 2а из еди-
единицы). Прежде чем осуществить эту подгонку, заметим
следующее:
216
Полиномы
(i) Величина (г2/аJ является корнем степени 2а-1 из
единицы (mod p), т.е.
= а'2"'1 = a^-
= 1 (mod р).
(ii) Элемент « является примитивным корнем степени 2"
из единицы (см. выше упр. 20). Чтобы убедиться в
этом, заметим прежде всего, что и — корень степени
2а из единицы (mod р), потому что
и2" =
= *'2" = Р-1 = 1 (modp).
(Заметим, что и2" = — 1 (modp), поскольку ifc —
невычет.) Теперь, если и не примитивен, должна
существовать меньшая степень и (делитель числа 2а),
дающая 1, откуда следует, что влемент и должен быть
четной степенью примитивного корня степени 2° из
единицы и, таким образом, и должен быть квадратом
в Fp. Однако вто невозможно, так как
u(P-l)/2 s
поскольку s нечетно, a ifc — невычет.
Таким образом остается вычислить подходящую степень
и4, 0 ^ b < 2а, такую, что иъг — требуемый корень из а.
Для этого напишем Ъ = Ьо + 2&i + 42>2 + • • • + 2а~2Ъа-ъ,
где последовательность битов вычисляется следующим
образом:
[1] Поскольку {г2/а) — корень степени 2™~1 из единицы
(modp), то, если мы возведем его в степень 2а~2,
результат будет равен ±1. Если он равен —1, положим
Ьо := 1, в противном случае положим bo := 0. В любом
случае 60 выбрано так, что [(иь°гJ/а]2" = 1 (mod p).
(Напомним, что и2" = — 1.)
[2] Предположим теперь, что мы вычислили 6о, 6i,..., 6fc_i
таким образом, что [(и|"+а*«+-+а*»*-Ч-J/а]а'~*~1 = 1
(mod р), и хотим найти 6*. Снова, как в [1], вычис-
вычисляем [(ul°+2bi+"+2*-1*»-irJ/a]2°~*'3 (modp), (где мы
возводим теперь в степень 2а~*~2), и если результат
равен —1, то полагаем Ь^ := 1, в противном случае
полагаем Ь* := 0. Таким образом мы гарантируем,
Упражнения 217
что [(u»o+2h+-+2*»*7.J/a]2»-'-3 = j (modp). Наконец,
когда мы дойдем до к = а — 2 и найдем 6а_2, получим
и мы вычислили квадратный корень из а.
Примените описанную процедуру к сравнению х2 = 17
(mod 89). См. также упр. 9 разд. 6.3.1. (См. статью
Adleman L.t Manders К., Miller G. On taking roots in finite
fields. Proceedings of the 18th Annual Symposium on the
Foundations of Computer Science, pp. 175-178, 1977.)
24. (Вычисление дискретных логарифмов в конечных полях.)
Напомним, что если G — конечная группа, ъ,Ь E.G тл у E.G
таковы, что у является степенью влемента Ь, то дискретный
логарифм у по основанию b — это любое целое число х,
обладающее свойством у = Ьх.
Если Fq — поле, в котором мы работаем, то следующий
алгоритм основан на предположении, что 6 — образующий
ненулевых влементов поля Fq и что все простые сомножи-
сомножители числа q — 1 маленькие (т.е. число q — 1 «гладкое»).
(См. Odlyzko A.M. Discrete logarithms in finite fields and their
cryptographic significance. Advances in Cryptology, Proceedings
of Eurocrypt 84, Springer-Verlag, pp. 224-314, 1985.)
Наша цель — найти значение х [mod (q — 1)], такое, что
Ьх = у (т.е. 0 ^ ж < q — 1). Если q — 1 = ["Г Ра — разложение
числа q — 1 на простые сомножители, то достаточно найти
х (mod pa) для каждого простого числа р, делящего q — 1;
мы можем затем применить греко-китайскую теорему об
остатках для вычисления х [mod (q — 1)].
1 [Предварительные вычисления.] Для каждого прос-
простого р, делящего ^ — 1, вычисляем корни р-й степени
из единицы rPiJfe = fc*(«~l)/p для ifc = 0,1,2,... ,р - 1.
(Заметим, что если Ь фиксировано, то эти вычисле-
вычисления нужно выполнить только один раз; с помощью
нашей таблицы значений {rPiis} мы готовы вычислять
дискретный логарифм любого у ? Fq - {0}.)
2 [Основной шаг вычисления х (modpa)!!] Для каждо-
каждого простого р, делящего 9—1, выполняем следующее.
Пусть х = жо + прН f-za_ipa~1 (mod pa), 0 < х,- < р.
Чтобы получить х0, мы вычисляем г/(*-1)/р, являющий-
являющийся р-м корнем из единицы, поскольку y(q~^ = 1; из у =
Ьх следует, что yd-V/P = I&i-V/p = 6^o(»-i)/p _ Грж<).
(Напомним, что б* = 1!) Таким образом, мы сравни-
218 Полиномы
ваем у(*-1)/Р с {rPijfe}o^jfe^p и полагаем хо равным тому
значению к для которого yb-WP — Гр t.
Чтобы получить «х, полагаем у := у/ЬХв (— bXlP •
ЪХзр ... bXa-lf ). Поскольку этот новый элемент у
является р-й степенью, мы имеем у(«~г)/р = 1 (не за-
забывайте, ЧТО б» = 1) И у(«"г)/Р3 = b(*il>+*aP-)(«-l)/P =
j*i(«-i)/p _ rPiXl. Снова мы полагаем х\ равным тлму
значению к, для которого y^~l)/p = гР)*. Продолжаем
аналогичным образом, пока не вычислим все значения
. х,- для соответствующего р.
3 [Греко-китайский алгоритм.] В этом месте нам из-
известны х (mod pa) для каждого простого числа р,
делящего q — 1. Применим греко-китайский алгоритм,
чтобы получить х [mod (q — 1)].
Раздел 3.3.2
1. Пусть щ, * = 0,1,...,7, — восемь элементов поля GF(8),
определенного неприводимым полиномом ж3 + х + 1 над Ъъ.
Выпишите таблицы сложения и умножения элементов поля
GF(8).
2. Постройте F9.,
3. Для каждой степени d ^ 5 найдите число неприводимых
над ^2 полиномов степени d и составьте их список.
4. Для каждой степени d ^ 6 найдите число нормированных
неприводимых над F3 полиномов степени d и для d ^ 3
составьте их список.
5. Для каждого из следующих полей Fq, где q = pr, найди-
найдите неприводимый полином с коэффициентами из простого
поля, корень а которого примитивен (т.е. порождает нену-
ненулевые элементы поля Fq), и выпишите все степени а как
полиномы от а степени < г: (a) F4; (b) Fs; (с) F27; (d) F25.
Упражнения по программированию
Раздел 3.3.1
1. Реализуйте алгоритм вычисления квадратных корней по
модулю р, описанный в упр. 23 этого раздела. (Вос-
Литература 219
пользуйтесь системой компьютерной алгебры с теоретико-
числовым пакетом.)
2. Реализуйте алгоритм вычисления дискретных логарифмов
в конечных полях, описанный в упр. 24 этого раздела.
Литература
Afrati F. Introduction to the theory of information (in Greek). National
Technical University of Athens, Greece, 1985.
Akritas A.G., Danielopoulos S.D. On the complexity of algorithms for
the translation of polynomials. Computing 24, 51-60, 1980.
Albert A.A. Fundamental concepts of higher algebra. University of
Chicago Press, Chicago, 1958.
Berlekamp E.R. Algebraic coding theory. McGraw-Hill, New York,
1968. [Имеется перевод: Берлекэмп Э. Алгебраическая теория
кодирования. М.: Мир, 1974.]
Cajori F. Homer's method of approximation anticipated by Ruffini.
American Society Bulletin 17, 409-414, 1911.
Childs L. A concrete introduction to higher algebra. Springer-Verlag,
New York, 1979.
Knuth D.E. The art of computer programming, Vol. 2, 2nd ed. Seminu-
merical algorithms. Addison-Wesley, Reading, MA, 1981. [Имеется
перевод первого издания: Кнут Д. Искусство программирова-
программирования для ЭВМ. Т. 2. — М.: Мир, 1977.]
Netto E. Vorlesungen u'ber Algebra. Erster Band. Teubner, Leipzig, 1896.
Sims C.C. Abstract algebra, a computational approach. Wiley, New York,
1984.
Taub H. Digital circuits and microprocessors. McGraw-Hill, New York,
1982.
Wang S.P., Trager B.T. New algorithms for polynomial square-free
decompositions over the integers. SIAM Journal on Computing 8,
300-305, 1979.
Yun D.Y.Y. On square-free decomposition algorithms. Proceedings of the
1976 SYMSAC (Yorktown Heights, NY), 26-35, 1976.
Глава 4
Часть III
ПРИЛОЖЕНИЯ И
СОВРЕМЕННЫЕ МЕТОДЫ
Эта часть книги посвящена приложениям материала, изложен-
изложенного в ч. I и II, и современным методам. В ней рассматриваются
следующие темы:
Глава 4. Коды, исправляющие ошибки, и криптография.
Глава 5. Наибольшие общие делители полиномов над целыми
числами и последовательности полиномиальных остатков.
Глава 6. Разложение на множители полиномов над целыми
числами.
Глава 7. Отделение и аппроксимация вещественных корней
полиномиальных уравнений.
Читателю следует помнить, что разд. 7.2 зависит от разд. 5.2.
Коды, исправляющие ошибки, и крип-
криптография
Кодирование и декодирование информации для поддержания
секретности называется криптологией. Однако имеется много
других типов кодов, где секретность не представляет интереса.
Примерами могут служить zip-коды, используемые почтовыми уч-
учреждениями, коды ASCII или EBCDIC, используемые для преобра-
преобразования символов алфавита в двоичную форму для представления
в ЭВМ, и Универсальный промышленный код, ряд черных вер-
вертикальных линий, содержащих информацию об изделии, который
можно обнаружить на многих товарах.
В этой главе мы будем рассматривать коды, предназначенные
защищать передаваемую информацию как от искажения втой
информации, так и от несанкционированных получателей.
4.1
Коды, исправляющие ошибки, — основные понятия
Ошибки при передаче данных по каналу могут возникать по
самым разным причинам, например из-за отказа аппаратуры,
«шумов», или «сбоев», которым подвержено чувствительное и
сложное электронное оборудование. Для защиты от ошибок мы
можем кодировать посылаемую информацию и декодировать ее на
другом конце таким образом, чтобы максимизировать вероятность
исправления или по крайней мере обнаружения таких ошибок.
Удачные схемы кодирования часто опираются на абстрактную
алгебру.
Алгебраическая теория кодирования насчитывает к настояще-
настоящему времени более 30 лет. Изначально она возникла в ответ на
знаменитую теорему Шеннона о кодировании (Shannon, 1948, 1949),
которая ограничивала эффективность ошибки, которая может по-
получиться на дискретном канале, но почти не давала указаний, как
эта эффективность может получиться. То есть теорема Шенно-
Шеннона гарантирует существование кодом, которые могут передавать
222 Коды, исправляющие ошибки, и криптография
информацию со скоростью, близкой к пропускной способности, с
произвольно малой вероятностью ошибки.
В этом разделе мы описываем два семейства кодов: первый —
способный обнаруживать и исправлять одну ошибку, был разра-
разработан в 1950 г. Хэммингом, в то время как второй, который может
обнаруживать и исправлять две ошибки, был разработан на 10
лет позже Боузом, Чоудхури и Хоквингемом (БЧХ для краткости)
(Bose, Chaudhuri, 1960; Hocquenghem,1959). Главным инструментом
в коде Хэмминга служат линейная алгебра (читатель может прос-
просмотреть приложение в конце книги) и язык смежных классов, в то
время как в БЧХ-кодах важную роль играют конечные поля. (В
изложении мы следуем работе (Afrati, 1985); см. также (Berlekamp,
1968; Blake, 1979; Levinston, 1970; MacWilliams, 1977; Peterson и др.,
1972 и Wakery, 1978).)
На рис. 4.1.1 мы описываем нашу модель системы связи. Сооб-
Сообщения проходят по системе от отправителя (называемого также
источником, или передатчиком). Каналом могут служить воздух
или провода.
Коды, исправляющие ошибки, — основные понятия
223
Отправитель
Получатель
Устройство
кодирования
Устройство
декодиро-
декодирования
Kai
*ал
-Шум
Рис. 4.1.1.
Модель системы связи.
В противоположность непрерывным источникам, таким, как
радио, мы рассматриваем только источники с конечным числом
дискретных сигналов. Более точно, мы имеем дело с двоичными
кодами, предполагая, что любая передаваемая нами информация
может быть представлена в виде последовательности двоичных
цифр; это — сообщение. Более того, мы предполагаем, что наш
канал — это двоичный симметричный канал приведенного на
рис. 4.1.2 вида.
Это значит, что если р — вероятность правильного получения
двоичного сигнала, то 1 — р — вероятность приема с ошибкой. Мы
Рис. 4.1.2.
Два вида двоичных симметричных каналов.
предполагаем, что возникающие при передаче ошибки независимы
и что изменилась только одна двоичная цифра, в то время как
соседние цифры остались нетронутыми. (В действительности вто
не так, и внимание уделяется кодам, имеющим дело с канала-
каналами, в которых ошибки встречаются пакетами, или кластерами.)
Наконец, мы предполагаем, что вероятность того, что «0» преоб-
преобразуется в «1», равна вероятности того, что «1» преобразуется
в «0», и что вероятность любого такого события относительно
мала, скажем 0.01. (В действительности единицы преобразуются
чаще, чем нули.)
Хотя мы не в состоянии помешать каналу допускать такие
ошибки, мы можем принять некоторые меры, чтобы защититься
от них. Идея состоит в том, чтобы к к информационным цифрам,
которые мы хотим передать, добавить г проверочных цифр, а за-
затем передавать весь блок из п — к + г цифр. Предполагается,
естественно, что канал изменит относительно немного из этих п
передаваемых цифр, так что пользователь на основе г провероч-
проверочных цифр будет иметь достаточно информации, чтобы обнаружить
и исправить ошибки канала. (Это — пример избыточности, т.е.
передачи более чем к информационных цифр, чтобы улучшить
надежность процесса передачи.) Конечно, должно существовать
правило выбора г проверочных цифр, и этот процесс носит на-
название кодирования. Мы назовем R = k/n скоростью передачи
информации кода.
Определение 4.1.1. it-мерное подпространство С векторного
пространства Vn всех двоичных n-кортежей над GFB) называется
(п,к)-кодом.
Любая последовательность из п цифр, которая может быть
передана, называется кодовым словом. Очевидно, имеется 2"
последовательностей, или векторов, длины п, но только 2* из них
являются кодовыми словами, потому что г проверочных цифр
224 Коды, исправляющие ошибки, и криптография
в каждом кодовом слове полностью определяются ife информаци-
информационными цифрами; мы будем называть кодом множество этих 2*
векторов длины п. Для любого передаваемого кодового слова,
учитывая тот факт, что мы имеем дело с зашумленным каналом,
может быть получен любой из 2" векторов длины п; тогда поль-
пользователь должен решить, какое из 2* возможных кодовых слов
передавалось.
Определение 4.1.2. Если и — переданное кодовое слово, а
v — полученный вектор, то е = и — v = (ei,e2,..., еп) называется
вектором ошибок.
Получив v, пользователь должен решить, какое кодовое слово
было передано, определив наиболее вероятную ошибку. Если все
кодовые слова длины п равновероятны, то эта процедура миними-
минимизирует вероятность некорректного декодирования. Декодирование
по максимуму правдоподобия просто предполагает наиболее веро-
вероятную ситуацию, а именно что встречается наименьшее число
ошибок.
Определение 4.1.3. Расстояние Хэмминга d(u,v) между двумя
векторами длины п — это число координат, в которых и и v
различаются. Вес Хэмминга iu(u) вектора длины п — это число
отличных от нуля координат «<, и очевидно, что iu(u) = </(u,0).
Например, если и = A,0,1,1,0) и v = A,1,0,0,1), то ef(u,v) = 4.
Можно показать, что расстояние Хэмминга — это метрика на
векторном пространстве Vn над GFB) (см. упр. 1 к этому
разделу), т.е. для любых щ, иг из Vn выполнены следующие
условия:
a. d(ui,u2) ^ 0 и d(ui,u2) = 0 тогда и только тогда, когда
Ui = U2.
b. d(ui,u2) = <f(u2)ui).
c. d(ui,u3) ^ d(ui,u2) + ^(иг.из) (неравенство треугольника).
Аналогично можно показать, что вес Хвмминга — вто норма на
векторном пространстве Vn над GFB), т.е. для любых u, v из Vn
и А из в R. имеют место следующие утверждения:
a. w(u) ^ 0 и w(u) = 0 тогда и только тогда, когда и = 0.
b. И)(и + v) ^ и>(и) + w(v).
c. w(Au) = |A|w(u).
Для понимания следующей теоремы требуется некоторое зна-
знакомство с теорией вероятностей.
Коды, исправляющие ошибки, — основные понятия 225
Теорема 4.1.4. Пусть С — код для двоичного симметричного ка-
канала, и предположим, что С содержит s равновероятных кодовых
слов длины п. Тогда декодирование в ближайшее кодовое сло-
слово является декодированием по максимуму правдоподобия, если
вероятность р правильной передачи > 1/2.
Доказательство. Пусть d(u,v) — расстояние между кодовым сло-
словом и и полученным вектором v. Для того чтобы пользователь
мог получить вектор v, если передавался и, должны встретиться
d(u, v) ошибок. Вероятность этого события равна
prob(v|U) = A -
где р — вероятность правильной передачи. Положим di = d(u,-, v),
г = 1,2, и сравним вероятности prob(v|ui) и prob(v|u2) для двух
кодовых слов ui и и2. Очевидно, что
= = (
prob(v|u2) (l-p)<bp"-d3 \l-pj
а поскольку мы всегда предполагаем, что р > 1/2, то
prob(v|ui) > prob(v|u2) тогда и только тогда, когда d\ < d2.
Поэтому вероятность prob(v|u) максимальна, когда и — ближай-
шее к v кодовое слово. Если имеется несколько кодовых слов с
таким свойством, то мы можем выбирать одно из них произвольным
образом. D
Пример. Предположим, что код состоит из четырех следующих
кодовых слов:
и1 = @,0,0,0,0),
иа = A,0,0,1,1),
из = A,1,1,0,0),
щ = @,1,1,1,1).
Если получен вектор v = @,1,0,1,1), то он будет декодирован как
и4, потому что d(u4, v) = 1 и d(uj, v) > 1 для i = 1,2,3. Аналогично
принятый вектор w = @,0,1,1,0) может быть декодирован как ui
илищ, потому что rf(ui,w) = d(u4,w) = 2, a rf(u2)w) = d(u3,w) = 3.
15-274
226 Коды, исправляющие ошибки, и криптография
Поскольку любой вектор v, поступивший к получателю, деко-
декодируется в ближайшее кодовое слово (ближайшее относительно
расстояния Хэмминга), то естественно предположить, что хороший
код — это код, в котором кодовые слова находятся «далеко» друг
от друга. Это действительно так, потому что если расстояние
между кодовыми словами велико, то чтобы кодовое и преобразова-
преобразовалось в (полученный) вектор v, который ближе к другому кодовому
слову и', чем к и, должно встретиться много ошибок. Имеет место
следующая
Лемма 4.1.5. Пусть С — двоичный код с s кодовыми словами
ui, иг,..., и, длины п. Этот код может исправлять все комбинации
не более чем t ошибок тогда и только тогда, когда
для всех i ф j.
Доказательство. Мы докажем лемму только в одном направлении,
оставив остальное читателю. Предположим, что расстояние
между любыми двумя кодовыми словами не меньше, чем % + 1.
Если и — переданное кодовое слово, a v — полученный вектор с
t' ^ t ошибками, т.е. d(u,v) = t', то по неравенству треугольника
расстояние d(u',v) от v до любого другого кодового слова и'
удовлетворяет соотношению
(u', v) ^ d(u', u) - d(u, v)
<' = rf(u,v),
т.е. всегда больше, чем d(u,v), и если t' ^ t, то вектор v будет
декодирован в правильное кодовое слово u. D
Определение 4.1.6. Кодовое расстояние dmjn двоичного кода С
дается формулой dmjn = mind(u,v), где минимум берется по всем
векторам u,vbC,u/v.
Если положить d = <fmin> то получаем другую характеристику
кода, аналогичную приведенной в определении 4.1.1, а именно
(n,k,d). Более того, имеет место следующая
Теорема 4.1.7. Кодовое расстояние двоичного кода С равно
наименьшему весу ненулевых кодовых слов.
Доказательство. Доказательство непосредственно следует из то-
того, что d(u,v) = d(u — v,0) = w(u — v). D
Коды, исправляющие ошибки, — основные понятия 111
Определение 4.1.8. Пусть Vo — векторное пространство всех
двоичных n-кортежей над GF{2). Тогда множество Sr(y) = {i€
Vn : d(x, у) ^ г} называется шаром радиуса г с центром в у G V,,.
Лемма 4.1.9. Двоичный код С с кодовым расстоянием dm;n
мажет исправлять все комбинации от 1 до t ошибок и может
обнаруживать все комбинации от t + 1 до t + s ошибок тогда и
только тогда, когда dm[n ^ It + s.
Доказательство. Первая часть доказана в лемме 4.1.5. Оставляем
читателю в качестве упражнения доказательство того, что может
быть обнаружена любая комбинация t + s ошибок. ?
(с)
Рис. 4.1.3.
Связь между расстоянием и корректирующей способностью кода.
Геометрическая интерпретация лемм 4.1.5 и 4.1.9 дана на рис.
4.1.3. Например, если d(wj,Wj) — 9, как на рис. 4.1.3(а), то
изменение четырех или менее цифр в кодовом слове w,- приведет
к тому, что полученный вектор будет ближе к w,-, чем к w,-. Если
d(wj,Wj) = 8, как на рис. 4.1.3(Ь), то ошибки в трех или менее
цифрах будут исправлены, но четыре ошибки могут привести к
тому, что полученный вектор будет равноудален как от w,-, так и
ОТ Wj И Т.Д.
Другое геометрическое представление двоичного кода — рас-
рассматривать векторы длины п как вершины n-мерного гиперкуба
(см. рис. 4.1.4). Изменение цифры в двоичном векторе соответству-
соответствует переходу к соседней вершине, при этом движение выполняется
вдоль ребра, параллельного направлению, соответствующему по-
позиции изменившейся цифры. Чтобы получить код с кодовым
расстоянием d, выбираем те вершины гиперкуба, которые не мо-
могут быть соединены путем, состоящим менее чем из d ребер. На
1.5*
228 Коды, исправляющие ошибки, и криптография
но у^ *->* in
010
000
001
Рис. 4.1.4.
Двоичные кодовые слова как вершины гиперкуба.
рис. 4.1.4 код, состоящий из кодовых слов @,0,1), @,1,0) и A,1,1),
имеет dmin = 2.
Интересно узнать, сколько кодовых слов может иметь код, если
он способен исправлять все комбинации t или менее ошибок.
Верхнюю границу числа кодовых слов дает следующая
Теорема 4.1.10 (верхняя граница Хэмминга числа кодовых слов).
Бели двоичный код С, имеющий s кодовых слов длины п, может
исправлять все комбинации t или менее ошибок, то
2"
Доказательство. Пусть ui,U2,...,u, — кодовые слова длины п в
С. Для каждого кодового слова рассмотрим шар St(u,-) радиуса
t с центром и,- (определение 4.1.8). Поскольку код исправляет до
t ошибок, шары не пересекаются. Поскольку шар с центром и,-
содержит все векторы, которые отличаются от и,- в 0,1,2,...,*
позициях, мы видим, что число этих векторов равно
1 +
•¦©¦•¦•¦o-.s.c;)-
Поэтому во всех s шарах содержится
векторов, и доказательство завершается, если мы заметим, что
общее число векторов внутри всех шаров не может превосходить
2П — общее число двоичных векторов длины п. ?
Коды,, исправляющие ошибки, — основные понятия 229
Если в теореме 4.1.10 имеет место равенство, то код называется
совершенным. Отметим также, что не для всех троек t, n и s,
определенных этой теоремой, непременно существует код с s
кодовыми словами длины п, который может исправлять t ошибок.
Например, положим t = 1 и п = 4; тогда по теореме 4.1.10 в = 3, но
кода с такими параметрами не существует. (Проверьте это.) Когда
такие коды существуют, другой их характеристикой является
(n,s,t).
4.1.1. Кеды Хэмминга
Подведем итог рассмотренному. Мы рассмотрели двоичный
симметричный канал и код, состоящий из 2* кодовых слов длины
п, скорость передачи информации которого равна R= k /п. Чтобы
получить высокую скорость передачи информации, нам хотелось
бы иметь как можно больше кодовых слов. В то же время мы
хотели бы исправлять как можно больше ошибок. Однако эти два
желания противоречат друг другу, потому что чем больше у нас
кодовых слов, тем ближе они будут друг к другу и, согласно лемме
4.1.5, тем меньше будет способность кода исправлять ошибки.
Например, если п = 5 и мы хотим исправлять не более одной
ошибки, то мы можем найти код с четырьмя кодовыми словами,
а именно @,0,0,0,0), A,0,0,1,1), A,1,1,0,0), @,1,1,1,1). Однако
если п = 5 и мы хотим исправлять две ошибки, то мы не можем
найти больше двух слов, @,0,0,0,0), A,1,1,1,1). Теорема 4.1.10
показывает, что требование увеличения способности исправлять
ошибки для кода фиксированной длины п приводит к уменьшению
максимального возможного числа кодовых слов.
До, сего времени мы полностью игнорировали одну проблему —
насколько легко может быть осуществлено декодирование. Деко-
Декодер в ближайшее кодовое слово, рассматриваемый нами ранее,
декодирует полученный вектор v в кодовое слово и, расстояние
d(v,u) до которого минимально. Однако, чтобы сделать это, деко-
декодер должен содержать таблицу всех кодовых слов, и когда вектор
v поступает на вход, он определяет, к какому кодовому слову и
вектор v ближе всего. Однако такой декодер требует огромной
памяти, и большое время декодирования сделает декодирование в
реальном времени в большинстве случаев неприемлемым.
Далее мы развиваем теорию линейных (термин будет определен
ниже) двоичных кодов, которые имеют много желательных харак-
характеристик в отношении сложности кодирования и декодирования.
230
Коды, исправляющие ошибки, и криптография
Один из простейших примеров линейного двоичного кода —
(п, 1)-код с повторением, т.е. t = l иг=п- ib. Другими слова-
словами, этот код является 1-мерным подпространством всех двоичных
n-кортежей, которое содержит два кодовых слова: @,0,0,... ,0),
вектор из п нулей, и A,1,1,... ,1), вектор из п единиц. Получив
вектор длины п, пользователь может решить, какое кодовое слово
было передано, использовав различные правила; например, если
число полученных нулей/единиц больше, чем число полученных
единиц/нулей, то пользователь может считать, что передавалось
кодовое слово, состоящее из всех нулей/единиц. Эта схема обла-
обладает большой способностью обнаружения и исправления ошибок,
но скорость передачи информации у нее очень низкая.
Другая крайность — (п, n — 1)-коды с одной проверкой на чет-
четность, которые содержат только один контрольный бит, г = 1.
То есть эти коды имеют очень высокую скорость передачи ин-
информации, но нулевую корректирующую способность; они могут
только обнаруживать нечетное число ошибок. (Фактически лю-
любое нечетное число ошибок неотличимо от единичной ошибки.)
Контрольный бит, который называется также битом четности,
определяется как сумма п — 1 информационных цифр по модулю 2.
В проверке на четность/нечетность последняя цифра выбирается
так, чтобы общее число единиц было четно/нечетно. Например, в
коде с проверкой на четность кодовое слово для 1101 равно 11011.
Отметим, что любое четное число ошибок канала не может быть
обнаружено. (Такие коды используются для хранения данных на
магнитных лентах.)
Нас интересуют коды со средней скоростью передачи инфор-
информации и средними способностями исправления ошибок.
Рассмотрим описанный выше код с одной проверкой на чет-
четность. Заметим, что п — 1 информационных битов можно выбрать
произвольно, в то время как n-й бит, проверочный разряд, — это
линейная комбинация первых п — 1 битов и добавляется, чтобы
помочь нам обнаруживать возможные ошибки передачи. Если
обозначить информационные биты через т^, а проверочные —
через с<, то в коде с единственной проверкой на четность
= mi +
mn-i-
Обобщим эту идею следующим образом. Пусть mi,т.2, ¦ ¦ ¦ ,mfc
суть ib информационных битов, и предположим, что мы добавили
г проверочных битов, чтобы сформировать кодовое слово длины
Кеды, исправляющие ошибки, — основные понятия
231
п = к + г. (Это процедура кодирования.) В то время как каждый
из к информационных битов формируется независимо от преды-
предыдущих, г проверочных битов являются линейными комбинациями
информационных, т.е.
с2 =
+ Л12ТП2 Н Ь
+ Лг2«12 Н h
сг =
или, поскольку сложение в GFB) совпадает с вычитанием,
+
Н \-humk + ci =0,
Н h /»2tmt +C2 =0,
¦ Лг2т2 + hi
Выписанная система уравнений может быть также записана в виде
(Матрица Н)
Г
[Ли Л12 ... Ли, 1 0 ... 01
/»2i Л22 ... Лг* 0 1 ... О
-ftri Лг2 ••• hrk 0 0 ... lJ
тк
Г01
О
.oj
или
HvT=0T, или vHT = 0,
(*)
где v = (mi,ro2,..., т*,С1,С2,... ,сг) — кодовое слово, определен-
определенное предыдущей системой уравнений, a vT — транспонированный
вектор. Более точно, вектор v является кодовым словом ко-
кода, определенного матрицей Н, тогда и только тогда, когда v
удовлетворяет системе (*). Выписанные уравнения называются
проверочными уравнениями, а г х п-матрица Н называется прове-
проверочной матрицей.
Если vi hvj — два кодовых слова, то
= Hvf
= 0T
= 0T + 0T = 0T,
232 Коды, исправляющие ошибки, и криптография
из чего мы делаем вывод, что vi + V2 — также кодовое слово.
Поэтому кодовые слова образуют подпространство векторного
пространства Vn. Мы говорим, что код линейный тогда и только
тогда, когда кодовые слова образуют подпространство простран-
пространства Vn.
Поскольку кодовые слова образуют подпространство, они могут
быть выражены в виде линейных комбинаций к линейно независи-
независимых векторов, составляющих базис этого подпространства. Эти к
линейно независимых векторов можно рассматривать как строки
gi матрицы G размера к х п, называемой порождающей матрицей
рассматриваемого кода. Каждая строка g,- сама является кодовым
словом, а значит,
откуда мы делаем вывод, что
GHT = 0.
Пример. Предположим, что для кода
следующие проверочные уравнения:
= 7иА; =
мы имеем
С! = т1 + т2 + тз,
С2 = »*>1 + ГП2+ ГП4,
Сз = mi + газ + пи.
Тогда проверочная матрица Н имеет вид
Н =
1110 10 0
110 10 10
10 110 0 1
Порождающая матрица Н этого кода (см. теорему 4.1.11 ниже) —
это
Г1 0 0 0 1 1 11
0 10 0 110
0 0 10 10 1
L0 0 0 1 0 1 1J
г~ч
G.
Кодовые слова — это 24 линейных комбинаций строк матрицы
Коды, исправляющие ошибки, — основные понятия 233
Очевидно, что векторное пространство, получающееся из строк
матрицы, не изменится, если мы выполним любую из следующих
элементарных операций со строками:
1. Поменять любые две строки местами.
2. Умножить любую строку на ненулевой элемент.
3. Заменить строку ее суммой с любой другой строкой.
(В двоичном случае вторая операция бессмысленна, потому что
единственный ненулевой элемент — вто 1.)
Поскольку мы исследуем те свойства линейных кодов, которые
связаны со способностью исправлять ошибки, заметим, что два
кода, отличающиеся только порядком расположения цифр, имеют
одну и ту же вероятность ошибки, и такие коды называются эк-
эквивалентными. Более точно, если V — векторное пространство
строк матрицы G, то код V эквивалентен V тогда и только тогда,
когда V — векторное пространство строк матрицы G', полу-
полученной переупорядочением столбцов матрицы G. Таким образом
переупорядочение столбцов порождающей матрицы приводит к по-
порождающей матрице эквивалентного кода. Более того, любая из
перечисленных выше трех элементарных операций, выполненная
над строками матрицы G, приводит к матрице G" с тем же самым
векторным пространством, и поэтому G и G" — порождающие
одного и того же кода. Объединяя эти два случая, видим, что если
матрица G' получена из матрицы G последовательностью элемен-
элементарных операций над строками и переупорядочением столбцов, то
G и G' — порождающие матрицы эквивалентных кодов.
Обычно мы хотим, чтобы порождающая матрица была пре-
представлена в следующем виде:
G =
¦1
0
0
1
0
0
... 0
... 0
Pll
P21
• • • Pl,n-k
¦ ¦ ¦ P2,n-k
.0 0 0
0
Pk.n-k-i
т.е. G = [1*Р], где I* — единичная к х i-матрица, а Р — произволь-
произвольная к х (п — &)-матрица. Пользуясь элементарными операциями
над строками, мы всегда можем привести порождающую матрицу
к такому виду, и это лучше всего иллюстрируется приводимым
ниже примером.
234 Коды, исправляющие ошибки, и криптография
Пример. Предположим, что мы имеем порождающую матрицу
G =
110 1
1110
0 110
На каждом шаге мы выполняем операции, необходимые для то-
того, чтобы привести один из столбцов к требуемому виду. Мы
начинаем слева направо.
Лля первого столбца мы прибавим первую строку ко второй и
заменим вторую строку суммой:
110 1
0 0 11
0 110
Для второго столбца переставим вторую строку с третьей:
1
0
0
1
1
0
0
1
1
1
0
1
и заменим первую строку суммой первой и второй строк:
Для третьего столбца заменим первую и вторую строки их сум-
суммами с третьей строкой:
10 0 0
0 10 1
0 0 11
Таким образом мы убеждаемся, что последовательным при-
применением элементарных операций мы всегда можем привести
порождающую матрицу G к виду G = [IfcP].
Пусть теперь а = (ai,a2,... ,а^) — вектор размерности it, и
рассмотрим произведение а на порождающую матрицу G = [1*Р]
Ь = aG = (a1,a2,...,ajfe,ci,C2,...,cn_fc),
Коды, исправляющие ошибки, — основные понятия 235
где
(**)
Заметим, что если мы рассматриваем вектор а как вектор с инфор-
информационными битами, то в кодовом слове Ь кода, полученного из G,
первые к битов информационные, а остальные п — к компонент —
линейные комбинации первых к. Таким образом кодирование чрез-
чрезвычайно просто: достаточно умножить информационный вектор
на порождающую матрицу. Упорядоченный код — это код, состо-
состоящий из кодовых слов, в каждом из которых первые ib битов —
информационные, а остальные — проверочные. Из сказанного
выше следует, что любой линейный код эквивалентен упорядочен-
упорядоченному. Мы говорим, что линейный код с кодовыми словами длины
п имеет размерность Jfc тогда и только тогда, когда он имеет ib
информационных битов, и, как мы уже видели, мы называем такие
коды (п, (Ь)-кодами.
Подводя итоги сказанному, мы видим, что двоичный линейный
код длины п и размерности к — это fc-мерное подпространство
n-мерного векторного пространства над GFB). Таким образом,
код полностью определяется порождающей матрицей G, стро-
строки которой суть базисные векторы этого подпространства. В
качестве альтернативы, линейный код С может быть полностью
определен проверочной матрицей Н, которая удовлетворяет урав-
уравнению HvT = 0т, или vHT = 0, для любого кодового слова v.
Мы говорим, что векторноепространство, определяющее код,
ортогонально векторному пространству, определенному строками
матрицы Н. Векторное пространство, определенное строками
матрицы Н, можно также рассматривать как определяющее ли-
линейный код С": Н теперь — порождающая матрица, а G —
проверочная. Коды С и С" называются дуальными кодами, и если
С есть (п, А)-код, то С" является (n, n — ?)-кодом.
Теорема 4.1.11. Если V — код с порождающей матрицей
G = [ЦР], где Ij; — единичная к х ib-матрица, а Р — произвольная
к х (п — А;)-матрица, то проверочная матрица этого кода равна
Н = [РТ1„_*].
Доказательство. Если v = (ai,a2,..., a,k,ci,C2, ¦ ¦ ¦ ,cn-k) — кодовое
слово, то
vHT = 0 =
Cn-k),
236
Коды, исправляющие ошибки, и криптография
что в точности совпадает с (**). (Связь между G и Н станет
понятней, если заметить, что в обоих случаях p,j — это коэффи-
коэффициент при »-м информационном бите в сумме, определяющей j-й
проверочный бит с,-.) ?
Пример. Для порождающей матрицы
'10 0 11
G= 0 10 10 1 =
0 0 10 1
находим проверочную матрицу
„_гртт1_
Н-[Р l2l-
l 1 0 1 0
i о 1 о i
Кодовые слова — это
00000 10011 01010 11001 00101 10110 01111 11100.
Теорема 4.1.12. Код с проверочной матрицей Н имеет мини-
минимальный вес (а следовательно, кодовое расстояние) w тогда и
только тогда, когда любое множество из w — 1 или меньшего числа
столбцов матрицы Н линейно независимо.
Доказательство. Мы докажем теорему в одном направлении, а
остальную часть оставим читателю. Вектор v = (ai,<J2,... ,а„)
является кодовым словом тогда и только тогда, когда vHT = О,
или, что эквивалентно, тогда и только тогда, когда
«.h,=0,
где h{ есть i-й столбец матрицы Н. Таким образом, если w —
минимальный вес кода, то не существует равной 0 линейной
комбинации w — 1 или меньшего числа столбцов матрицы Н. ?
Из теоремы 4.1.12 мы видим, что код может иметь кодовое рас-
расстояние 3 тогда и только тогда, когда любые 3 — 1 = 2 столбца
проверочной матрицы Н линейно независимы. Однако два нену-
ненулевых вектора в Уп-к над GF{2) линейно независимы, если они
просто различны. Поэтому мы можем построить код с кодовым
расстоянием 3 (т.е. код может исправлять одну ошибку), если
будем рассматривать в качестве проверочной матрицы Н матри-
матрицу, столбцы которой составляют все отличные от нуля элементы
пространства Vn_t. Значит, мы можем построить так называемые
Bт - 1,2т - m -1,3)-коды Хэмминга, т.е. n = 2m-l,ifc = 2m-m-l
И rfmin = 3.
Коды,, исправляющие ошибки, — основные понятия 237
Определение 4.1.13. Пусть Н —проверочная матрица линейного
(п, (Ь)-кода. Если v — полученный вектор, то вектор s = vHT длины
п — к называется синдромом вектора v.
Из этого определения видно, что вектор является кодовым
словом тогда и только тогда, когда его синдром равен О. Если
учитывать это, то процесс декодирования для кодов Хэмминга
очень прост. Если v — полученный, аи — переданный вектор, где
е = v — и, мы действуем следующим образом: сначала вычисляем
синдром вектора v, который равен
Если произошла одна ошибка, то е — вектор с весом 1, т.е. п — 1
компонент равны 0 и мы имеем «1» в *-й позиции, где встретилась
ошибка. Таким образом, произведение еНт будет »-м столбцом
матрицы Н, и мы получим переданный вектор, если прибавим к v
вектор е, который состоит из нулей, за исключением »-й позиции,
которая равна 1.
Пример. Рассмотрим G,4)-код Хэмминга с проверочной матрицей
Н =
10 0 110 1
0 10 10 11
0 0 10 111
и предположим, что получен вектор v = @,1,1,0,1,0,0). Мытзидим,
что синдром вектора v равен
s = vHr = A,1,0),
что совпадает с четвертым столбцом матрицы Н; следовательно,
вектор ошибок равен е = @,0,0,1,0,0,0), и, добавляя его к v, мы
получаем переданный вектор и = @,1,1,1,1,0,0).
Рассмотрим теперь другую процедуру декодирования линейных
кодов, т.е. мы получим другой взгляд на декодирование по
максимуму правдоподобия, рассматривая смежные классы кода С
BVn.
Пусть С — линейный (п,к)-код над GF{2), где этот код рас-
рассматривается как подпространство пространства Vn, векторного
пространства всех двоичных n-кортежей. Факторпространство
Vn/C состоит из всех смежных классов v + С = {v + x:x? С}
238 Коды, исправляющие ошибки, и криптография
для произвольного v € Vn, где каждый смежный класс содержит
2* векторов. Имеется разбиение множества Vn вида
Vn = С U {vi + С) U • • • U {v, + С},
= 2"-fc
- 1.
Если получен вектор у, то у должен быть элементом одного из
этих смежных классов, скажем {v, +C}. Если передано кодовое
слово х,-, то вектор ошибок е равене = у —х,- 6 v,+C —x,- = v,+C.
Следовательно, мы имеем следующее правило декодирования:
если получен вектор у, то возможные векторы ошибки е — это
векторы из смежного класса, содержащего у. Наиболее вероятная
ошибка — вектор е' с минимальным весом в классе смежности
вектора у. Поэтому у декодируется как х' = у + е'. (Вектор
наименьшего веса в смежном классе называется лидером смеэюного
класса. Если имеется несколько таких векторов, то произвольный
из них выбирается в качестве лидера смежного класса.)
Чтобы использовать указанную схему декодирования, нам нуж-
нужны таблицы смежных классов, и ниже мы покажем, как создавать
таблицу декодирования Слепиана.
Пусть С — упомянутый выше (п, &)-линейный код, и пусть
hllh2,... ,hr, r = 2*, — кодовые слова, где hi — нулевой вектор
кода. Кодовые слова располагают в первой строке с нулевым
вектором слева. Затем выбирают один из оставшихся векторов
пространства Vn, например gb и помещают его под нулевым
вектором. (Обычно gi выбирается так, что он имеет наибольшую
вероятность поступить на приемник, если передан нулевой вектор.)
После этого заполняют вторую строку, помещая под каждым
кодовым словом h,- вектор gi + h,-. Аналогично, второй вектор g2
из Vn, который еще не появился в таблице, помещают в первом
столбце третьей строки, и строка заполняется тем же способом.
Этот процесс продолжается до тех пор, пока все векторы из Vn
не появятся в таблице. Множество элементов строки образует
смежный класс, и, если на каждом шаге вектор gi выбирался как
вектор наименьшего веса, не представленный в первых г столбцах,
то элементы первого столбца гарантированно будут лидерами
смежных классов (проверьте это на следующем ниже примере).
Два элемента gj и gj, которые принадлежат одному и тому
же смежному классу к, обладают следующим свойством: g,- +
gj = gfc + h, + gt + hj = h, + hj = hm, т.е. их сумма равна
кодовому слову. Кроме того, каждый вектор из пространства Vn
появляется в таблице ровно один раз. (В этом легко убедиться,
Коды, исправляющие ошибки, — основные понятия
239
если предположить, что два вектора g = gt + h,- и g' = gm + hj
совпадают, где gfc и gm —лидеры смежных классов. Равенство
gk + hj = gm + hj имеет место тогда и только тогда, когда gt =
gm + Ь,- + hj = gm + hm, где hm — кодовое слово; но тогда
gt принадлежит смежному классу, который имеет gm в качестве
лидера, а это противоречит методу построения таблицы, согласно
которому первый элемент в каждой строке — это не появлявшийся
ранее вектор.)
Пример. Рассмотрим E,3)-линейный код, проверочные биты ко-
которого определяются уравнениями
Ci = П»1 + ГП2,
с2 = mi + тз-
Тогда таблица Слепиана этого кода имеет вид
00000 10011 01010 11001 00101 10110 ОНИ 11100
00001 10010 01011 11000 00100 10111 01110 11101
00010 10001 01000 11011 00111 10100 01101 11110
10000 00011 11010 01001 10101 00110 11111 01100.
Отметим, что имеется 25~3 = 4 смежных класса, каждый из
которых содержит 2а = 8 элементов. Следующие две теоре-
теоремы показывают, как описанная выше таблица Слепиана может
использоваться для декодирования линейных кодов.
Теорема 4.1.14. Если мы пользуемся таблицей Слепиана для
декодирования полученного вектора в кодовое слово, расположен-
расположенное над ним, то полученный вектор v правильно декодируется в
переданный вектор и тогда и только тогда, когда вектор ошибки
е< = v — и — лидер смежного класса.
Доказательство. Если е< = v —u — лидер i-ro смежного класса, то
v = и + е,- появляется в i-м смежном классе таблицы Слепиана под
кодовым словом и и будет правильно декодирован. Однако если
V —и не является лидером смежного класса, то полученный вектор
v появится в некотором смежном классе, скажем j-м, с лидером
gj. Тогда v принадлежит j-й строке таблицы, но не находится под
и, потому что v ф gj + и. О
240 Коды, исправляющие ошибки, и криптография
Теорема 4.1.15. Два вектора vi и V2 принадлежат одному и тому
же смежному классу тогда и только тогда, когда их синдромы
равны.
Доказательство. Если и vi, и V2 принадлежат i-му смежному
классу, то Vi = g,- + hi и V2 = g,- + h^. Значит, Vi + V2 = hj + Ьг и
(vx + v2)HT = (hi +h2)HT = 0, откуда следует, что vjHT = v2HT.
Обратно, если ViHT = V2HT, то (vi+V2)HT = О, откуда следует,
что Vi+v2 = Ьт,и если vx = hi+g,-, то v2 = hm+vx = hm+hx+gj =
g,- + Ьг, откуда следует, что vi и V2 принадлежат одному и тому
же смежному классу. ?
Теперь мы в состоянии представить упрощенную процедуру
декодирования, которая работает следующим образом. Сформи-
Сформируем таблицу декодирования, которая состоит из двух столбцов,
первый составлен из 2п~к синдромов, а второй — из соответст-
соответствующих лидеров смежных классов. Когда получен вектор v, то
мы сначала вычисляем его синдром, а затем находим из табли-
таблицы соответствующий лидер смежного класса. Мы полагаем, что
лидер смежного класса — это вектор ошибки, и, прибавляя его к
вектору v, получаем переданный вектор и.
Пример. Для линейного E,3)-кода, описанного в предыдущем
примере, мы имеем следующую таблицу декодирования:
Лидер смежного класса
00000
00001
00010
10000
Синдром
00
01
10
11
Мы видим, что декодирующей таблице для (п, А;)-кода требуется
список синдромов и лидеров смежных классов, соответствующих
2"~* смежным классам. Это может оказаться как дороже, так и
дешевле, чем сравнивать полученный вектор со всеми возможными
2* кодовыми словами и выбирать ближайший. В A00,80)-коде,
например, имеется только 220 смежных классов в противовес 280
кодовым словам, хотя 220 — очень большое число.
Теорема 4.1.16. Пусть С есть (n,Jt)-линейный код, кодовые
слова которого имеют одинаковую вероятность передачи. Тогда
использование построенной выше таблицы Слепиана (т.е. лидеров
смежных классов, имеющих наименьший вес в смежном классе)
максимизирует вероятность правильного декодирования.
Коды, исправляющие ошибки, — основные понятия 241
Доказательство* Пусть vy — вектор в г-й строке и j-м столбца
таблицы Слепиана. Кодовые слова v<y находятся в 0-й строке
и наверху каждого столбца. Пусть dy — расстояние Хвмминга
между полученным вектором vy и кодовым словом V(y, в которое?
декодируется vy. Мы уже видели, что вероятность правиль-
правильного декодирования максимизируется, когда полученный вектор
декодируется в ближайшее кодовое слово.
Предположим теперь, что вектор v появляется в таблице Сле-
Слепиана под кодовым словом и, где d(v, u) = w, и пусть g —
лидер смежного класса, содержащего v; более того, предположим,
что ui — ближайшее к v кодовое слово, причем d(v,ui) = vn.
Тогда вес вектора g = v — u равен w, в то время как элемент
v — ui = g + (u — ui) имеет вес w\ и находится в том же самом
смежном классе. Поскольку по определению g имеет наименьший
вес в смежном классе, iuj ^ w, и, таким образом, v по крайней
мере так же близок к и, как икщ. ?
4.1.2. БЧХ-коды
В этом разделе мы рассматриваем БЧХ-коды, позволяющие
обнаруживать и исправлять две ошибки. Эти коды — главное
улучшение кодов Хэмминга, которые могут обнаруживать две
ошибки, но исправлять только одну. БЧХ-коды были разработа-
разработаны Боузом и Чоудхури в 1960 г. и Хоквингемом в 1959 г., и они
образуют подмножество циклических кодов; последние рассматри-
рассматриваются ниже подробно. Начнем с двух определений.
Определение 4.1.17. Подпространство С n-мерного двоичного
векторного пространства Vn называется циклическим подпрос-
подпространством или циклическим кодом, если для каждого вектора
v = 0>n-i,«n-2,.•-,«<>) кода С вектор v' = (vo,vn-Uvn-2, ¦ ¦ ¦ ,vi),
полученный из v «циклическим сдвигом» на одну позицию вправо,
также принадлежит С.
Определение 4.1.18. Множество полиномов называется идеа-
идеалом тогда и только тогда, когда оно состоит из всех кратных
некоторого полинома.
Строго говоря, мы определили только что главный идеал. Од-
Однако легко показать, что если «7 — поле, то любой идеал в кольце
полиномов J[x] — главный идеал, порожденный полиномом ми-
минимальной степени в J[x]. (Остаток от деления любого другого
полинома в идеале на образующий должен быть нулем.) Поэтому в
IC-274
242 Коды, исправляющие ошибки, и криптография
наших рассуждениях мы используем просто термин «идеал». Кро-
Кроме того, для описания циклических кодов мы будет использовать
алгебру полиномов по модулю хп — 1, а также тот факт, что полином
степени п — 1 может быть представлен вектором в Vn; последнее
всегда предполагается двоичным векторным пространством, даже
когда это явно не упоминается.
Чтобы понять, зачем нам понадобится алгебра полиномов по
модулю хп — 1, рассмотрим следующее альтернативное описание
уже встречавшегося нам G,4)-кода Хэмминга.
Столбцы проверочной матрицы Н G,4)-кода Хэмминга суть
двоичные векторы длины 3. Мы знаем, что их можно рассматри-
рассматривать как полиномы степени < 2 над GFB). Это наводит на мысль,
что столбцы матрицы Н могут индексироваться элементами из
GFB3). Более точно, если а — корень полинома ж3 + х + 1, то
семь ненулевых элементов поля GFB3) — это степени «', и они
соответствуют столбцам матрицы Н. (Имеется соответствие,
аналогичное табл. 3.3.1, и читатель может построить подобную
таблицу, чтобы в этом убедиться; см. также теорему 3.3.11.) Ана-
Аналогичным образом кодовые слова в G,4)-коде Хэмминга могут
быть записаны в виде двоичных полиномов степени ^ 6; в этом
случае кодовые слова — это все полиномы р(х) степени ^ 6, для
которых а является корнем.
Итак, т(х) = х3 + х +1 — минимальный полином элемента а над
GFB), и все полиномы, для которых а является корнем, — это в
точности элементы идеала, порожденного полиномом т(х) в кольце
Z2[x]. Поскольку or - элемент порядка 7 (т.е. а — корень полинома
х7—1), мы имеем т(х)\(х7—1). Рассмотрим факторкольцо Z2[sc](*t-i)
и образ порожденного т(х) идеала в атом факторкольце. Ясно,
что если дано какое-то кратное fc(x)m(x) полинома гп(х), то после
деления его на ж7 — 1 мы получим к(х)гп(х) = q(x)(x7 — 1) + г(х),
deg[r(x)] ^ 6. Далее, r(x) = k(x)m(x) — q(x)(x7 — 1), и посколь-
поскольку т(ж)|(х7 — 1), то гп(х)\г(х) и г(х) — кратное полинома т(х).
Поэтому образ идеала, порожденного полиномом т(х), при естес-
естественном отображении из Ъъ\х\ в TLi\^\xt-\-) можно рассматривать
как совокупность в точности тех полиномов р(х) степени ^ б,
которые делятся на гп(х). Таким образом, мы получаем описа-
описание G,4)-кода Хэмминга в виде идеала, порожденного образом
полинома т(ж) в ^>2[^\(х7-1)- Далее мы обобщим приведенные
рассуждения, но сначала представим альтернативную схему ко-
кодирования/декодирования для G,4)-кода Хэмминга.
Коды, исправляющие ошибки, — основные понятия 243
Кодирование. Предположим, что мы хотим передать информаци-
информационные биты т1,тп2,тз и гтц. Мы образуем полином mix6 + тгх5 +
тзх4 + ГП4Х3 и делим его на т(х) = х3 + х + 1, чтобы получить
частное q(x) и остаток r(x) = r1x2 + r2x + r3, где deg[r(x)] < 3. Тогда
передается кодовое слово mi,m2,тз,гп4,ri,r2, гз, соответствую-
соответствующее полиному т(х)з(х) = т1Х6 + т2Х5 + тзх4 + пг4Х3 + Г1Х2 + Г2Х + гз,
который в точке а обращается в 0.
Декодирование. Предположим, что произошла по крайней мере
одна ошибка. Тогда, получив 7-битовый вектор, пользователь
вычисляет значение соответствующего полинома в точке а, ис-
используя, конечно, свойство а2 = а + 1. Если ответ нулевой, то
ошибок нет, а если ответ равен ае, то ошибка была в коэффициенте
при е-й степени переменной х.
Пример. Чтобы передать информацию A,0,0,1), мы разделим
полином х6 + х3 на х3 + х + 1, чтобы получить остаток х2 + х;
передается кодовое слово A,0,0,1,1,1,0). Заметим, что значение
полинома х6 + х3 + х2 + х в точке а равно нулю. (Отметим, что
а3 = а+1 и а6 = а2 + 1.) Если теперь получен вектор @, 0,0,1,1,1,0),
то мы вычисляем значение соответствующего полинома в точке
а и получаем а2 + 1 = а6; из этого мы заключаем, что ошибка
произошла в коэффициенте при х6.
Оправдывая необходимость использования алгебры полиномов
по модулю хп — 1 для описания циклических кодов, мы представляем
две теоремы, которые определяют некоторые основные свойства
идеалов.
Теорема 4.1.19. Пусть J — идеал алгебры полиномов по модулю
/(х), и пусть д(х) — один из ненулевых полиномов наименьшей
степени в J. Тогда полином s(x) принадлежит J в том и только
том случае, когда <7(a;)|s(x). Более того, g(x)\f(x).
Доказательство. Применяя алгоритм деления полиномов, получа-
получаем s(x) = g(x)q{x) + r(x), где deg[r(x)] < deg[g(x)]. Отсюда следует,
что r(x) = s(x) + g(x)q(x), и поскольку и s(x), и д(х) принад-
принадлежат J, г(х) также принадлежит J. Однако д(х) — полином
наименьшей степени в J, так что г(х) должен быть нулевым по-
полиномом, a s(x) — кратное полинома д(х). Рассматривая /(х),
имеем /(х) = g(x)q(x) + r(x), и поскольку /(х) = 0 [mod /(x)], то
g(x)q{x) + r(x) = 0 [mod /(x)], откуда g(x)q(x) = r(x) [mod /(x)].
Подобными рассуждениями получаем, что г(х) = 0 и <7(х)|/(х). ?
16*
244 Коды, исправляющие ошибки, и криптография
Таким образом, каждый идеал алгебры полиномов по модулю
/(ж) порожден полиномом д(х), степень которого меньше степени
любого другого полинома в J, и элементы идеала J — это кратные
полинома д(х). Если n = deg[/(x)] и г = deg[^(a;)], то идеал J имеет
размерность п—r. Действительно, J — векторное подпространство
и векторы д(х),хд(х),..., хп~г~1д(х) линейно независимы, потому
что любая их линейная комбинация (а0 + • •• + an-r-izn~r~1)g(x)
не мажет быть равной 0 [mod /(ж)], поскольку его степень i < п.
Очевидно, каждый полином s(z) в J может быть выражен через эти
базисные векторы. Полином д(х) называется образующим идеала
J или его порождающим полиномом.
Мы говорим, что полином г(х) ортогонален идеалу J, если
г(ж)в(ж) = 0 [mod f(x)] для любого полинома s(x) в J.
Теорема 4.1.20. Рассмотрим полиномы f(x), g(x) и Л(ж), где /(ж) =
g(x)h(x). Тогда в алгебре полиномов по модулю /(ж) полином а(ж)
ортогонален идеалу, порожденному полиномом Л(ж), тогда и только
тогда, когда а(х) принадлежит идеалу, порожденному полиномом
Доказательство. Предположим, что а(х) принадлежит идеалу,
порожденному полиномом д(х), и что Ь(х) принадлежит идеалу,
порожденному полиномом Л(ж); тогда по теореме 4.1.19 а(х)Ь(х) =
ф)д(хЩх) = q(x)f(x) = 0 [mod /(*)].
Обратно, если а(х) ортогонален идеалу, порожденному поли-
полиномом h(x), то a(x)h(x) = 0 [mod /(ж)], т.е. а(х) — кратное
полинома /(ж) = g(x)h(x). Отсюда мы заключаем, что а(х) дол-
должен быть кратным полинома д(х) и поэтому принадлежит идеалу,
порожденному полиномом д(х). ?
Пример. Рассмотрим алгебру полиномов по модулю х7 — 1; по-
поскольку коэффициенты принадлежат GFB), мы имеем — 1 = +1;
следовательно, х7 — 1 = х7 + 1. Будем теперь работать с х7 + 1.
Полином д(х) = х3 + х2 + 1 делит х7 + 1, и, значит, в силу тео-
теоремы 4.1.19 мы можем рассматривать его как образующий иде-
идеала с базисными векторами д(х), хд(х), х2д(х) и х3д(х). Полином
а(х) = (я2 + 1)</(я) = ж5 + ж4 + ж3 + 1 принадлежит этому идеалу. С
учетом соответствия между векторами и полиномами этот идеал
есть не что иное, как подпространство векторного пространс-
пространства V7 с базисными векторами @,0,0,1,1,0,1), @,0,1,1,0,1,0),
@,1,1,0,1,0,0), A,1,0,1,0,0,0), а полином а(х) — это вектор
Коды, исправляющие ошибки, — основные понятия 245
@,1,1,1,0,0,1) = @,1,1,0,1,0,0)+ @,0,0,1,1,0,1). Идеал, орто-
ортогональный к упомянутому выше, — это идеал, порожденный поли-
полиномом h(x) = (х7 + 1)/(ж3 + х2 + 1) = х4 + х3 + х2 + 1, а базисными
векторами являются Л(х), xh(x) и x2h(x).
Заметим, что в алгебре полиномов по модулю (ж" — 1) раз-
размерность идеала равна п — г, где г — степень его образующего
полинома. Размерность ортогонального ему идеала равна г, и
степень его порождающего полинома равна п — г. В приведенном
выше примере deg[</(a;)] = 3, deg[h(a:)] = 7 - 3 = 4 и размерности
соответствующих идеалов равны 4 и 3.
Теорема 4.1.21. В алгебре полиномов по модулю (ж" — 1) под-
подпространство пространства Vn является циклическим тогда и
только тогда, когда оно — идеал.
Доказательство. Основное замечание в этом случае состоит в том,
что умножение по модулю (ж" — 1) полинома на ж эквивалентно
циклическому сдвигу, потому что
а„_2ж"~2 Н
+ а0)
аох
= «(„.гж"-1 + • • ¦ + ахх2 + аох + an_i [mod (ж" - 1)].
Если С — циклическое подпространство пространства Vn, то из
v € С следует, что ж-v, х>:-v и (сг,_1Жп~1 + с„_2Жп~2-| \-ciX-\-cq)-*V
все принадлежат С, и по определению С — идеал.
Обратно, если подпространство С пространства Vn является
идеалом, то из v 6 С следует, что v' = ж • v 6 С, а поскольку
коэффициенты полинома v' получены циклическим сдвигом ко-
коэффициентов полинома v, мы заключаем, что С — циклическое
подпространство. D
Таким образом, циклический код полностью определяется
порождающим полиномом, который делит ж" — 1. Сообщение
aj;_i,aj;_2, ...,До (максимальной длины к) может быть закодиро-
закодировано с использованием кода С путем вычисления произведения
а(х)д(х), где а(ж) — полином, соответствующий aj,_i,aj;_2,.. .,ао,
и </(ж), deg[<j^)] = г, является образующим идеала С, размерность
которого равна п — г.
246 Коды, исправляющие ошибки, и криптография
Пример. Предположим, что нужно передать сообщение, состоящее
из трех битов, и что порождающий полином циклического кода
равен д(х) — х3 + х + 1 = A,0,1,1). Здесь х3 + х + 1 делит х7 — 1
или ж7 + 1. Тогда возможные кодовые слова вычисляются как
произведение а(х) на д(х) для каждого полинома-сообщения а(х).
То есть мы имеем
000 -> 0000000,
001 -* 0001011,
010-> 0010110,
011-+0011101,
100 -> 0101001,
101 -» 0100010,
110 —* 0111010,
111-+0110001.
Очевидно, что для этого кода сообщение может иметь не более
четырех битов информации.
Эквивалентно, код может быть определен как подпростран-
подпространство, ортогональное идеалу, порожденному полиномом Л(гг) =
(хп - 1)/д(х). Заметим, что g(x)h(x) = 0 [mod (xn - 1)]. Если
deg^a:)] = г, то размерность кода равна п — г. Элемент а(х)
принадлежит коду тогда и только тогда, когда д(х)\а(х), или, экви-
эквивалентно, тогда и только тогда, когда a(x)h(x) = 0 [mod (xn - 1)].
Чтобы доказать это в одном направлении, рассмотрим полином
а(х) в коде; тогда имеется полином и(х), такой, что а(х) = и{х)д(х).
Однако поскольку g(x)h(x) = 0 [mod (xn — 1)], то a(x)h(x) =
u(x)g(x)h(x) = 0 mod (xn — 1). В качестве упражнения чита-
читателю остается доказательство в обратном направлении. Из
a(x)h(x) = 0 [mod (xn — 1)] мы заключаем, что коэффициент при
х* в произведении a(x)h(x) — 0 [mod (xn — 1)] задается формулой
52о<»<п-1 а<Л»-« = 0, i = 0,1,... ,п - 1, где индексы вычисляются
по модулю п. Это объясняет тот факт, что матрица Н, соот-
соответствующая полиному h(x), имеет обратный порядок элементов.
Детали даны в приводимом ниже примере. Например, в приведен-
приведенном выше примере кодовое слово 0110001 соответствует полиному
х5 + х4 + 1 и h(x) = (х7 + 1)/(х3 + х + 1) = х* + х2 + х + 1. Ясно,
что a(x)h(x) = 0 [mod (х7 — 1)]. Полином h(x) называется провероч-
проверочным полиномом кода, порожденного полиномом д(х). Поскольку
h(x)\(xn — 1), он может быть также использован как порождающий
полином другого кода С, дуального коду С. Аналогия с введенным
выше дуальным кодом, а также соответствие между полинома-
полиномами д(х) и h(x) и матрицами G и Н становится понятнее, если
разобрать следующий пример.
Коды, исправляющие ошибки, — основные понятия 247
Пример. Рассмотрим полином х7 - 1 = х7 + 1 = (х + 1)(я3 + х +
1)(ж3 + х2 + 1). Полином д(х) = х3 + х2 + 1 порождает циклический
код С, у которого я = 7, к = 4. Элементы х3д(х),х2д(х),хд(х) и
д(х) образуют базис кода, и, следовательно, матрицу G можно
рассматривать как порождающую матрицу кода.
х3д(х) = A,1,0,1,0,0,0),
х2д(х) = @,1,1,0,1,0,0),
*</(*) = @,0,1,1,0,1,0),
д{х) = @,0,0,1,1,0,1),
G =
fl 1 0 1 0 0 0
0 110 10 0
0 0 110 10
Lo о о 1 1 о 1
Кроме того, этот код является подпространством, ортогональным
идеалу, порожденному полиномом h{x) = (х7— 1)/д(х) = (х— 1)(х3 +
х + 1) = хА + х3 + х2 + 1; базисные векторы этого идеала суть
*?*(*) = A,1,1,0,1,0,0),
**(*) = @,1,1,1,0,1,0),
А(*) = @,0,1,1,1,0,1).
Поскольку умножение полиномов отличается от скалярного
произведения векторов, код С определяет подпространство, ор-
ортогональное матрице Н, образованной из векторов x2h(x), xh(x),
h(x) с обратным порядком координат. Поэтому
0 0 10 111
Н= 0 10 1110
10 1110 0
Легко убедиться, что GHT — нулевая матрица. Этот код эквива-
эквивалентен G,4)-коду Хэмминга.
Другой способ определить циклический код — задать корни
порождающего полинома д(х) в GFBm), т.е. полином д(х) опре-
определяется неявно. При таком подходе вектор а(х) принадлежит
коду, если все корни полинома д(х) являются корнями этого век-
вектора. Более того, поскольку д(х) должен делить хп — 1, все корни
<*i>a2i- • • )аг полинома д(х) должны быть корнями и полинома
хп — 1, и в соответствии со сказанным в разд. 3.3 порядок каж-
каждого корня должен делить п. Поэтому если нам известны корни
порождающего полинома д(х) в GFBm), то мы можем определить
длину кода п как наименьшее общее кратное порядков корней.
Следующие примеры разъясняют это понятие.
248 Коды, исправляющие ошибки, и криптография
Пример. Код из предыдущего примера мажет быть определен
следующим образом. Каждый полином, принадлежащий коду,
должен иметь корень а, где а — один из примитивных элементов
поля GFB3). Примитивные элементы поля GFB3) — это or и
а3 (проверьте!), откуда следует, что порождающий полином кода
имеет вид
д(х) = (х + а)(х + а2)(х + а4) или д(х) = (х + а3)(ж + а6)(х + а5),
т.е. порождающий полином — это один из неприводимых полино-
полиномов х3 + х2 + 1 или х3 + х + 1. Порядок корня а равен 23 — 1 = 7, и,
следовательно, длина кода равна п = 7. Поскольку deg[</(a;)] = 3,
то имеется 7 — 3 = 4 информационных бита.
Пример. Пусть а — примитивный элемент поля GFB4). Рассмот-
Рассмотрим код, в котором каждый полином имеет корни а,а2,от3,а4, а5 и
а6; для а мы имеем соотношение or15 — 1 = 0.
Однако полином, имеющий корень а, будет также иметь корни
а2, а4 и а8. Аналогично, полином с корнем а3 будет также иметь
корни а6,а12,а24 = а15а9 = а9, и, наконец, полином с корнем or5
будет также иметь корень а10. Поэтому
а)(ж + а2)(х + а*)(х + а8)]
X [(* + а3)(* + а6)(* + а12)(ж + а9)][{х + а5){х + а10)]
д{х) =[(*
X [( + )( )( (
=(х4 + х + 1)(х4 + х3 + х2 + х + 1)(ж2 + х + 1).
Полином д(х) имеет степень 10, длина кода равна 24 — 1 = 15, и он
содержит А; = 15 — 10 = 5 информационных битов.
Теперь мы подытожим простое правило кодирования и деко-
декодирования, соответствующее этому определению циклического
кода.
Кодирование. Пусть д(х) — порождающий полином кода,
deg[flf(a;)] = г, и пусть at_i,at-2,... ,а0 — сообщение с к = п — г ин-
информационными битами. Тогда это сообщение рассматривается
как полином а(х) над GF{2) и кодируется как а(х)д(х).
Декодирование. Полученный вектор v{x) делим на д{х) [остаток
от этого деления — это синдром вектора v(x)]. Если в резуль-
результате деления получен ненулевой остаток, то должна иметь место
ошибка передачи. Чтобы распознать ошибку е(х), мы вычисляем
произведение v(x)h(x) [mod (х" — 1)], где А(х) — проверочный
полином кода. В соответствии со сделанными ранее замечаниями
Коды, исправляющие ошибки, — основные понятия 249
v(x)h(x) = [«(ж) + e(x)]h(x) = 0 + e(x)h(x) [mod (xn - 1)]. Тогда,
разделив произведение на h(x), получим полином ошибки е(х), и
и(х) = v(x) — е(х). Разделив и(х) на д(х), мы получаем переданное
сообщение.
Пример. Пусть д(х) = х3 + х2 + 1 — порождающий полином
кода G,4), который мы рассматривали в предыдущем примере.
Сообщение A,1,1,0) кодируется как A,0,0,0,1,1,0).
Предположим теперь, что получен вектор v(x) — A,0,0,0,0,1,1)
(с двумя ошибками); тогда, разделив х6 + х + 1 на д(х), мы
получим в остатке ж2 + 1; значит, при передаче произошла ошиб-
ошибка. Проверочным полиномом является h(x) — х* + х3 + х2 + 1,
и v(x)h(x) [mod (x7 -1)] равен ж6 + х5 + х3 + 1 = A,1,0,1,0,0,1).
Итак, e(x)h(x) = х6 + хъ + х3 + 1, и, разделив на h(x), мы получим
е(х) = х2 + 1 = @,0,0,0,1,0,1). Таким образом, «(ж) = v(x) - е(х) =
A,0,0,0,1,1,0) = ж6 + ж2 + х, и, разделив полученное на д(х), мы
получим переданный вектор A,1,1,0).
Если имеется только одна ошибка передачи, то е(х) = х\ и мы
исправляем i-fi бит.
В общем случае если д(х) — grxr +gr-ixr~1-i \-до — порожда-
ющий полином кода, то полиномы хп~г~1д{х), хп~г~2д{х), ..., д(х)
являются кодовыми словами. Таким образом, строки следующей
матрицы — это все кодовые слова:
у-ч
Очевидно, что строки матрицы G линейно независимы и ее ранг
равен п — г, что совпадает с размерностью кода.
Мы придем к другому представлению циклического кода, если
предположим, что полином /(х) принадлежит коду тогда и только
тогда, когда элементы a\,ot2,. ¦ .,аг из поля GFBm) будут его
корнями. Тогда если /(х) = fn-\xn~l + /„_2х"~2 + (- /0, то
r<7r
0
0
.0
Рг-1
9т
0
0
.... 9о
• •¦ 9i
... gr
... 0
0
9o
9r-i
9r
0 ..
0 ..
. o-
. 0
. 0
¦ <7o-
/(а,) = U-г
/„-2«Г2 + • • • + /о = 0
для i = 1,2,...,г. Это можно также записать в виде произведения
матриц
[/„-ъ/п-2, • • • .МогГ1.*", • ' • .«I, If = 0.
250 Коды, исправляющие ошибки, и криптография
Это условие эквивалентно тому, что а — корень полинома /(х).
Однако из нашего обсуждения конечных полей следует, что это
эквивалентно делимости полинома /(х) на минимальный полином
т,(ж) элемента а. Это условие для всех а,- мажет быть записано
в виде
Л."
«Г2
«г2
«2
la:
.п-1
а
--1
<*г
11
1
1
U
¦/п-П
/п-2
/1
/О J
откуда мы делаем вывод, что проверочная матрица равна
Н =
¦у"
Q,
«Г2
2
а
.0 -,
al
LaJ
а
"
t'-я строка матрицы Н означает, что а,- является корнем каждого
полинома кода. Рассмотрим внимательнее t-ю строку матрицы.
Все полиномы, имеющие корень а,-, составляют пространство,
ортогональное пространству строк матрицы
К
п-1
>г2
(***)
а поскольку это пространство состоит в точности из тех полино-
полиномов, которые делятся на т,-, минимальный полином элемента orj,
где deg[m,(x)] = ттц, оно является идеалом. [Матричная форма
(***) легко получается, если заменить каждую степень элемента а,-
столбцом, соответствующим его векторному представлению, как в
табл. 3.3.1.] Поскольку размерность ортогонального пространства
матрицы (* * *) равна n — гщ, размерность пространства ее строк
равна т,-. Отметим, что коэффициенты полиномов, представляю-
представляющих кодовые слова, лежат в GFB), в то время как элементы а,-
находятся в GFBmi). Однако мы упомянули, что элементы поля
GFBmi) можно рассматривать как векторы, имеющие гщ компо-
компонент из GFB), следовательно, размерность пространства строк
матрицы (* * *) над GFB) равна т(. См. также приведенный ниже
пример.
Если «j и atj имеют одинаковые минимальные полиномы, то их
ортогональные пространства совпадают, и, следовательно, прос-
пространства строк соответствующих матриц вида (* * *), рассматри-
рассматриваемых как пространства над GFB), также совпадают. Итак, для
Коды, исправляющие ошибки, — основные понятия 251
того чтобы построить матрицу Н, нам нужно знать только один
корень для каждого неприводимого сомножителя полинома д(х).
Пример. Мы хотим построить двоичный циклический код, для
которого полином f(x) будет кодовым словом тогда и только
тогда, когда его корнями являются элементы а, а2,..., а6, где а —
примитивный элемент поля GFB4). Минимальный полином mi(x)
элемента or имеет также корни a2, or4, or8. Аналогично, тг(х),
минимальный полином элемента а3, имеет корни а6, а12, а9, и
тз(х), минимальный полином элемента а5, имеет также корень
а10. Таким образом,
д(х) = т1(х)т2(х)тз(х),
и достаточно проверить, что каждый полином f(x) имеет корни а,
а3 и а5. Значит, искомый код — это ортогональное пространство
матрицы
Н=
(а3I3=а
513
а12
(а3I2=а6
а1
(а3I=а3 (а3)°=1
(а5)х=а5 (а5)°=1
или, принимая во внимание векторное представление каждой
степени элемента а (см. табл. 3.3.1), матрице Н можно придать
вид
Г1 1110101100100 01
011110101100100
001111010110010
111010110010001
н =
111101111011110
101001010010100
110001100011000
100011000110001
000000000000000
110110110110110
110110110110110
10110110110110 1J
Разложение полинома х15 — 1 на неприводимые множители имеет
вид
252 Коды, исправляющие ошибки, и криптография
и легко убедиться, что тх(х) = ж4 + х + 1, где mi(o) = 0, т2(х) =
х4+х3+х2+х+1, где т2(а3) = 0, и т3(х) = ж2+ж+1, где т3(а5) = 0.
(В этом месте читатель должен обратить внимание на потребность
эффективной процедуры разложения на множители полиномов с
коэффициентами из конечного поля; эта тема обсуждается в гл. 6.)
Покажем теперь, что Bт — 1,2т — т - 1,3)-коды Хэмминга, с
которыми мы уже сталкивались, эквивалентны циклическим кодам.
Пусть а — примитивный элемент поля GFBm), и рассмотрим
код с проверочной матрицей
Если степени элемента а представлены векторами (столбцами)
длины m над GFB), то каждый ненулевой вектор длины m появ-
появляется ровно один раз как столбец матрицы Н. Таким образом, Н
действительно описывает код Хэмминга. Его можно описать как
циклический код, если мы скажем, что полином f(x) — кодовое сло-
слово тогда и только тогда, когда or является корнем полинома f(x).
Минимальный полином элемента or является с-примитивным поли-
полиномом, следовательно, порождающий полином д(х) с-примитивен.
Аналогично, каждый код, порожденный с-примитивным полиномом,
является кодом Хэмминга.
Пример. Пусть m = 4, и пусть or — корень с-примитивного
полинома х4 + х + 1. Тогда проверочная матрица A5,11)-кода
Хэмминга, порожденного этим полиномом, имеет вид
Г1 1110101100100 01
011110101100100
001111010110010
L1 1101011001000 U
Опишем теперь две процедуры кодирования для циклических
кодов, где хорошо видна простота этих кодов. Общая характе-
характеристика обоих методов состоит в том, что регистр принимает
к информационных битов из источника и без промедления от-
отправляет их в передающий канал. За каждым таким блоком
информационных битов следуют п — к проверочных битов. Оче-
Очевидно, что пока готовятся проверочные биты, регистр не может
принимать следующий блок информационных битов, и, таким
Коды, исправляющие ошибки, — основные понятия
253
образом, либо источник должен иметь возможность приостанавли-
приостанавливать и повторно начинать передачу, либо должен использоваться
временной буфер. ,
Первая из описываемых процедур кодирования использует к-
разрядный регистр, в то время как вторая использует п — к-
р аз рядный регистр. Если проверочных битов больше, чем ин-
информационных, то предпочтительнее первый метод, в противном
случае более экономичен второй. Обе процедуры выдают одно и
то же кодовое слово.
Кодирование циклического (п, Ж)-кода, порожденного полиномом
g(x), deg\g(x)] = п—к, достигается с помощью схемы, изображенной
на рис. 4.1.5, где используется Jfc-разрядный регистр; соединения
регистра соответствуют полиному h(x) = (хп — 1)/д(х). Информа-
Информационные биты первоначально размещаются в к элементах памяти,
а затем происходят циклические сдвиги. Первые к битов, вы-
выходящие из регистра, являются информационными, а остальные
п — к — проверочными для кодового слова из п битов. (См. упр. 5
к этому разделу.)
Выход!
Рис. 4.1.5.
Кодирование циклического (гс,&)-кода.
При использовании п — i-разрядного регистра процедура ко-
кодирования выглядит следующим образом: кодовое слово может
быть образовано умножением произвольного полинома степени не
более к — 1, коэффициенты которого — информационные биты, на
полином д{х), который порождает код. Это может быть достиг-
достигнуто использованием либо схемы, показанной на рис. 3.3.2, либо
схемы на рис. 3.3.3. Информационные биты теперь меняются и
могут быть получены из кодового слова делением соответствую-
соответствующего полинома на д(х); для этой цели может использоваться схема
рис. 3.3.6. (См. упр. 6 к этому разделу.)
Процедура обнаружения ошибок для циклических кодов также
совсем проста. Если v(x) — принятый полином, то достаточно
254 Коды, исправляющие ошибки, и криптография
проверить, равен или нет нулю полином-синдром r(x) = g(x)v(x)
(см. упр. 7 к этому разделу). Таким образом, для циклических ко-
кодов кодирование и обнаружение ошибок выполняются за линейное
время относительно длины кода.
В заключение мы обсудим возможности циклических кодов ис-
исправлять ошибки, подойдя таким образом к БЧХ-кодам. Мы
говорим, что вектор ошибок длины п — это пакет ошибок длины
Ь, тогда и только тогда, когда все ненулевые компоненты не разб-
разбросаны по всей длине п, а сконцентрированы в интервале длины
Ь. Мы рассмотрим некоторые теоремы, касающиеся корректи-
корректирующей способности циклических кодов относительно пакетов
ошибок.
Теорема 4.1.22. В циклическом (гс,?)-коде никакое кодовое
слово не является пакетом ошибок длины не более п — к. Таким
образом, каждый циклический код может обнаруживать любой
пакет ошибок длины, не превосходящей п — к.
Доказательство. Пусть г(ж) — пакет ошибок длины ^ п — к, и
предположим, что обсуждаемый циклический (п,к)-кол порожден
полиномом д(х) степени п — к. Кроме того, предположим, что
первый отличный от нуля коэффициент полинома г(х) — это
коэффициент при х*. Тогда г(х) = х>го(х), где deg[ro(a:)] < п — к,
поскольку г(х) — пакет ошибок длины ^ п — к. Далее, поскольку
д(х)\(хп — 1), д(х) не делится на х и, следовательно, полиномы х* и
д(х) взаимно просты. Кроме того, из того, что д(х) должен делить
г(х), следует, что если г(х) — кодовое слово, оно обязательно
делит го(х), но это противоречит предположению, что deg[ro(x)] <
п — к. Таким образом, г(х) не может быть кодовым словом. ?
Следующая теорема дает нижнюю границу кодового расстояния
любого циклического кода. В случае БЧХ-кодов, определяемых
ниже, порождающие полиномы выбираются так, чтобы гаранти-
гарантировать относительно большое кодовое расстояние.
Теорема 4.1.23.
Пусть д(х) — порождающий полином двоич-
двоичного циклического кода длины п, и пусть ав1,ае2,.. .,ae"-* —
корни полинома д(х), где а — элемент порядка п в некотором
поле Галуа. Тогда кодовое расстояние этого кода больше, чем
максимальное число последовательных целых чисел в множестве
е = (ех.ег,...,е„_ь).
Коды, исправляющие ошибки, — основные понятия 255
Доказательство. Предположим, что то, то + 1,..., то + с/о — 2 —
наибольшее подмножество последовательных целых чисел в мно-
множестве е. Мы уже упоминали, что циклический код с корнями
а*1, аез
д рня
, ae"~* — это пространство, ортогональное матрице
Н =
а
"
Теперь, если мы докажем, что никакая линейная комбинация do—l
столбцов подматрицы
S =
m0)n-2
(am0)
am0
amo+<*o-2
не обращается в нуль, то, очевидно, то же самое будет верно для
столбцов матрицы Н, и по теореме 4.1.12 кодовое расстояние будет
не меньше, чем do.
Тот факт, что выписанная матрица S обладает нужным свойс-
свойством, может быть доказан демонстрацией того, что определитель
матрицы, полученной взятием любого множества do — 1 столбцов
матрицы S, отличен от нуля. Действительно, такой определитель
может быть записан в виде
(am°)J<io
который, в свою очередь, может быть записан как
*2
„S-1
где s = do — 1 и г» = о^'о-». Последний определитель, однако,
является определителем матрицы Вандермонда и равен П.» (х« ~
Xj). Он обращается в нуль, только когда Xi = ж, для некоторых
i,j, но в нашем случае это невозможно. ?
256
Коды, исправляющие ошибки, и криптография
Определение 4.1.24. Пусть а — элемент поля GFBm). Тогда
для данных то и do код, порожденный полиномом д(х), является
БЧХ-кодом в том и только том случае, когда д(х) — минимальный
полином над GFB), корнями которого являются элементы аг,
i = mo, то + 1, • • •, то + do — 2.
Длина п такого кода — это наименьшее общее кратное (km)
порядков его корней. Это эквивалентно утверждению, что п равно
порядку е элемента а (за исключением тривиального случая, когда
дан только один корень ат°). Последнее утверждение справедливо,
так как мы имеем (поскольку п равно lcm порядков корней)
(ат°)п = 1, (am°+1)n = 1,
откуда заключаем, что or" = 1 и что порядок е элемента а делит
п, и, следовательно, е ^ п. С другой стороны, если ае = 1, то
(aJ)e = 1 для всех j. Таким образом, порядок любого элемента
а* делит е, откуда мы заключаем, что е = п, поскольку п, km, не
может быть больше е.
Число информационных битов, так же как число проверочных
битов, может быть найдено с помощью общего метода, представ-
представленного нами для циклических кодов. Из теоремы 4.1.23 нам
известно, что кодовое расстояние этих кодов больше do.
Наиболее важные БЧХ-коды получаются, если взять в качес-
качестве а примитивный элемент поля GFBm) и положить то = 1 и
do = 2io + 1. Тогда корнями полинома являются a, a2, a3,..., a2io.
Однако, поскольку каждая четная степень о имеет тот же мини-
минимальный полином, что и некоторая предыдущая нечетная степень
а (например, а10 имеет тот же минимальный полином, что и а5),
мы можем сказать, что д(х) — полином с корнями а,а3,... ,a2to~1.
Пусть mi(x),ma(x),... ,m2to-\(x) — соответствующие минималь-
минимальные полиномы. Тогда
д(х) = lcm[mi(x),m3(x),...,m2to-i(x)].
Из наших предыдущих рассуждений видно, что deg[m,(a:)] < m,
где т определяет поле GFBm), откуда следует, что deg[#(x)] < mto,
и, таким образом, код имеет меньше, чем mto, проверочных битов.
Сделанные выше замечания подытожены в следующей теореме.
Теорема 4.1.25. Для любой пары положительных целых чисел
т и to < п/2 существует двоичный БЧХ-код длины п = 2т — 1,
который исправляет все комбинации не более to ошибок и имеет
не больше, чем mto, проверочных битов.
Коды, исправляющие ошибки, — основные понятия 257
Пример. Рассмотрим поле GFB4), и пусть or — примитивный
элемент этого поля, т.е. п = 24 — 1 = 15. Рассмотрим, кроме
того, БЧХ-код, состоящий из всех полиномов, имеющих корни а и
а3. Минимальные полиномы для а и or3 суть mi(x) = х4 + х + 1 и
Ш2(х) = х4+х3+х2+х+1 соответственно. Оба этих полинома делят
х15 — 1. Циклический код С над GFB) определяется порождающим
полиномом g[x) = mi(x)ni2(x) степени 8 и проверочной матрицей
4 а13 а12 а1 а0=1 I
=а12 (а3I3=а9 (а3I2=а6 ... (а3)х=а3 (a3)°=lj '
Из сказанного выше мы знаем, что кодовое расстояние этого
кода ^ 5 (в этом случае t0 = 2); это подразумевает, что код может
исправлять до двух ошибок; С — это A5,7)-код. Далее v?C тогда
и только тогда, когда S(v), синдром вектора v, равен 0, т.е. v € С
тогда и только тогда, когда Hvr = 0т, или тогда и только тогда,
когда Si = S3 = 0, где S2 = ?i$<<i4w<a< и S3 = Ei^m"»"1 ~
компоненты синдрома S(v) = (Si,S3)T вектора v относительно
Н. Если мы используем векторное представление для элементов
поля GFB4), то получим (8x15)-матрицу Н, подобную которой мы
видели в предыдущем примере.
Предположим, что принятый вектор v = (vo, t>2, • •., fn) — вектор
с самое большее двумя ошибками. Пусть е = xei + х, 0 ^ ej, ег ^
14, е\ ф ег — вектор ошибок. Мы имеем
Кроме того, если xi = а" и жг = аез, то Si = х\ +х2 и S3 = х3+я3, и
после некоторых манипуляций мы видим, что если встретились две
ошибки, то 1/xi и 1/^2 —два корня в GFB*) полинома локаторов
ошибок
Если случилась только одна ошибка, то Si = x%, S3 = x\ и
S3 + S3 = 0. Следовательно, о~ = 1 + Si». И наконец, если ошибок
не было, то Si = S3 = 0.
Из приведенного примера мы видим, что, для того чтобы иметь
возможность исправлять две ошибки, мы должны специальным
образом удвоить число строк матрицы Н, используемой в кодах
Хэмминга. В литературе имеются более общие процедуры деко-
декодирования для исправления любого числа ошибок; см. например,
(Berlekamp, 1968; Childs, 1979; Mackiw, 1985; MacWilliams, 1977;
Peterson и др., 1972).
17—274
258 Коды, исправляющие ошибки, и криптография
Криптография — общие понятия
Криптология — это искусство проектирования и взлома сек-
секретных систем; часть, связанная с проектированием, называется
криптографией, а «взламывающая» часть — криптографическим
анализом, или криптоанализом. Весь процесс можно рассматри-
рассматривать параллельно процессу кодирования и декодирования. Вновь
будем рассматривать отправителя, который хочет сообщить «до-
«доверительную» информацию получателю по ненадежному каналу
связи. Ненадежность канала может быть вызвана несанкциониро-
несанкционированным перехватчиком, имеющим доступ к каналу, цели которого
состоят в том (но не всегда только в том), чтобы: A) нарушить
секретность сообщения, B) сбить с толку получателя искаженным
сообщением и C) обмануть отправителя или получателя, или
обоих относительно личности противоположной стороны.
Первая из перечисленных опасностей — наиболее широко
известная проблема криптографии. Защита от перехватчика,
преследующего последние две цели, выдвинулась сравнительно
недавно и включает в себя установление полномочий и обеспече-
обеспечение сохранности. Например, проблема установления полномочий
возникает в процедуре входа в многопользовательских компью-
компьютерных системах, в то время как проблема обеспечения сохран-
сохранности возникает при электронной передаче фондов. Подлинность
нарушается, когда сообщение С" на рис. 4.2.1 составлено перех-
перехватчиком, в то время как получатель убежден, что оно пришло от
отправителя. Сохранность нарушается, когда М ф М' и ни отпра-
отправитель, ни получатель не могут обнаружить изменений сообщения
С.
Проблема тайнописи очень стара, и много попыток защитить
доверительные сообщения, особенно военные и дипломатические,
составили ее богатую историю [большой интерес представляет
книга Кана (Kahn, 1967)]. В то время как в задаче кодирования
основная цель — быстрая и правильная передача сообщения по
зашумленному каналу, цель криптологии — безопасная передача
первоначального сообщения, измененного таким образом, чтобы
несанкционированный перехватчик не смог понять сообщение.
Это достигается с помощью криптосистемы типа той, которая
показана на рис. 4.2.1.
Криптография — общие понятия 259
Отправитель
Получатель
М
D(K',C') = M'
Устройство
шифрования
Устройство
дешифровки
Е{К,М)
= С
Канал
С
Несанкцио-
Несанкционированный
'перехватчик
Рис. 4.2.1.
Криптосистема для передачи сообщения М.
Криптографическая система (криптосистема, или шифр) состо-
состоит в преобразовании сообщения М, которое называется откры-
открытым текстом, с помощью шифровальной схемы таким образом,
что только законный получатель может обратить это преобразова-
преобразование и восстановить сообщение. Шифровальная схема обращается
к функции шифрования Е, которой кроме открытого текста М
требуется также шифровальный ключ К, являющийся парамет-
параметром, специфическим для каждого преобразования. (Более точное
определение ключа дано ниже.) Функция шифрования определя-
определяется алгоритмом, и результат процесса шифрования Е(К, М) — С
называется шифрованным текстом или криптограммой. Текст
С передается по незащищенному каналу, где перехватчик может
рассматривать его, запоминать, работать с ним и, наконец заме-
заменить его на С. Дешифратор, или схема дешифровки, использует
алгоритм расшифровки D, который берет в качестве аргументов
полученный шифрованный текст С" (его подлинность сомнительна)
и ключ для дешифровки К'. Ключ и шифрованный текст должны
определять открытый текст однозначно. Отметим, что К, М
не обязательно совпадают с К', М', где М' = D(K',C), хотя в
классической криптографии К = К'. Мы называем системы, где
К = К', системами единого ключа или симметричными крипто-
криптосистемами, чтобы отличать их от более новых систем открытого
ключа, или асимметричных криптосистем, где используются два
различных ключа.
Коды и шифры — единственные две возможности для процесса
шифровки/дешифровки. Использование кодов для шифрования
сообщений означает замену некоторых или всех слов и фраз кодо-
кодовыми словами и кодовыми фразами, полученными из специальной
книги, напоминающей словарь; на самом деле слово код относит-
17*
260
Коды, исправляющие ошибки, и криптография
ся только к такой криптосистеме, хотя термины секретный код
и взлом кода используются во всех разновидностях тайнописи.
Иначе говоря, код должен иметь возможность установить семан-
семантическое содержание любого сообщения, которое можно передать
по каналу, и как отправитель, так и получатель должны иметь
кодовую книгу. При условии, что кодовая книга надежно защище-
защищена, такое сообщение чрезвычайно трудно (если вообще возможно)
взломать. Однако передача сообщения невозможна, если фраза не
включена в кодовую книгу. Напротив, при использовании шифра
возможна передача произвольных сообщений, потому что шифр
— это алгоритм, присваивающий новые символы шифрованного
текста символам или группам символов открытого текста. Шифры
представляют большой интерес, потому что связь между шифро-
шифрованным текстом и открытым текстом не произвольная и может
быть обнаружена с помощью криптоанализа.
4.2.1. Симметричные криптосистемы (единого ключа)
В классической криптографии имеется два основных преобра-
преобразования открытого текста сообщений вместе с их комбинациями:
1. Транспозиции, или перестановки, переупорядочивают группу
символов в соответствии с некоторым правилом, не меняя
их, т.е. если сообщение М составлено из т блоков, М =
В\Вг.. .Вт, где каждый блок В,- содержит п символов, Bi =
6iFi6iF2 .. -Ь{,п, i = lJ,...,m, то шифрованный текст — это
С = CiC2-.-Cm, где С, = Ь|>AN,>B)--Л,1г(п) для каждого
i = 1,2, ...,т, а т — фиксированная перестановка целых
чисел 1,2,...,п.
2. Подстановки замещают символы открытого текста соответ-
соответствующими символами из алфавита шифрованного текста
(ключ задает отображение), т.е. если сообщение — это М =
ага-2...а„, то шифрованный текст С — /i(ai)/2(e2) •-/пО*,,)
определяется с помощью п отображений /,-, г = 1,2,... ,п, из
алфавита открытого текста в алфавит шифрованного текста.
3. Разумеется, комбинируя A) и B), мы получаем шифр подста-
подстановки/перестановки (S/PI).
Пример (транспозиция). Предположим, что мы хотим зашифро-
зашифровать сообщение «computer algebra». Первый пример транспози-
х) S/P происходит от английских «substitution» и «permutation». —
Прим. перев.
Криптография — общие понятия 261
ции — записать текст задом наперед, традиционным способом
группируя его по пять символов. Так, мы имеем
arbeg laret upmoc
Другой пример транспозиционного шифра — шифр изгороди, где
мы расписываем текст побуквенно в две строки, а затем читаем
его построчно, т.е. мы получаем
т и
р
I
и шифрованный текст имеет вид «cmuea gbaop trier». Способы
взлома транспозиционных шифров можно найти в книгах (Kahn,
1967, pp. 225-226) и (Sinkov, 1968, ch. 5).
Если используется только один алфавит для шифрованных сооб-
сообщений, то криптосистема называется одноалфавитной. Криптосис-
Криптосистемы, в которых буква шифрованного текста может представлять
более одной буквы открытого текста, называется многоалфавитны-
многоалфавитными. Мы различаем также потоковые и блочные шифры. Потоковые
шифры рассматривают открытый текст как последовательность
символов, подлежащих шифровке, в то время как блочные шифры
делят сообщения на блоки равной длины и производят шифрова-
шифрование, действуя на блоках символов открытого текста. В потоковом
шифре основная допустимая операция на сообщении — подста-
подстановка одного символа вместо другого, в то время как в блочном
шифре помимо подстановки мы имеем перестановку. Хотя пото-
потоковые шифры сохраняют свое значение для многих приложений,
блочные шифры последнее время оказывают наибольшее воздейс-
воздействие на криптографию. Рассмотрим сначала потоковые шифры.
Определение 4.2.1. Пусть А а В — алфавиты открытого
и шифрованного текста соответственно. Ключ — инъективное
(взаимно однозначное) отображение из А в В. Ключ называется
фиксированным, если это отображение одно и то же для каждого
элемента из А, в противном случае ключ переменный.
Фиксированный ключ / : А —* В можно распространить на
строки элементов из А, т.е. на слова с буквами из А, по-
полагая aia2..am —» /(аОДвг)-- • /(«»?>); аналогично, переменный
ключ /ь/г,... можно распространить, полагая aia2...am —>
h(o4)h{a2)... fm{am). Упомянутые в определении алфавиты мо-
могут состоять из букв английского, алфавита или n-ок букв, или
262 Коды, исправляющие ошибки, и криптография
элементов кольца Ът (т = 2 или т = 26, или т = 96, как в некото-
некоторых коммерческих системах). В качестве упражнения читателю
оставляется проверка того, что отображение а —> an + k (mod m)
из Ът в себя инъективно (взаимно однозначно) тогда и только
тогда, когда gcd(m,n) = 1.
Определение 4.2.2. Отображение а —» an + к (mod m) кольца Zm
в себя при фиксированных п, к из Zm и gcd(m, n) = 1 называется
модулярным шифром.
Прига=1,& = 3ит = 26 мы получаем шифр Цезаря — код, пре-
представляющий исторический интерес, поскольку, согласно легенде,
он использовался римским императором Гаем Юлием Цезарем.
Заметим, что шифр цезаря — циклический сдвиг алфавита на три
буквы.
Пример. Отождествим а с 0, 6 с 1, с с 2, и т.д.:
abcdefghijk I m n
О 1 2 3 4 5 6 7 8 9 10 11 12 13
opqrstuvwxyz
14 15 16 17 18 19 20 21 22 23 24 25
Используя шифр Цезаря, а —¦ а+3, и переписывая текст традицион-
традиционным способом группами по пять символов, мы сообщение «comput-
«computer algebra», эквивалентное 2,14,12,15,20 19,4,17,0,11 6,4,1,17,0,
зашифровываем как 5,17,15,18,23 22,7,20,3,14 9,7,4,20,3 или,
эквивалентно, как «ftpsx whudo jheud».
Одноалфавитные подстановки используют только один ключ,
и их можно легко взломать, наблюдая частоту распределения
символов в шифрованном тексте. Это — легкая задача, потому
что имеются таблицы различных частот букв, например частоты
первых букв в слове, частоты последних букв в слове, частоты
диграфов (т.е. частоты сочетания: буква а, за которой следует Ь) и
т.д. Таблица, приведенная на рис. 4.2.2, была получена Синковым
из выборки из 1000 букв [см. приложения в книге (Sinkov, 1968)].
Одноалфавитный шифр может быть усилен, если мы исполь-
используем многоалфавитный шифр подстановки, скрывающий частоты
букв за счет кратных подстановок. Здесь при шифровании со-
сообщения используется более одного алфавита, и ключ включает
указание, какая подстановка должна использоваться для каждого
Криптография — общие понятия
263
Буква
а
6
с
d
е
f
9
h
Частота
7.3
0.9
3.0
4.4
13.0
2.8
1.6
3.5
Буква
J
к
1
т
п
о
Р
q
Частота
0.2
0.3
3.5
2.5
7.8
7.4
2.7
0.3
Буква
s
t
и
V
W
X
У
Z
Частота
6.3
9.3
2.7
1.3
1.6
0.5
1.9
0.1
7.4
7.7
Рис. 4.2.2.
Относительные частоты букв в английском языке.
символа. Эти шифры известны также как шифры Виженера, по фа-
фамилии французского криптографа шестнадцатого столетия Блеза
де Виженера.
Более точно, многоалфавитный шифр подстановки с перио-
периодом р состоит из р шифровальных алфавитов 5,- и отображений
/,• : А —> Bi, i = 1,2, ...,р, определяемых ключом. Ключ — это
чаще всего слово К = к^2...крп /,(а) = а + *,• (mod 26). Откры-
Открытое сообщение М = аха2 ... арар+1... а2р ¦.. зашифровывается как
/i(ai)/2(a2) ••• fp(ap)fi(ap+i)... fp(a2p)... повторением последова-
последовательности отображений /х, /2,..., fp для каждых р символов. Для
шифрования может использоваться квадрат Виженера с буквами
а, Ь, ... , z открытого алфавита в первой строке и первом столбце,
т.е.
ab ... yz
be ... za
yz ... wx
za ... xy
Процедура шифрования может быть упрощена, если мы примем
во внимание, что можно использовать не все строки (алфавиты)
квадрата Виженера. Например, предположим, что ключ — «alkis»,
в этом случае период р — 5; тогда отображения /,¦ даются следу-
264
Коды, исправляющие ошибки, и криптография
ющей простой таблицей, где ключ появляется в левом столбце.
а Ь cdefghijklmnopqrstuvwxyz
a b cdefghijklmnopqrstuvwxyz
Imnopqrstuvwxyzabcdefgh i j k
k I mnopqrstuvwxyzabcdefghij
i j k Imnopqrst uvwxyzabcdefgh
s t uvwxyzabcdefghijklmnopqr
В этом случае сообщение «computer algebra» шифруется как
«czwxm tpbid gplzs», где i-я буква открытого текста отображается
в символ, находящийся в соответствующем столбце в *-м mod 5
алфавите шифра; например, буква m открытого текста отобра-
отображается в букву w, которая находится в столбце, начинающемся
буквой т, в алфавите, начинающемся буквой к.
Из последнего примера видно, что ключ «alkis» соответствует
последовательности чисел 0, 11, 10, 8, 18, и, следовательно,
шифрование может быть осуществлено последовательной записью
под открытым текстом чисел 0, 11, 10, 8, 18, 0, 11, 10, 8, 18,
0, 11, 10, 8, 18, ... и прибавлением их по модулю 26 к числам,
соответствующим буквам открытого текста.
Процедура дешифровки выглядит следующим образом: чис-
число, соответствующее i-й букве открытого текста, получается
прибавлением по модулю 26 числа, соответствующего i-й букве
шифрованного текста, к т-дополнению числа, соответствующего
i-й (mod p) букве ключа. (Напомним, что получатель также знает
ключ.) Например, если т = 26, полученное сообщение — «czwxm
tpbid gplzs», ключ — «alkis», или 0, 11, 10, 8, 18, и мы хотим вычис-
вычислить вторую букву открытого текста, то прибавляем по модулю
26 число 25, соответствующее букве z шифрованного текста, к
числу 15, являющемуся дополнением до 26 второй буквы ключа
B6 - 11 = 15) и получаем 14 или «о».
Шифры Виженера считались в те дни невзламываемыми, но в
1863 г. прусский офицер по фамилии Ф.В. Касисский (F.W. Kasiski)
нашел простой теоретике-числовой метод поиска длины ключа и
опубликовал этот результат. В многоалфавитных шифрах так
же, как в шифре Цезаря, применяется сдвиг, но длина сдвига
меняется, обычно периодически. Изменение сдвигов выравнивает
частоты букв, обрекая на неуспех методы анализа, используемые
для взлома шифров Цезаря, но характеристические частоты сох-
сохраняются в подпоследовательностях зашифрованного сообщения,
Криптография — общие понятия
265
соответствующих повторениям в ключевой последовательности.
Если нам удастся определить длину периода ключа, мы сможем
определить буквы с помощью частотного анализа.
Период ключа может быть обнаружен поиском повторяющихся
блоков в шифрованном тексте. Часть из них носит случайный
характер, но основная масса получается из соответствия меж-
между повторяемыми словами или полсловами в открытом тексте и
повторами в последовательности ключа. Когда это имеет мес-
место, расстояние между повторами будет кратным периоду ключа.
Например, открытый текст «send more men and more arms» при
использовании шифровального ключа «bhenf» даст шифрованный
текст «tlrqr pyizj ohrqr pyinw nz» (если мы оставим последний блок
неполным). В этом случае расстояние между двумя вхождениями
равно 10, что означает, что длина ключа равна 10 или 5.
Другим вариантом многоалфавитных подстановочных шифров
являются шифры с автоматическим выбором ключа, когда само
сообщение (открытый текст или шифрованный текст) используется
в качестве ключа. Лля запуска шифра используется короткий
«затравочный» ключ, обычно одна буква. Эти варианты были
предложены в 1550 г. Кардано и развиты Виженером. Если мы
работаем в Zm, то шифры с автоматическим выбором ключа
определяются отображением af —* 6$ = ndi + са^_1 (mod m), где
даны с, а0, или а,- —+ 6,- = пп{ + c6,_i (mod m), где даны с, bo;
разумеется, мы выбираем п так, что gcd(m,n) = 1.
Пример. Если мы перенумеруем буквы от а до z, как в пре-
предыдущем примере (т.е. т = 26), то сообщение «computer alge-
algebra», эквивалентное последовательности 2,14,12,15,20, 19,4,17,0,11,
6,4,1,17,0= а\аг ... «is, может быть зашифровано следующими дву-
двумя способами:
1. Используя преобразование щ —> bt = nat + са*_1 (mod m) с
n — 1, с — 1 и eto = 2, мы получаем 6i = 4, 62 = 16, A4 + 2), и
т.д., и, наконец, мы получаем шифрованный текст 4,16,0,1,9,
13,23,21,17,11, 17,10,5,18,17.
2. Используя преобразование а,- —> 6,- = па,- + c6,_i (mod m) с
n = 1, с = 1 и 6о = 2, мы получаем &i = 4, 62 = 18, A4 + 4),
и т.д. и, наконец, получаем шифрованный текст 4,18,4,19,13,
6,10,1,1,12, 18,22,23,14,14.
Другой вариант — шифр бегущего ключа Виженера, использу-
использующий в качестве ключа неповторяющийся текст. Первоначально
266 Коды, исправляющие ошибки, и криптография
эти шифры также считались невзламываемыми, но в 1883 г. Кер-
чофс нашел общее решение для многоалфавитных подстановок без
ограничений на тип или длину ключа [детали можно найти в книге
(Kahn, 1967, pp. 236-237)]; более общее решение проблемы было
дано Фридманом в 1918 г. Интересное изложение его идей может
быть найдено в статье Гасса (Gass, 1986).
Наиболее значительный вариант шифра Виженера был предло-
предложен в 1918 г. американским инженером Вернамом (G.S. Vernam),
работавшим в системе телетайпной сети AT&T (American Telephone
&: Telegraph). Сообщения передавались тогда с использованием
двоичного кода, и Вернам предложил прибавлять по модулю
2 случайные последовательности точек и пробелов так, чтобы
вся частотная информация, корреляция между символами, пери-
периодичность и тому подобное терялись. Главный недостаток этой
процедуры состоит в том, что она требует обмена огромным ко-
количеством ключей заблаговременно (т.е. один символ ключа на
каждый символ сообщения). Вернам первоначально предполагал
использовать или короткий ключ, или линейную комбинацию ко-
коротких ключей, но оба подхода оказались уязвимыми. С одной
стороны, использование короткого ключа уязвимо по результатам
типа Касисского, с другой стороны, как было доказано майором
американских войск связи Мауборном, использование линейных
комбинаций коротких ключей может быть успешно проанализиро-
проанализировано по существу той же техникой, которая используется против
систем бегущего ключа.
И Фридман, и Мауборн пришли к выводу, что для безоговороч-
безоговорочно надежной криптосистемы ключ должен быть таким же длинным,
как сообщение, и непоследовательным (т.е. нерегулярность каж-
каждого символа ключа должна быть по крайней мере так же велика,
как среднее информационное содержание на символ открытого
текста). Если мы предположим, что М — верхняя граница длин
всех возможных сообщений, то мы выбираем ключевую последова-
последовательность по крайней мере такой же длины, как М; все ключевые
последовательности тогда равновероятны. Если работа ведется
по модулю 26, открытый текст имеет вид а\п2...ам и каждый
символ а,- представлен одним из чисел от 0 до 25, то ключевая
последовательность — это fcifo • • км, где fc< — случайно выбран-
выбранное число между 0 и 25. Тогда каждый символ шифрованного
текста равен с< = п{ + &,• (mod 26). Эта схема называется шиф-
шифром одноразового блокнота, и такое название связано с тем, что
процесс шифровки/дешифровки использует выписанные перечни
Криптография — общие понятия 267
случайных чисел («листы блокнота») для получения ключевых
последовательностей, и каждая ключевая последовательность ис-
используется только один раз. Как уже упоминалось, главный
недостаток этой схемы состоит в том, что она требует обмена
огромным количеством ключей до начала связи. Однако шифр
одноразового блокнота, очевидно, невзламываем. Случайность
ключа означает, что любые две последовательности сообщений
одинаковой длины с равной вероятностью могут превратиться в
данный шифрованный текст. В результате одноразовые блокно-
блокноты используются для передачи в высшей степени доверительной
информации, например, в прямой связи между Вашингтоном и
Москвой.
В итоге мы видим, что сохранность возрастает при движении
от шифра Цезаря к шифру одноразового блокнота и одновременно
возрастает длина ключа. Ключ состоит из единственного числа
в шифре Цезаря, в то время как в шифре одноразового блокнота
ключ потенциально бесконечен. В невзламываемой системе все
сообщения равновероятны, следовательно, шифр неразрешим.
До сих пор мы имели дело главным образом с потоковыми
шифрами, где каждый символ сообщения обрабатывался инди-
индивидуально. Рассмотрим теперь полиграфовые системы. Это —
блочные шифры, рассматривающие одновременно группы сим-
символов открытого текста. Блочные шифры разрабатывались с
целью помешать простому криптоанализу с помощью статистики
частот вхождений; обычно они действуют на парах, диграфах,
тройках, триграфах, и в общем случае на полиграфах. Системы,
обрабатываемые вручную, ограничивались диграфами.
Лучшая из известных систем ручного диграфового шифрования
принадлежит английскому ученому Плейферу. По этой схеме
перемешанная алфавитная последовательность записывается в
квадрате 5x5. (Буква «j» опускается, поскольку она встречается
довольно редко и может быть потом восстановлена в контексте.)
Так, например, мы может взять
а 1 k i s
b у t q x
г п с u g
d w h m о
z p f v e
и сообщение «computer algebra» шифруется как «ghwvc qzglk osrda»,
при этом пара «со» отображается в пару «gh», где g находится
268
Коды, исправляющие ошибки, и криптография
в той же строке, что и с (обратите внимание на параллелограмм,
задаваемый буквами cgoh) и т.д. Из этого примера читатель легко
может вывести правила шифрования текста, когда две буквы лежат
в одной строке или столбце [явно эти правила сформулированы в
работе Синкова (Sinkov, 1968, р. 114)]. Используя подсчет частот
диграфов, Мауборн провел криптоанализ этой схемы в 1914 г.
Краеугольный камень современной математической криптогра-
криптографии был заложен Хиллом (Hill, 1929, 1931). Хилл выяснил, что
почти все существующие криптосистемы могут быть сформули-
сформулированы в единой модели линейных преобразований пространства
сообщений. Он отождествил n-ку сообщения с n-кой целых чи-
чисел и приравнял операции шифрования и дешифрования к паре
взаимно обратных линейных преобразований. Обобщая понятие
модулярного шифра, мы получаем
Определение АЛЛ. Пусть К есть п X n-матрица, а а и d —
некоторые n-мерные векторы с компонентами из Ът. Шифр Хил-
ла — это отображение вида а —> Кат + d, инъективное тогда и
только тогда, когда gcd[det(K),m] = 1; все операции выполняются
по модулю т.
Для шифровки мы подразделяем открытый текст на блоки по
п букв каждый, заменяем каждую букву соответствующим ей
элементом из Zm, образуем транспонированные вектор-столбцы и
применяем данное линейное преобразование к каждому блоку а. В
этом контексте используются матрицы инволюций К, являющиеся
своими обратными. Они определяются условиями К2 = I или
К = К~ . (Операции выполняются по модулю т.) Заметим, что
поскольку К2 = I, то det2(K) = 1, откуда следует, что det(K) = ±1.
Пытаясь определить матрицы инволюций, когда размерность п
равна 2 и m = 26, мы видим, что если det(K) = +1, то можно
получить только восемь таких матриц. Ясно, что случай, когда
det(K) = —1 гораздо интереснее (см. также упр. 5 к этому разделу).
В этом случае имеется 736 матриц инволюции, и криптограмма
может быть дешифрована, даже если не известно ни одного слова
минимальной длины из открытого текста. Определяются и пробу-
пробуются все матрицы инволюций. Для больших п дешифровка этим
методом проб и ошибок уже невозможна.
Пример. Рассмотрим сообщение «computer algebra», где буквам
а, 6,..., г открытого текста присвоены номера 0,1,..., 25, и матрицу
Криптография — общие понятия
269
инволюции
2 7
7 24
вектор d полагается нулевым. Шифрованный текст принимает вид
«ymzcr yxuze oirza», причем последний символ открытого текста
остается без изменения. Пара «со», эквивалентная вектору B,14),
отображается на вектор КB,14)т = D + 98,14 + 336) = B4,12)
' (mod 26), который соответствует паре «ут», и т.д.
Заменяя постоянную матрицу К матрицей с переменными эле-
элементами, мы получаем разновидность предложенной выше схемы.
Детали этого подхода могут быть найдены в книге Лидла и Пилца
(Lidl, Pilz, 1984), другие интересные схемы описаны также Криш-
намурти и Рамахандраном (Krishnamurthy, Ramachandran, 1980).
Прежде чем приступить к обсуждению современных крипто-
криптосистем, нам понадобятся некоторые понятия, связанные с надеж-
надежностью таких систем. В оценках надежности любой системы
необходимо предполагать худший случай, т.е. противник может
иметь доступ к другой информации, кроме шифра. Соответственно
мы рассматриваем такие случаи:
Анализ только шифрованного текста. При такой атаке на
систему противник имеет доступ только к перехваченному шиф-
шифрованному тексту.
Анализ известного открытого текста. Теперь цротивниклмеет
несколько пар открытый текст-шифрованный текст, с которыми
он может работать.
Анализ выбранного открытого текста. Противник может пере-
передавать системе неограниченные порции открытого текста и может
наблюдать соответствующий шифрованный текст (это самая серь-
серьезная атака на системы).
Из предыдущего обсуждения видно, что только система од-
одноразового блокнота безоговорочно надежна; это означает, что
независимо от того, какие вычислительные мощности использует
противник, он не может взломать систему. Однако чтобы избежать
недостатков одноразового блокнота, достигается компромисс, а
именно на практике рассматривается не безоговорочно надеж-
надежная система в предположении, что перехватчик может успешно
анализировать шифрованный текст с использованием невероятно
мощного компьютера. Основная идея здесь — ограничить мощ-
мощность противника осуществимыми вычислениями. Для понимания
270 Коды, исправляющие ошибки, и криптография
смысла этого утверждения нам понадобятся некоторые основные
факты теории сложности вычислений (Lewis, Papadimitriou, 1978).
Математические проблемы могут быть первично разделены на
две основные категории: разрешимые и неразрешимые проблемы.
Пример неразрешимой проблемы — проблема «останова» машины
Тьюринга, которая эквивалентна следующей: «Цирюльник бреет
всех тех, кто не бреется сам; бреет ли он себя?». (Ответ: Если
бреет, то не бреет, а если не бреет, то бреет, т.е. у задачи нет
ответа.)
Разрешимые проблемы могут быть далее подразделены на
следующие общие категории:
Доказуемо трудные проблемы, имеющие лишь экспоненциальное,
т.е. вида 0B"), время счета. Пример такой проблемы — арифме-
арифметика Пресбургера вещественных чисел. Здесь мы хотим выяснить,
верна ли формула, в предположении, что мы не можем перемножать
две переменные (а можем только умножать переменную на скаляр)
и что мы имеем только квантор 3.
Р-проблемы, которые имеют полиномиальное, т.е. вида О(пк),
время счета. Пример такой проблемы — задача о цепях Эйлера из
теории графов, когда мы хотим найти путь в графе, проходящий
по каждому отрезку один раз.
N Р-проблемы (недетерминистические полиномиальные), для ко-
которых известны только экспоненциальные алгоритмы, но не дока-
доказано, что алгоритмов с полиномиальным временем не существу-
существует. Очевидно, что множество Р-проблем образует подмножество
множества iVP-проблем, но вопрос, верно ли, что Р = NP —
наибольшая открытая проблема в теоретической информатике.
Характеристическое свойство iVP-проблем таково: тогда как най-
найти решение такой проблемы очень трудно, если оно найдено, то
его очень легко проверить за полиномиальное время; это свойство
будет использоваться ниже.
NР-полные проблемы, которые образуют маленькое подмножест-
подмножество NP-проблем, характеризуемое свойством, что если какая-либо
одна из них решена с помощью эффективного алгоритма, то все
остальные проблемы в классе NP могут быть решены эффектив-
эффективно. Пример — задача о гамильтоновых цепях, также из теории
графов, когда мы хотим найти путь в графе, проходящий через
каждую вершину точно один раз.
Воспользуемся теперь упомянутыми выше идеями современ-
современной криптографии (Feistel, 1973; Lempel, 1979). Нас интересуют
Криптография — общие понятия 271
блочные шифры, действующие на группах битов. Чтобы про-
продемонстрировать, как такие операции выполняются электронным
устройством, рассмотрим случай, когда мы имеем только три
бита (с помощью трех битов мы может представлять всего во-
восемь объектов). Устройство называется ящиком подстановки или
S-ящиком и показано на рис. 4.2.3.
¦-
¦-
¦*-
0-
1 -
2 -
3-
4-
5-
6-
7 —
fcxj
-0
-1
- 2
-3
-4
-5
-6
Преобразование от меньшего Преобразование от большего
основания к большему основания к меньшему
Рис. 4.2.3.
Ящик подстановки (S-ящик) для блочных шифров: со-
соединения между двумя переключателями можно рас-
рассматривать как ящик перестановки (Р-ящик).
На рис. 4.2.3 мы видим, что устройство подстановки состоит из
двух переключателей. Первый преобразует последовательность
трех битов в соответствующее ей значение по основанию восемь,
подавая, таким образом, энергию на любую из восьми выход-
выходных линий. Эти восемь линий могут быть соединены с вторым
переключателем любым из 8! = 40 320 способов. Нам предоставля-
предоставляется решить, какую из этих 40 320 перестановок проводов нужно
осуществить между первым и вторым переключателями. Роль
второго переключателя состоит в том, что он должен преобразо-
преобразовать ввод, представляемый одной цифрой по' основанию восемь,
снова в 3-битовый выходной сигнал.
Предположим теперь, что мы увеличили число входных битов
для S-ящика с трех до пяти, так что мы можем представлять
все буквы английского алфавита, т.е. а соответствует 00000,
b — 00001 и т.д., и наконец, z — 11001. Тогда существует
32! возможных конфигураций соединения двух переключателей.
Однако получающийся шифр все еще остается очень слабым; он
не может противостоять анализу частот символов. Проблема
состоит в том, что, несмотря на большое количество возможных
272 Коды, исправляющие ошибки, и криптография
конфигураций соединения, имеется только 32 возможных входа
и выхода. Таким образом, нам необходимо большое количество
входов и выходов, настолько большое, что для любого противника
практически невозможно разобрать все конфигурации. Например,
если мы имеем ящик с 128 входами и выходами, анализатор
должен иметь дело с 2128 возможными блоками ввода/вывода, т.е.
с настолько большим их числом, что частотный анализ больше
уже не осуществим. Конечно, недостаток этой схемы в том, что
она требует 2128 соединений между переключателями (в Р-ящике),
что технологически невозможно (в настоящее время). Так что
должен быть достигнут компромисс.
Ясно, что одно устройство с многими входами и выходами само
является Р-ящиком; на рис. 4.2.3 он имеет восемь входов и выхо-
выходов. Несмотря на то что имеется 40320 возможных соединений,
истинное найти очень легко, просто подавая на вход устройства
только один бит, равный 1, а остальные равные 0 и наблюдая,
где 1 появляется на выходе. В нашем примере мы можем опреде-
определить соединения после семи проб. Отметим, что S-ящик — это
нелинейное устройство, а Р-ящик — линейное.
Чтобы улучшить эту схему, мы должны ввести так называе-
называемые системы шифров-произведений, комбинирующие Р- и S-ящики.
Впервые системы шифров-произведений были предложены Шен-
Шенноном (Shannon, 1948, 1949), они состоят из слоев Р- и S-ящиков.
Предположим, что Р-ящики имеют по 15 входов и выходов и что
S-ящики имеют их только по 3; тогда за каждым Р-ящиком сле-
следует пять S-ящиков, и операция в системе шифров-произведений
выполняется при условии, что вход состоит из 14 нулей и одной
1, следующим образом: первый ящик, Р, передает единственную 1
некоторому ящику S, который, являясь нелинейным устройством,
может из одной 1 получить до трех 1. Эти единицы подаются
затем на следующий Р-ящик, который перетасовывает их и подает
на следующие S-ящики, и процесс повторяется. В конце выход
содержит сбалансированное число нулей и единиц. Эти идеи
проиллюстрированы на рис. 4.2.4.
Рис. 4.2.4 иллюстрирует принцип, на котором основана IBM-
система LUCIFER. Р-ящики в системе LUCIFER имеют или 64,
или 128 входов и выходов, а S-ящики — только 4. Конечно, цель
разработчика состоит в том, чтобы сделать для противника как
можно более сложной задачу проследить обратный путь и таким
образом восстановить ключи перестановок на S и Р. Система
Криптография — общие понятия 273
—
Р1
S1
S2
S3
S4
S5
—
Р2
Рис. 4.2.4.
Система шифров-произведений, где Р-ящики имеют 15
входов и выходов, а S-ящики имеют их только по 3.
LUCIFER является блочным шифром высокой пробы, однако, в
настоящее время она не считается надежной системой.
В 1977 г. Национальное бюро стандартов выпустило Стандарт
шифрования данных (DES) с намерением создать криптографи-
криптографический стандарт, используемый для надежной передачи всяких
данных, кроме данных, связанных с национальной безопасностью.
DES-алгоритм— это блочный шифр, разработанный фирмой IBM,
на основе S/P-схемы типа описанной выше системы LUCIFER.
DES шифрует 64-битовые блоки открытого текста, используя
64-битовые ключи E6 битов ключа и 8 проверочных битов).
Шифрование осуществляется за 16 отдельных этапов, причем на
каждом этапе используется шифр-произведение под управлени-
управлением 48-битового ключа. То есть на всех этапах используются
различные 48-битовые ключи К{, i = 1, 2,..., 16, получаемые в
соответствии с некоторым алгоритмом программы планирования
из внешнего ключа К.
Хотя с точки зрения теории сложности DES выглядит надеж-
надежным, размер ключа этого стандарта подвергается критике [см.
(Diffie, Hellman, 1977)]. Проблема состоит в том, что 56-битовый
ключ взламывается путем «анализа известного открытого текста»
противником с использованием больших, но реальных, вычисли-
вычислительных ресурсов. Это делается методом грубой силы. Предпо-
Предположим, например, что известное сообщение М зашифровано при
помощи DES с ключом К и что Е(К, М) = С. Чтобы определить К
1S-274 '
274 Коды, исправляющие ошибки, и криптография
криптоаналитик декодирует С с каждым из 256 возможных ключей.
Определив М, криптоаналитик прекращает работу и объявляет
К. Хотя этот исчерпывающий поиск выглядит невозможным, ре-
решительный противник может построить компьютер специального
назначения, который выполняет параллельно миллион проверок
за сравнительно короткое время (< 10 часов). Однако, вероятно,
увеличение размера ключа с 56 до 128 исключит исчерпывающий
поиск из употребления.
Неудовлетворение стандартом DES дало импульс дальнейшим
исследованиям (Dime, Hellman, 1976) и привело к открытию асим-
асимметричных систем кодирования, также известных как криптосис-
криптосистемы открытого ключа. Отметим, что до сих пор все рассмат-
рассматриваемые системы были симметричными в том смысле, что как
отправитель, так и получатель обладали одним и тем же ключом,
который должен быть надежным.
4.2.2. Асимметричные криптосистемы (открытого ключа)
Понятие криптосистем открытого ключа было впервые введено
Лиффи и Хеллманом в 1976 г. Согласно этим схемам, каждый по-
пользователь помещает в открытый каталог процедуру шифрования
Е (чтобы другие подписчики использовали ее для кодирования со-
сообщений, адресованных этому пользователю), но держит в секрете
детали соответствующей процедуры D дешифровки. [Представ-
[Представляют интерес статьи (Ecker, 1982; Hellman, 1979; Simmons, 1979).]
Очевидно, что эти методы основаны на наблюдении, что про-
процедура шифрования и соответствующий ключ не должны быть
такими же, как процедура дешифровки и соответствующий ей
ключ. Чтобы такая система имела право на существование, дол-
должен найтись простой метод, позволяющий получать процедуры
Е и D друг из друга. Желательно, чтобы процедуры Е и D
обладали следующими свойствами:
1. Если М — открытый текст сообщения, то Е и D должны
быть такими, что
D[E(M)] = М,
т.е. дешифровка зашифрованного текста М дает М.
2. Как Е, так и D могут быть легко вычислены.
3. Знание Е не приводит к легкому способу вычисления D.
[Очень неэффективный способ вычисления D состоит в том,
чтобы проверять Е{М) = С для всех возможных сообщений
М.1
Криптография — общие понятия 275
3. Лля каждого сообщения М должно быть E[D(M)] = М. Это
полезно для реализации подписей и будет разъяснено ниже.
Например, если пользователь В хочет послать частное сообще-
сообщение М пользователю А, то пользователь В находит процедуру Е\
в открытом каталоге пользователя А (как в телефонном справоч-
справочнике) и передает С = ЕА(М) воткрытую, зная, что только А может
декодировать это, пользуясь секретной процедурой Da-
Пользователь В может также «подписать» сообщение, посыла-
посылаемое пользователю А, так, чтобы А убедился в его подлинности.
Чтобы подписать сообщение М, пользователь В сначала вычис-
вычисляет зависящую от сообщения подпись
S = DB(M),
затем он находит в каталоге 2?д и передает С = Ea(S). Теперь
только А может извлечь S из С, вычислив Да (С) = S и затем
использовав Ев из каталога, чтобы получить сообщение М, т.е.
Поскольку только пользователь В мог создать текст S, кото-
который декодируется в М процедурой Ев, пользователь А знает,
что сообщение М могло быть послано только пользователем В.
Криптосистема RSA (названная в честь ее создателей Ривеста,
Шамира и Адлемана (Rivest, Shamir, Adleman, 1978), описанная
ниже, представляет очень хорошую технику для подписей.
В качестве применения предложенной схемы рассмотрим слу-
случай, когда подписан договор между странами А и В о запрещении
ядерных испытаний, и для того чтобы контролировать соблюде-
соблюдение договора, достигнуто соглашение об установке на террито-
территории противной стороны сейсмических инструментов для фиксации
любых отклонений и, следовательно, обнаружения подземных ис-
испытаний. В то время как можно защитить сами инструменты (они
могут само разрушаться, если кто-то попытается их вскрыть), не-
невозможно защитить канал, по которому передается информация,
поскольку можно перерезать провода и посылать ложную инфор-
информацию. Кроме того, если сообщения посылаются в шифрованном
виде, то страна-хозяин может предполагать, что кроме сейсмичес-
сейсмических данных передается дополнительная незаконная информация.
Проблемы, стоящие перед двумя странами, могут быть решены
путем использования цифровой системы подписи. Сейсмическая
1.S*
276 Коды, исправляющие ошибки, и криптография
станция страны А содержит компьютер, который преобразует
сообщение М в S = Z>a(JW). Страна В не может заменить S
каким-нибудь 5', поскольку с большой вероятностью сообщение
Ea(S') = M' будет бессмысленным. Однако страна А передает
стране В процедуру Е\, которую В может использовать, чтобы
получить Ea(S) — Ми быть таким образом уверенной, что послано
только законное сообщение.
Предоставив полное описание этих элегантных понятий, Диффи
и Хеллман не описали практической реализации криптосистемы
открытого ключа, указав, однако, что такая реализация мажет
быть выполнена с помощью вычислительно сложной задачи типа
обращения односторонних функций.
Функция / называется односторонней, если она обратима и ее
легко вычислить, но определить f~x, исходя из полного описания
функции /, вычислительными средствами невозможно. Функция /
называется односторонней ловушкой, если /-1 легко вычисляется
при наличии информации о «ловушке» (а именно секретного
ключа дешифровки) и если без этой информации функция /
односторонняя.
Первая криптосистема открытого ключа (Merkle, Hellman, 1978)
базировалась на NP-задаче рюкзака или подмножеств, которая
может быть сформулирована следующим образом: даны число N
и к чисел {п\,П2,...,Пк}; найти подмножество в {ni,n2 пк],
сумма которого равна N, если такое подмножество существует.
Пример. Рассмотрим множество {1292, 2089, 2110, 625, 283, 1599,
3759, 1315, 250, 2460} из 10 {к = 10) чисел и N = 8329. Какие из
этих чисел дают в сумме N1 В общем, и худшем, случае мы
должны сделать 2* проб; в нашем случае методом проб и ошибок
мы находим, что 8329 = 2110 + 3759 + 2460.
Отметим характеристическое свойство NP-пробле; именно, в
то время как трудно найти числа 2110, 2460 и 3759, как только
они найдены, мы можем легко проверить (просто сложив их), что
они действительно решают нашу проблему. Более того, проблема
рюкзака также iVP-полна. (Очевидно, что при стремлении к к
бесконечности в приведенном выше примере невозможно решить
проблему рюкзака методом поиска.)
В общем случае, если мы определим скалярное произведение лю-
любых двух га-мерных векторовп = (щ,П2,. ¦ ¦ ,щ) их = (х\,Х2,... ,ж*)
как п • х = п\Х\ + П2Я2 + • • ¦ + n/cXkt то проблема рюкзака может
Криптография — общие понятия 277
быть представлена в виде N = пх, где ж,- = 1, если i-я компонента
вектора п, п,-, входит в сумму, и ж,- = 0 в противном случае.
Рассмотрим теперь частный случай проблемы рюкзака, где
данные числа образуют супер возрастающую последовательность,
т.е. каждое число п,- больше, чем сумма всех предшествующих
элементов. В этом случае мы имеем простую проблему рюкза-
рюкзака, поскольку за линейное время можно определить, имеется ли
решение, и если оно существует, то простой алгоритм найдет его.
Пример. Рассмотрим множество {5, 10, 20, 42, 90, 205, 500} из
семи чисел (к = 7) и N = 305. Решить эту проблему рюкзака —
все равно, что найти решение х,- = 0 или 1, i = 1,2,..., 7, уравнения
305 =
500ж7.
Это, однако, тривиально, поскольку легко видеть, что x-j = 0 и
Хв = 1. (Поскольку сумма всех предшествующих чисел меньше
205, Яб должен равняться 1, в противном случае мы никогда не
получим сумму 305.) Проблема принимает вид
100 = 5xi
и продолжая аналогичным образом, мы получаем х$ = 1, х± = хз =
0, х-1 — 1 и х\ = 0. Другими словами, нам требуется в общем
случае только к вычитаний и сравнений, и, следовательно, эта
версия проблемы рюкзака может быть решена за полиномиальное
время (линейное).
Таким образом, основная идея использования рюкзака для
криптосистем состоит в преобразовании простого рюкзака в слож-
сложный — рюкзак с ловушкой. Это осуществляется путем выбора
двух достаточно больших целых чисел т и ш, (m, w) = 1 и обра-
образования затем нового рюкзака с ловушкой n = (ni,n2>-- ->пк) из
данного супервозрастающего вектора рюкзака ns = (raj, п'2,. ¦ ¦, п'к)
с помощью формулы п,- = шга? (mod m), i — 1,2,..., к. Модулярная
арифметика перетасовывает числа, и, следовательно, значения
п\ не образуют больше супервозрастающей последовательности.
Вектор рюкзака п публикуется и образует открытый ключ, а
вектор nJ вместе с числами т, w и и;, мультипликативным об-
обратным к w (mod m), держатся в секрете человеком, ожидающим
прихода сообщения.
Подведем итоги:
278 Коды, исправляющие ошибки, и криптография
Получатель знает nJ, m, w и ш,
образующие секретный ключ,
отправитель знает сообщение М,
каждый знает открытый ключ п.
Если М = (xi,х2,-.. ,?»*) — сообщение в двоичном виде, то оно
зашифровывается b величинами с,- = ni • *(i_i)i+i + «2 • ж(«-1)*+2 +
(- щ ¦ Xik, которые и передаются. Перед несанкционированным
перехватчиком стоит задача решения сложной проблемы рюк-
рюкзака с суммами Ci и вектором п. Однако, умножая с,- на и»",
предполагаемый получатель легко вычисляет с* = w~xCi (mod m),
i — 1,2,..., b, и преобразует трудные проблемы рюкзака с суммами
с,- и вектором п в простые рюкзаки с суммами с' и вектором п*.
Неизвестно, насколько надежными являются системы, осно-
основанные на проблеме рюкзака. Надежность этих криптосистем
базируется на анализе времени вычислений худшего случая проб-
проблемы рюкзака. Например, если к — 1000, то понадобится самое
большее 21000 проб для решения проблемы. Однако может также
случиться, что решение будет найдено после всего нескольких
проб, в случае чего система не будет так надежна, как мы думаем.
Первоначально считалось, что повторная шифровка увеличива-
увеличивает надежность рюкзака с ловушкой. Однако в настоящее время
известны атаки на простые и дважды итерированные рюкзаки.
(Чтобы получить дважды итерированный рюкзак, выбираем дру-
другую пару чисел mi, u>i и получаем из п новый вектор; процесс
может быть повторен сколько угодно раз.) Представляет интерес
статья Меркля и Хеллмана (Merkle, Hellman, 1981).
Операции этого типа для криптосистем разъяснены ниже. Од-
Однако следует помнить, что выбранные значения слишком малы,
чтобы обеспечить какую-либо надежность, т.е. они слишком ма-
малы, чтобы убедить, что вычислительная часть недоступна для
несанкционированного перехватчика.
Пример. Выберем следующее соответствие между буквами алфа-
алфавита и двоичными 5-наборами:
а 00000 b 00001 с 00010 d 00011 е 00100 / 00101
g 00110 h 00111 i 01000 j 01001 к 01010 / 01011
m 01100 n 01101 о OHIO p 01111 q 10000 r 10001
s 10010 t 10011 и 10100 v 10101 w 10110 x 10111
у 11000 z 11001 , 11010 . 11011 ! 11100 ? 11101
" 11110 + 11111
Криптография — общие понятия 279
где + обозначает пробел. Мы выберем также секретную инфор-
информацию п' = A,7,13,28,52), m = 111 и w = 55, в случае чего w
(mod 111) = 109; тогда открытый ключ — это п = E5,52,49,97,85),
где щ = n\w (mod m). Теперь сообщение «computer algebra»,
представляемое двоичной последовательностью 00010 01110 01100
01111 10100 10011 00100 10001 00000 01011 00110 00100 00001
10001 00000 (= х\Х2- ..X7s), передается как последовательность
чисел 97, 198, 101, 283, 104, 237, 49, 140, 0, 234, 146, 49, 85,
140, 0, где 97 = 55 • 0 + 52 • 0 + 49 • 0 + 97 ¦ 1 + 85 • 0 и т.д. От-
Отметим, что в общем случае каждое передаваемое число равно
d = rai • Я(,-_1)*+1 + п2 • Я(|-1)*+2 Н Vnk ¦ Xik, т.е. первоначальное
сообщение в двоичном виде разбивается на группы из к битов. Не-
Несанкционированный перехватчик знает с,- и открытый ключ п, но
для больших к он должен перепробовать огромное число случаев,
чтобы расшифровать сообщение B* в худшем случае).
Получатель, обладающий супервозрастающим вектором п*,
должен просто вычислить
с* = aw'1 (mod m)
и решить легкую задачу рюкзака с' = п' • х. Это так, потому что
если выбрать m > J^ra*, то
c'i=[nvxii_1)k+1+n2-xii_1)k+2+---+nk-xik]w-1 (mod m)
¦+w~1nk-Xik (mod m)
+• • ¦+w~lwn'k-Xik (mod m)
="i-*(i-i)*+i+»2-a!(i-i)t+2+- ¦¦+n'k-xik (mod m)
\----+n'k-xik.
Так, продолжая наш пример, мы сначала заметим, что в нашем
случае т > Ylni и получатель вычисляет 15 величин с\, которые
равны 28, 48, 20, 100, 14, 81, 13, 53, 0, 87, 41, 13, 52, 53, 0.
Затем он без труда решает соответствующие проблемы рюкзака
с вектором п* = A,7,13,28, 52) и получает переданное сообщение;
например, 28 соответствует двоичному 5-набору 00010 (= с), 48
соответствует 01110 (= о), 20 соответствует 01100 (= т) и т.д.
Существует вариант описанной криптосистемы, базирующийся
на мультипликативном рюкзаке. Здесь дается число N к к
пзаимно простых чисел {ni,ri2, ...,»»*}, а мы хотим найти, если
оно существует, подмножество множества {ni,ri2,. ¦ ¦ ,пк}, такое,
что произведение этих чисел равно N.
280 Коды, исправляющие ошибки, и криптография
Завершая обсуждение криптосистем рюкзака, следует заме-
заметить, что они не обладают свойством непосредственной цифровой
подписи. Это связано с тем, что не всякое целое число с в области
значений криптограмм может быть представлено в виде суммы
некоторого подмножества чисел п<, т.е. отображение не является
отображением «на». Подробности можно найти в литературе.
Продолжим теперь обсуждение RSA-криптосистем, основанных
на степенной функции, используемой как односторонняя функция.
Успех этого метода зависит от сложности нахождения сомножи-
сомножителей больших целых чисел. Если бы эту проблему удалось
решить за полиномиальное время, RSA-криптосистемы были бы
скомпрометированы.
Для лучшего понимания RSA-криптосистем читателю следует
еще раз просмотреть разд. 2.3; в частности, полезными являются
определение функции ф в разд. 2.3.1 и теорема Эйлера 2.3.14,
утверждающая, что если (а,т) = 1, то а^т) = 1 (mod m). Кроме
того, в разд. 2.3.1 мы видели, что ф{п) = пA — l/pi)(l — 1/рг)... A —
1/Pt) Для любого целого п, где pi — простые числа, входящие в
разложение числа п в произведение степеней простых чисел. Для
нас представляет интерес частный случай n = pq, где р и q — два
различных простых числа. Из последней формулы мы получаем
<j>(jpq) = (р— 1)(д— 1). Покажем, как работает RSA-криптосистема.
Получатель вычисляет следующие величины:
р, q: Выбраны два больших простых числа, которые держатся в
секрете.
п: Произведение pq, которое помещается в открытый каталог.
Е: Случайное целое число, также размещаемое в открытом
каталоге. [Е используется для кодирования сообщений, по-
посылаемых получателю, который должен убедиться, что Е
взаимно просто с числом ф{п) = (р — 1)(? — 1). Это сде-
сделать легко, поскольку получатель знает числа р и q, a gcd
вычисляется быстро.]
D: Целое число, используемое получателем для декодирова-
декодирования. D — мультипликативное обратное числа Е по модулю
(р — 1)(д — 1) — также держится в секрете; т.е. DE ~
1 [mod (р — 1)(з — 1)]. Обратное существует, поскольку
gcd[.E, (р — 1)(д — 1)] = 1. Снова эти вычисления быстрые,
поскольку получатель знает р и q.
Причины, накладывающие технические ограничения на различ-
различные целые числа, будут разъяснены ниже.
Криптография — общие понятия 281
Подведем итоги.
Получатель знает р, q и D, образующие секретный ключ,
отправитель знает сообщение М,
каждый знает открытый ключ п и Е.
Сообщение М, передаваемое получателю, прежде всего преоб-
преобразуется в цифровую форму некоторой стандартной несекретной
процедурой. В частности, можно использовать присвоения а = 00,
Ь = 01, с = 02, d = 03, с = 04, ... , г = 25, . = 26, ,= 27, ? = 28,
;= 29; т.е. каждая буква заменяется двузначным числом. На-
Например, сообщение «computer algebra» должно быть переписано в
виде «0214121520 1904170011 0604011700». Конечно, если сообщение
длинное, то оно разбивается на блоки; длина каждого блока тако-
такова, что его численное значение не превосходит п. Важно, чтобы
каждый блок Mi сообщения находился в области 0 ^ Mi ^ п — 1,
поскольку в противном случае невозможно отличить его от любого
большего целого числа, сравнимого с ним по модулю п. Практи-
Практически модуль п выбирается большим, порядка 200 цифр, так что
могут использоваться блоки размером до 10200.
Отправитель берет каждый блок сообщения А/,-, смотрит на
открытые ключи Е тлптл передает С,- = Mf (mod n), где 0 ^ М\ <
п -1.
Получатель получает С,- и вычисляет (Ct)D (mod n). Заметим,
однако, что по определению мы имеем ED = I [mod ф(п)], откуда
следует, что ED = 1 + кф(п) для некоторого целого к. Таким
образом,
(Q)D = (Mi)
ED
= Mi (mod n),
где последнее равенство получено из теоремы Эйлера 2.3.14.
Таким образом, получатель определил блок первоначального
сообщения Mi.
Операции криптосистемы такого типа описаны ниже. Однако,
как и в случае криптосистемы рюкзака, следует иметь в виду,
что выбранные значения слишком малы, чтобы обеспечить какую-
либо надежность, т.е. они слишком малы, чтобы гарантировать,
что часть вычислений невыполнима для несанкционированного
перехватчика.
282 Коды, исправляющие ошибки, и криптография
Пример. Как упоминалось выше, используя присвоения а = 00,
Ь = 01, с = 02, d = 03, е = 04, ... , г = 25, . = 26, ,= 27, ? = 28,
; = 29, сообщение «computer algebra» мы переписываем в виде
«0214121520 1904170011 0604011700». Выбирая р = 3, q = 11, мы
имеем п = 3 • 11 = 33 и ф(п) = 20; более того, мы выбираем Е = 7, и
в этом случае ?> = 3. Теперь каждый блок сообщения Mi состоит
из двузначного числа, и зашифрованное сообщение получается по
формуле d = (М{O (mod 33). А именно, мы получаем последова-
последовательность чисел 29, 20, 12, 27, 26, 13, 16, 08, 00, И, 30, 16, 01,
08, 00, которая и передается. Лля того чтобы восстановить блок
переданного сообщения (который в нашем случае представляет
просто букву), получатель должен возвести каждое двузначное
число в куб (modulo 33); это мы оставляем читателю в качестве
упражнения. (В разд. 2.3.2 мы рассматривали эффективные ал-
алгоритмы для возведения целых чисел в степень, а также как для
вычисления мультипликативного обратного целого числа по моду
лю другого целого числа; читателю следует еще раз просмотреть
эти алгоритмы.)
Несанкционированный перехватчик сообщения в рассмотренном
примере должен вычислить D, мультипликативное обратное числа
Е по модулю (р—1)(д— 1). Однако, чтобы сделать это, перехватчик
должен найти р и q по n = pq, находящемуся в открытом каталоге.
Таким образом ему требуется алгоритм с полиномиальным вре-
временем для разложения больших целых чисел. Отметим, что р и q
выбираются так, чтобы у них было одинаковое количество цифр,
поэтому у п цифр вдвое больше. Более того, они должны быть
выбраны так, чтобы у р— 1 был достаточно большой сомножитель,
обозначим его /, и у / — 1 также должен быть достаточно большой
сомножитель. Аналогичные ограничения накладываются на q.
Это гарантирует, что бткрытый текст не может быть найден с
помощью итераций шифрования быстрее, чем случайным поис-
поиском; см. (Blakley et al., 1979; Herlestam, 1978; Williams et al., 1979).
(Дешифрование итерациями — это процесс, когда шифрованный
текст С последовательно шифруется снова, до тех пор, пока не
получим вновь С, т.е. полагаем Ci = С и вычисляем C,+i = (С»)В
(mod п), пока не получим C,+i = С. Тогда С,- = М.)
Другой способ, которым перехватчик может пытаться решить
проблему, состоит в нахождении ф(п), поскольку в этом случае D
может быть легко вычислено из соотношения ED = 1 [mod ф(п)].
Однако следующие соображения показывают, что этот подход
не проще, чем попытки разложить я; если известно ф(п), то р
Упражнения 283
и q могут быть найдены следующим образом. Из соотношений
ф(п) = (р - 1)(д - 1) = pq - (р + q) + 1 = п - (р + q) + 1 видно,
что по ф(п) легко находится р + q. Более того, соотношения
(р — qJ = (р + qJ — Apq — (р 4- qJ — An показывают, что, зная п и
p + q, легко получить р — q. Тогда р и q даются формулами
Таким образом, любая попытка найти ф(п) эквивалентна решению
сложной проблемы разложения п на множители.
Предположим, что современные алгоритмы разложения на мно-
множители могут разлагать целые числа до 200 десятичных цифр за
несколько часов на самых быстрых машинах; тогда если п имеет
примерно 2000 десятичных цифр, то можно с уверенностью утвер-
утверждать, что его невозможно разложить на множители за какое-либо
разумное время. Однако, по-видимому, слишком рано говорить,
выдержат ли RSA-криптосистемы проверку временем.
Существует также криптосистема с открытым ключом, основан-
основанная на сложности общей проблемы декодирования для линейных
кодов, исправляющих ошибки; более подробно см. (Lempel, 1979,
pp. 297-298). Более того, существуют распределенные системы
с открытым ключом. Назначение такой системы состоит в том,
чтобы позволить каждой паре пользователей надежно обменяться
собственным ключом на ненадежном канале для использования в
стандартной криптосистеме; см. (Merkle, 1978; Pohlig et al., 1978).
Упражнения
Раздел 4.1
1. Докажите, что в векторном пространстве размерности п
над GFB) расстояние Хэмминга — это метрика, а вес
Хэмминга — норма.
2. Завершите доказательство лемм 4.1.5 и 4.1.9.
3. Покажите, что если кодовое расстояние ^ г +1 ¦+¦ 1, то этот
код может исправлять ^ г ошибок и обнаруживать г +t
ошибок.
284 Коды, исправляющие ошибки, и криптография
4. Постройте код, состоящий из восьми слов длины 7, та-
такой, что расстояние между любыми двумя различными
кодовыми словами не меньше 4.
Раздел 4.1.1
1. Пусть
_ ( 0 1 1 1]
~ [о 1 о 1 oj
— порождающая матрица двоичного E,2)-кода. Опреде-
Определите его проверочную матрицу, кодовые слова и лидеры
смежных классов для этого кода.
2. При помощи G,4)-кода Хэмминга с проверочной матрицей
Н =
10 0 110 1
0 10 10 11
0 0 10 111
закодируйте сообщения @,1,1,0) и A,0,1,0). Кроме то-
того, предполагая, что случилось не более одной ошиб-
ошибки, декодируйте векторы (a) v = A,1,0,0,0,0,0), (b) v =
A,0,0,1,0,1,0) и (с) v = A,1,0,1,0,1,1), которые были
получены по зашумленному каналу.
3. Модификация проверочной матрицы Н из упр. 2 позволяет
нам обнаруживать наличие двух ошибок, а также исправ-
исправлять одну ошибку. А именно, добавляя столбец нулей в
начале (слева) и заполняя верхнюю строку единицами, мы
получаем
Н =
Г1 1 1 1 1 1 1 1
0 10 0 110 1
0 0 10 10 11
L0 0 0 1. 0 1 1 1
Теперь если v — полученный вектор, и — переданный и
е = v — и, то:
a. Если все координаты е равны нулю, то при передаче
не было ошибок.
b. Если е имеет одну ненулевую координату, то встре-
встретилась одна ошибка, и она находится так же, как в
упр. 2.
c. Если е имеет два ненулевых элемента, то случились
две ошибки.
Упражнения 285
В последнем случае vHT = еНт — сумма двух столбцов
матрицы Н, но определить, какие два столбца матрицы Н
дают эту сумму, нельзя. Можно, однако, утверждать, что
vHT не является столбцом матрицы Н, поскольку сумма
двух столбцов матрицы Н всегда имеет верхний элемент
= 0.
Декодируйте векторы
v = (l,0,l, 1,0,1,1,1),
Ў = @,0,0,1,1,1,1,1),
v = (l,0,1,1,1,0,0,1),
v = A,0,1,1,0,1,0,1),
предполагая, что в каждом из них имеются 0, 1 или 2
ошибки.
Существуют ли в (8,4)-коде Хэмминга полученные сло-
слова, для которых получатель может с уверенностью утвер-
утверждать, что они имеют по крайней мере 3 ошибки?
4. Покажите, что Bт -1,2т- 1-т)-код Хэмминга совершенен.
5. Двоичные коды можно обобщить на коды, которые явля-
являются векторными пространствами над любым конечным
полем GF(q). Пусть
G =
1 0 1
0 1 2
— порождающая матрица троичного D,2)-кода С. Найдите
его проверочную матрицу.
Раздел 4.1.2
1. Определите все кодовые слова кода с порождающим поли-
полиномом д(х) = х3 + х + 1 над GFB), если длина сообщений
равна 4. Имеет ли @,1,1,1,0,1,1) обнаруживаемые ошиб-
ошибки?
2. Полином д(х) = х6 + х5 + х4 + х3 +1 является порождающим
полиномом циклического кода над GFB) с блоками длины
15. Найдите проверочный полином и порождающую и
проверочную матрицы этого кода. Сколько ошибок может
исправлять этот код?
3. Проверьте, что двоичный полином хА + х3 + х2 + х + 1
неприводим, и, используя это, постройте матрицу Н для
286 Коды, исправляющие ошибки, и криптография
БЧХ-кода, исправляющего две ошибки, с блоками длины
15, имеющими 7 информационных и 8 проверочных битов.
4. Рассмотрим циклический A5,7)-код с д(х) ¦=. х8 + х7 + х6 +
х4 + 1. Является ли х14 + х5 + х + 1 кодовым словом, и если
нет, то каков его синдром?
5. Покажите, что схема, изображенная на рис. 4.1.5, действи-
действительно производит кодовые слова кода, для которого h(x)
является проверочным полиномом. Постройте такую схе-
схему кодирования для частного случал двоичного G,4)-кода
Хэмминга с д{х) = х3 + х + 1.
6. [Кодирование циклическим (п,]Ь)-кодом, использующим ре-
регистры с п — к разрядами.] Пусть /о (х) — полином степени
п, коэффициенты которого при к наивысших степенях х, а
именно хп~1,хп~2,...,хп~к, являются* информационными
битами, а остальные коэффициенты равны 0. Если д(х) —
полином степени п — к, то по алгоритму деления получаем
/о(я) = g(x)q(x) + r(x), deg[r(x)] <n-k. Тогда fo(x)-r(x) —
полином степени ^ п— 1, делящийся на д(х), который можно
рассматривать как кодовое слово циклического (п, &)-кода,
порожденного полиномом д(х). Спроектируйте схему ко-
кодирования, использующую регистр с п — к разрядами,
основанную на приведенных рассуждениях.
7. Спроектируйте схему для обнаружения ошибок цикличес-
циклического кода.
Раздел 4.2.1
1. Покажите, что отображение а —> an + к (mod m) из 7Lm в
себя инъективно тогда и только тогда, когда gcd(m, n) = 1.
2. Используйте «computer» как ключ в коде Виженера и
зашифруйте слово «cryptography».
3. Получите случайную последовательность 0/1 подбрасы-
подбрасыванием монетки и используйте эту последовательность
в одноразовом блокноте, чтобы зашифровать сообщение
«secret code».
4. Используя данный в тексте квадрат Плайфера, зашифруйте
слово «university».
5. Покажите, что если det(M) = -1 (mod 26), то М — матрица
инволюции тогда и только тогда, когда п»ц + ГП22 = 0
(mod 26). Постройте матрицу инволюции, у которой
2.
Упражнения 287
6. Пусть ^26 — алфавит открытого и шифрованного текстов
в шифре Хилла. Пусть
К =
2 1
-3 -2
— матрица шифрования. Зашифруйте слово «department».
Чему равна обратная к К матрица?
7. В 26-буквенном алфавите, описанном в тексте, восполь-
воспользуйтесь модулярным шифром с п = 7 и к = 19, чтобы
зашифровать сообщение «congratulations».
8. Пользуясь таблицей относительных частот на рис. 4.2.2,
дешифруйте следующее сообщение, про которое известно,
что оно зашифровано с использованием модулярного шифра
при п = 1 (известного также как сдвиг):
ymjkw jvzjs hdrjy mtisj jixqt slhnu mjwyj cyxyt btwp.
9. Предположим, что мы все еще работаем с 26-буквенным
алфавитом, но теперь п ф 1 в модулярном шифре. Более
того, наиболее часто в шифрованном тексте встречается
буква «j», а вторая по частоте — буква «е». Пользуясь
информацией из рис. 4.2.2, что в английском языке «е» и
«t» — две наиболее часто встречающиеся буквы, выведите
формулу для дешифровки сообщения. {Указание. Если р —
символ открытого текста, ас — символ шифрованного
текста, то вам нужно найти п', к' такие, что р = с • п! +
к' (mod m); n' — это мультипликативный обратный к п
(mod т), а к' = —п • к, где п,к — параметры модулярного
шифра.)
10. а. Сколько модулярных шифров имеется в п-буквенном
алфавите в случае п = 1?
b. В общем случае сколько модулярных шифров имеется
в m-буквенном алфавите?
c. Сколько модулярных шифров имеется, когда т —
24,26,29,32?
11. Предположим, что мы используем модулярный шифр (п ф 1)
в m-буквенном алфавите. Буква называется неподвижной,
если а—у а ¦ п + к = a (mod m).
а. Покажите, что если m — простое число, то всегда
существует неподвижная буква.
288 Коды, исправляющие ошибки, и криптография
Упражнения 289
Ь. Покажите, что если в нашем модулярном шифре к = О,
то (для любого т) имеется по крайней мере одна
неподвижная буква, более того, если m четно (и
к = 0), то имеются по крайней мере две неподвижные
буквы.
Раздел 4.2.2
1. Пользуясь криптосистемой рюкзака, зашифруйте слово
«university». Используйте те же присвоения букв и те же
параметры, что и в соответствующем примере в тексте.
2. Завершите пример, данный в тексте, для RSA-криптосис-
темы.
3. В упр. 19 разд. 2.3.3 мы видели, что если мы найдем
основание Ь, такое, что п псевдопросто, но не строго
псевдопросто по основанию Ь, то мы можем быстро найти
нетривиальный сомножитель числа п. Объясните, как
бороться с этим при выборе n = pq в RSA-криптосистеме.
4. Лля каждой из следующих задач рюкзака определите,
является ли последовательность супервозрастающей и
сколько решений она имеет (если имеет вообще).
a. {2,3,6,17,33,67}, JV = 41.
b. {1,3,5,11,23,47}, N = 69.
c. {2,3,6,12,22,49}, N = 61.
5. Покажите, что супервозрастающая последовательность с
наименьшими значениями п,- — это последовательность
п,- = 2'. Покажите затем, что соответствующая задача
рюкзака N = ns ¦ х всегда имеет решение п, а именно
n = N, и что нет никакой другой супервозрастающей
последовательности, для которой соответствующая задача
рюкзака всегда имеет решение.
6. Покажите, что любая последовательность положительных
целых чисел {п,}, в которой n,+i ^ 2п,- для всех *', является
супервозрастающей.
7. (Бросание монеты на большом расстоянии с использова-
использованием двулистной односторонней функции.) Предположим,
что при подготовке международного футбольного матча
представители двух команд решили без проведения личной
встречи «бросить монетку», чтобы определить, в какой
стране провести игру.
Под двулистной односторонней функцией мы подразуме-
подразумеваем алгоритм, который:
a. по данному ключу Е подходящего типа строит фун-
функцию / : Р —> С, такую, что для каждого элемента
с ЕС существует ровно два элемента pi,p2 € Р, таких,
что f(pi) = с и
b. по данному ключу D («обратному» к Е) и с € С можно
найти оба значенияр\,ръ € Р, такие, что /(р,) = с.
Мы предполагаем, что, зная только Е, вычислительно
невозможно найти D (см. ниже упр. 8). Отсюда следует,
что для данного р\ € Р можно найти «сопутствующий»
элемент р% такой, что f(pi) = /(рг) = с> если известны и Е,
kD.
Предположим, что представители rg и r<j бразильс-
бразильской и немецкой национальных футбольных команд хотят
воспользоваться этим набором, чтобы бросить монетку.
Представитель гв генерирует пару ключей Е и D и по-
посылает Е (но не D) представителю го- Разработайте
«приличную» процедуру, т.е. такую, где каждый игрок
имеет шансы 50%-50% «выиграть», и которая адекватно
защищена против мошенничества. (Вам нужно определить,
что значит «выиграть».)
8. В упр. 23 разд. 3.3.1 был представлен алгоритм решения
сравнения х2 — a (mod p) для любого простого числа р
и квадратичного вычета а. (См. также упр. 1 по прог-
программированию разд. 3.3.1.) Предположим, однако, что нет
хорошего алгоритма решения сравнения х2 = a (mod n),
где а — квадратичный вычет по модулю n, a n = pq, про-
произведение двух различных больших простых чисел, если
нам не известно разложение п на множители (если оно
известно, то для нахождения квадратного корня по модулю
п по данным квадратным корням по модулям р и q исполь-
используется греко-китайский алгоритм). Предположим, что не
оба числа р и q сравнимы с по модулю 4, и (как в упр. 7)
пусть Е = п и D = \p,q], и пусть Р = С — множество
пар (х, —х) вычетов по модулю п. Рассмотрите функцию
/ : х —у х2 (mod n) и покажите, что таким образом полу-
получается пример из упр. 7 реализации бросания монеты на
большом расстоянии.
9. (RSA-криптосистема не всегда скрывает сообщения.) Пусть
п — произвольное целое число, являющееся произведением
простых (т.е. п свободно от квадратов). Пусть d и е —
положительные целые числа, такие, что (р — l)\(de - 1) для
IM—274
290 Коды, исправляющие ошибки, и криптография
любого простого р, такого, что р\п. (Например, пусть
de = I (mod ф(п)).) Покажите, что ade = a (mod n) для
любого целого а (имеет ли оно общий сомножитель с п или
нет).
Упражнения по программированию
Раздел 4.1
1. Простой код для передачи числовых данных х^х?...хп,
0 ^ Xi ^ 9 для всех i, получается прибавлением одной
проверочной цифры de, состоящей из числа единиц суммы
2х4
Хп, где X,
¦ _ / Хп>
" ~ I 2х„,
если п нечетно,
если п четно.
Тогда кодовое слово равно x\x-i ¦. .xndt. Этот код мо-
может обнаруживать многие ошибки перестановок, типичные
ошибки, получающиеся при копировании данных вручную.
a. Если полученное слово равно 12347, то определите,
имеет ли место ошибка.
b. Какой код получится для цифр 13579? Чему будет
равно полученное слово, если цифры 7 и 9 будут
переставлены?
c. Используя предложенную схему, напишите програм-
программу, обнаруживающую ошибки в полученных строках,
содержащих до 10 цифр.
Раздел 4.1.1
1. Дана проверочная (г х п)-матрица Н для (п,?)-кода с
исправлением одной ошибки сг^Зип^2г-1. Напишите
процедуры, чтобы:
a. Распечатывать множество двоичных ifc-векторов Н-
кода и кодовое слово для каждого вектора.
b. Декодировать получаемые двоичные п-векторы.
Литература 291
Раздел 4.2.2
1. Напишите процедуру для шифровки/дешифровки текста,
используя криптосистему с открытым ключом типа рюк-
рюкзака.
2. Напишите процедуру для шифровки/дешифровки текста,
используя RSA-криптосистему с открытым ключом.
[Отметим, что в некоторых случаях эта схема может
оставлять сообщения без изменений. Чтобы убедиться в
этом, положим п = 15, Е — 3. Сколько существует х, таких,
что 0^х^п-1их? = х (mod n)? Что можно сказать в
общем случае?]
Литература
Afrati F. Introduction to the theory of information (in Greek). National
Technical University of Athens, Greece, 1985.
Berlekamp E.R. Algebraic coding theory. McGraw-Hill, New York,
1968. [Имеется перевод: Берлекэмп Э. Алгебраическая теория
кодирования, М.: Мир, 1974.]
Blake I.F. Codes and designs. Mathematics Magazine 52, 81-95, 1979.
Blakley G.R., Borosh I. Rivest-Shamir-Adleman public key cryptosystems
do not always conceal messages. Computers and Mathematics with
Applications 5, 169-178, 1979.
Bose R.C., Ray-Chaudhuri D.K. On a class of error correcting binary
group codes. Information and Control 3, 68-79, 279-290, 1960.
Childs L. A concrete introduction to higher algebra. Springer-Verlag,
New York, 1979.
Diffie W., Hellman M.E. New directions in cryptography. IEEE transac-
transactions on Information Theory IT-22, 644-654, 1976.
Diffie W., Hellman M.E. Exhaustive cryptanalysis of the NBS data
encryption standard. Computer 10, 74-84, June 1977.
Ecker A. Ueber die mathematis einiger Chiffrierverfahren. Computing
29, 277-287, 1982.
Feistel H. Cryptography and computer privacy. Scientific American 228,
15-23, May 1973.
292 Коды, исправляющие ошибки, и криптография
Gass F. Solving a Jules Verne cryptogram. Mathematics Magazine 59,
3-11, 1986.
Hamming R.W. Error detecting and error correcting codes. Bell System
Technical Journal 29, 147-150, 1950.
Hellman M.E. The mathematics of public-key cryptography. Scintific
American 241, 130-139, August 1979.
Herlestam T. Critical remarks on some public-key cryptosystems. BIT
18, 493-496, 1978.
Hill L.S. Cryptography in an algebraic alphabet. American Mathematical
Monthly 36, 306-312, 1929.
Hill L.S. Concerning certain linear transformation apparatus of cryptog-
cryptography. American Mathematical Monthly 38, 135-154, 1931.
Hocquenghem A. Codes correcteurs d'erreurs. Chiffres 2, 147-156, 1959.
Kahn D. The Codebreakers. MacMillan, New York, 1967.
Krishnamurthy E.V., Ramachandran V. A cryptographic system based
on finite field transforms. Proceedings of the Indian Academy of
Sciences (Math. Sci.) 89, 75-93, 1980.
Lempel A. Cryptology in transition. ACM Computing Surveys 11,
280-303, 1979.
Levinston N. Coding theory: a counter to G.H. Hardy's conception of
applied mathematics. American Mathematical Monthly 77, 249-258,
1970.
Lewis H.R., Papadimitriou C.H. The efficiency of algorithms. Scientific
American, 96-109, January 1978.
Lidl R., Pilz G. Applied abstract algebra. Springer-Verlag, New York,
1984.
Mackiw G. Applications of abstract algebra. Wiley, New York, 1985.
Mac Williams F.J., Sloane N.J.A. The theory of error-correcting codes,
Part I and II. North-Holland, New York, 1977.
Merkle R.C. Secure communications over insecure channels. Communi-
Communications of the ACM 21, 294-299, April 1978.
Merkle R.C, Hellman M.E. Hiding information and signatures in trapdoor
knapsacks. IEEE Transactions on Information Theory IT-24, 525-
530, 1978.
Merkle R.C., Hellman M.E. On the security of multiple encryption.
Communications of the ACM 24, 465-467, July 1981.
Peterson W.W., Weldon E.J. Error-correcting codes, 2 ed. MIT press,
Cambridge MA, 1972.
Литература 293
Pohlig S.C., Hellman M.E. An improved algorithm for computing loga-
logarithms over GF(p) and its cryptographic significance. IEEE Transac-
Transactions on Information Theory IT-24, 106-110, 1978.
Rivest R.L., Shamir A., Adleman L. A method for obtaining digital
signatures and public key cryptosystems. Communications of the
ACM 21, 120-126, February 1978.
Shannon C.E. A mathematical theory of communication. Bell System
Technical Journal 27, 379-423, 623-656, 1948.
Shannon C.E. Communication theory of secrecy systems. Bell System
Technical Journal 28, 656-715, 1949.
Simmons G.J. Cryptology: The mathematics of secure communication.
Mathematical Intelligencer 1, 233-246, 1979.
Sinkov A. Elementary cryptanalysis — a mathematical approach. The
New Mathematical Library no. 22, Mathematical Association of
America, Washington, D.C., 1968.
Wakerly J. Error detecting codes, self-checking circuits and applications.
North-Holland, New York, 1978.
Williams H.C., Schmid B. Some remarks concerning the M.I.T. public-key
cryptosystem. BIT 19, 525-538, 1979.
Глава 5
Наибольшие общие делители полиномов
над целыми числами и последовательнос-
последовательности полиномиальных остатков
В этой главе мы продолжаем обсуждать вычисление наиболь-
наибольших общих делителей (gcd) полиномов и последовательностей
полиномиальных остатков (PRS). (Читателю следует в этом мес-
месте вновь просмотреть разд. 3.2.1 и 3.2.2.) Однако, как отмечено в
заглавии, мы ограничиваем изучение полиномами над кольцом це-
целых чисел, где ключевой проблемой является ограничение роста
коэффициентов. Мы детально исследуем два классических метода,
существующие в литературе: метод Сильвестра-Габихта псевдо-
псевдоделения субрезультантных PRS (состоящий из двух алгоритмов),
предложенный Сильвестром в 1853 г. и дополненный Габихтом в
1948 г., и метод матричной триангуляризации субрезультантных
PRS, разработанный автором в 1986 г. (Akritas, 1986, 1988) (см.
также историческое замечание 1 и рис. 5.1).
Метод псевдоделения субрезуль-
субрезультантных PRS, предложенный
Сильвестром в 1853 г. и допол-
дополненный Габихтом в 1948 г.
Метод матричной триангуляриза-
триангуляризации субрезультантных PRS, раз-
разработанный автором в 1986 г.
Рис. 5.1.
Обзор исторического развития двух классических ме-
методов субрезультантных PRS. Метод, разработанный
Сильвестром, следует использовать только для пол-
полных PRS, в то время как методом Габихта следует
пользоваться, когда PRS неполна. Метод матричной
триангуляризации может быть использован в обоих
случаях.
Введение и обоснование
295
Как мы убедимся позже, при использовании метода матричной
триангуляризации коэффициенты полиномиальных остатков в оп-
определенных случаях меньше коэффициентов, полученных методом
Сильвестра-Габихта; следовательно, первый метод лучше.
5_Л.
Введение и обоснование
Как мы уже видели, Щх\ не является ни полем, ни евклидовой
областью, однако по теореме 3.2.10 — это область с однозначным
разложением на множители, т.е. каждый необратимый элемент (по
существу) единственным образом может быть представлен в виде
произведения неприводимых полиномов. (Напомним, что каждое
поле является областью с однозначным разложением на множи-
множители, в которой каждый ненулевой элемент является обратимым
(единицей) и нет простых элементов. Целые числа образуют об-
область с однозначным разложением на множители, где обратимыми
являются ±1, а простыми — ±2, ±3, ±5,... .)
В разд. 3.2.3 мы сказали, что полином в кольце <Q[x] называется
примитивным, если его коэффициенты взаимно просты; это опре-
определение, так же как и утверждение теоремы 3.2.12, переносится на
полиномы над произвольной областью с однозначным разложением
на множители. Имеет место также следующая
Теорема 5.1.1. Пусть J — область с однозначным разложением на
множители и р(х) ? J[x] — ненулевой полином. Тогда р(х) может
быть единственным образом представлен в виде произведения
р(х) = с • ^(х), где с ? J, а полином р'(х) примитивен. Это
разложение единственно с точностью до единиц кольца J, т.е. если
р(х) = а -р\(х) = с2 -РгО»), то d = Ьс2 и р'2(х) = Ър'х(х), где Ь —
единица кольца J.
Доказательство. Доказательство очевидным образом следует из
результатов гл. 3. ?
Константа с в теореме 5.1.1 — это наибольший общий делитель
коэффициентов полинома р{х), называемый содержанием полино-
полинома р(х) и обозначаемый cont[p(a;)]; очевидно, что тогда полином
р'{х), называемый примитивной частью полинома р(х) и обознача-
обозначаемый рр[р(г)], является примитивным полиномом в J[x]. [Обычно
296
Наибольшие общие делители полиномов и PRS
рр[р(х)] определяют так, чтобы его старший коэффициент был
положителен.] Поэтому любой ненулевой полином р(х) в J[x] име-
имеет единственное представление вида (с точностью до обратимых
элементов)
р(х) = contra:)] рр[р(х)].
Например, рассмотрим два полинома pi(x) = Ьх + 10 и р2(х) =
-Зх2 + 9вВД. Тогда
cont[pi(x)] = 5, PP[Pi(aO] = х +2,
cont[p2(x)] = -3, РР[Рг(х)] = х2 - 3,
cont[pi(x) • pi(x)] = -15, pp[pi(x) Mx)] = x3 + 2x2 - 3x - 6.
Отметим, что мы воспользовались теоремой 3.2.12.
Обратимся теперь к задаче нахождения наибольшего общего
делителя двух полиномов Р\{х),ръ(х) в кольце Щх], являющемся
не полем, а только областью с однозначным разложением на
множители. Из приведенных выше рассуждений ясно, что мы
можем вывести следующие важные соотношения:
cont{gcd[p!(x),p2(x)]} = gcd{cont[pi(x)],cont[p2(x)]},
PP{gcd[pi(x),p2(x)]} = gcd{pp[pi(z)],pp[p2 (*)]}.
Поэтому задача нахождения наибольшего общего делителя про-
произвольных полиномов сводится к задаче нахождения наибольшего
общего делителя примитивных полиномов.
5.1.1. Общий обзор классических алгоритмов PRS
Рассмотрим два примитивных ненулевых полинома pi(x) и р2(х)
в Щх], у которых deg[pi(x)] = т и degfp^x)] = п, т > п. Посколь-
Поскольку алгоритм PDF (из разд. 3.1) деления полиномов с остатком
тре,бует точной делимости на старший коэффициент полинома
р2(х), 1с[рг(х)], обычно этот процесс невозможно выполнить для
полиномов Pi(x) и р2(х) над целыми числами, не ослабляя тре-
требования делимости. Поэтому мы вводим процесс псевдоделения,
который всегда дает нам псевдочастное и псевдоостаток (ргет),
коэффициенты которых являются целыми числами.
Псевдоделение означает предварительное умножение полинома
Pi(x) на {Ic[p2(x)]}m~n+1, а затем применение алгоритма PDF,
когда известно, что все частные существуют, т.е.
{Ic[p2(*)]}m-n+1pi(*) = !*(*)«(*) + ФО. deg[r(x)] < deg[p2(x)],
где q(x) и r(x) — псевдочастное и псевдоостаток соответственно.
Введение и обоснование 297
Пример. Пользуясь псевдоделением в Щх], разделим Pi(x) =
х4 — 7х + 7 на РгСя) = Зж2 — 7. Лля того чтобы вычислить q(x)
и г(х), предварительно умножим pi(x) на 34~2+1 = 27, а затем,
применяя PDF, получаем q(x) = 9х2 + 21 и г(х) = -189х + 336.
Читатель может убедиться, что PDF не будет работать, если мы
предварительно домножим pi(x) только на 3.
Поэтому, пытаясь вычислить наибольший общий делитель по-
полиномов pi(ar) и Рг(*)| мы должны убедиться, что выполнимы
все деления полиномов, встречающиеся в этом процессе, т.е. мы
должны, используя псевдоделения, сформировать последователь-
последовательность полиномиальных остатков. Таким образом, мы приходим к
следующему обобщенному алгоритму Евклида для полиномов.
GEA-P. Обобщенный алгоритм Евклида для полиномов над це-
целыми числами (Generalized Euclidean Algorithm for Polynomials over
the Integers)
Вход: pi(x),p2(x) — ненулевые полиномы в Щх\\ deg[pi(»)] = ni,
j
g[p2()j 2,
Выход: gcd\pi(x),p2(x)], наибольший общий делитель полиномов
рх(х) и р2(х).
1. [Вычисление gcd содержаний] с := gcd{cont[pi(a:)],cont[p2(a:)]}.
(Здесь мы используем известный алгоритм Евклида для вы-
вычисления наибольшего общего делителя двух целых чисел.)
2. [Вычисление примитивных частей] р\(х) := pi(x)/cont[pi(a:)];
р'2(х) :=p2(x)/cont[p2(a:)].
3. [Построение PRS] Вычислить pli(x),p'2(x),p3{x),.. .,ph{x).
4. [Выход] Если deg\ph(x)] = 0, то вернуть gcd[px(x),p2(x)] := с,
иначе вернуть gcd[pi(x),p2(x)] := с • pp[ph(x)].
Ясно, что время работы этого алгоритма зависит от того,
насколько эффективно мы можем вычислять последовательность
полиномиальных ост&тков р'1(х),р2(х),р3(х),...,р},(х). Заметим,
что если n,- = deg[p,(x)], то в общем случае мы можем утверждать,
что члены этой последовательности удовлетворяют соотношениям
{[p+()]}
deg[Pi+2(x)] < deg[p,+l(x)],
где i — 1,2,...,/» — 1 для некоторого h. [Разумеется, Pi(x) := р'{(х),
t = 1,2, где p'i{x), i = 1,2 определены на шаге 2 алгоритма GEA-
Р]. Если дан метод выбора коэффициентов /?<, то выписанное
298
Наибольшие общие делители полиномов и PRS
соотношение дает алгоритм построения PRS; разумеется, усло-
условие завершения этого семейства алгоритмов — равенство нулю
псевдоостатка.
Ниже мы рассматриваем различные алгоритмы, полученные
для разных значений /?,-. Кроме того, мы кратко опишем метод
матричной триангуляризации субрезультантных PRS, существен-
существенно отличающийся от всех остальных методов тем, что он не
зависит от выбора элементов /?,•; вместо явного псевдоделения
полиномов метод матричной триангуляризации приводит матрицу
к верхней треугольной форме, и все члены PRS получаются из
строк итоговой матрицы.
Евклидов алгоритм PRS. Здесь /?,• = 1 для всех * =
1,2,..., h — 1, т.е. каждый псевдоостаток используется в том виде,
в котором он получен. Это один из худших методов построения
PRS, приводящий к экспоненциальному росту коэффициентов.
Пример. Рассмотрим полиномы р\ (х) ¦= х3 — 7х + 7, р2(х) = Зх2 — 7
в Z[x]. Очевидно, что contfp^x)] = cont[p2(x)] = 1 и pi(x) = pj(x),
г = 1,2. Мы имеем такую последовательность:
№(х) = -42х + 63, q2(x) = -126х - 189,
Р4(х) = -441, q3(x) = 18522а: - 27783,
полученную при выполнении следующих псевдоделений:
CJPl(x) = Рз(«) " C*) + (-42* + 63),
(-42Jр2(х) = Рз(х) ¦ (-126а: - 189) + (-441),
(-441Jр3(х) = р*(х) • A8522а; - 27783) + 0.
Из шага 4 алгоритма GEA-P следует, что gcd\pi(x),p2(x)] = 1.
Отметим также, что в последнем псевдоделении коэффициенты
имеют 8 десятичных цифр, поскольку (—441Jр3(х) = —8168202а: +
12252303.
Последовательность полиномиальных остатков этого примера
называется полной, потому что степень каждого ее члена на
единицу меньше степени предыдущего; два первых члена могут,
конечно, иметь одинаковые степени. В противном случае после-
последовательность называется неполной. Заметим, что не существует
Введение и обоснование 299
способа сказать a priori, будет PRS полной или неполной. См.
также (Barnett, 1970, 1974; Brown et al., 1971; Collins, 1966, 1971).
Экспоненциальный рост коэффициентов членов PRS в приведен-
приведенном примере обусловлен тем, что полиномы этой последователь-
последовательности не являются примитивными, т.е. то, что мы не избавляемся
от их содержания, дает вредный эффект. Эта ситуация исправля-
исправляется ниже.
Алгоритм примитивных PRS. В атом случае Д- =
cont{prem[p,(x),pj+i(x)]}, i = 1,2,... ,А — 1, где «ргет» обозначает
псевдоостаток, т.е. теперь мы удаляем содержание (i + 2)-го члена
PRS до того, как мы используем его. [Напомним, что для данного
р(х) удобно определять рр[р(а:)] так, чтобы старший коэффициент
был положительным.]
Пример. Рассмотрим те же полиномы, что и в предыдущем
примере: рх{х) — х3 — 7а: + 7, рз(х) = Зх2 — 7 в Z[x], где снова
Pi(x) = p((x), j = 1,2. Теперь мы получаем
(
P2(x)=3x2-7,
рз(х) = 2х-3,
Р4(х) = 1,
Л = -21,
Л = -1,
что достигается выполнением следующих псевдоделений:
CJЫа:) = Р2(х) • (Зх) + (-21)Bх - 3),
Из этого примера ясно видно, что этот алгоритм настоль-
настолько хорош, насколько этого можно добиться в отношении роста
коэффициентов членов PRS. Однако на каждом шаге требуется
вычислять один или более наибольших общих делителей коэф-
коэффициентов, а эти вычисления становятся все более сложными по
мере роста коэффициентов. Поэтому нам хотелось бы найти спо-
способ избежать большей части этих вычислений и все-таки резко
уменьшить рост коэффициентов по сравнению с тем, который про-
происходит в евклидовом алгоритме PRS. Это может быть достигнуто
использованием либо метода псевдоделения Сильвестра-Габихта,
либо метода матричной триангуляризации субрезультантных PRS;
300 Наибольшие общие делители полиномов и PRS
детальное описание этих методов может быть найдено в разд. 5.2
и 5.3 соответственно.
Метод Сильвестра—Габихта псевдоделения субрезуль-
тантных PRS. С этим методом связаны два алгоритма: ал-
алгоритм Сильвестра редуцированных (субрезультантных) PRS, если
последовательность полна, и алгоритм Габихта субрезультант-
субрезультантных PRS, если последовательность неполна. (См. историческое
замечание 1.)
В соответствии с этим методом в случае полной PRS мы выби-
выбираем
[алгоритм Сильвестра редуцированных (субрезультантных) PRS],
в то время как в случае неполных PRS мы полагаем
|].ЯГ'-"'+1, « = 2,3,...,Л-1 (Н)
(алгоритм Габихта субрезультантных PRS); здесь
Я2 = {1с[р'2(*)]Р-Пз- где р'2(х) = Рр[р2(х)] и
Н{ = {кЫ»)]}"'"'-"'^11-1-1, i = 3,..., h - 1.
Выбор значений в соотношениях (S) и (Н) разъясняется в
разд. 5.2.1 и 5.2.3 соответственно. В случае полных PRS ме-
метод Габихта сводится к методу Сильвестра. В общем случае
соотношения (S) могут быть записаны в виде
Л = №(*)]}"<-
2,3,...,*-1,
(S')
известном также как алгоритм Сильвестра редуцированных (суб-
(субрезультантных) PRS.
Заметим, что в обоих приведенных выше алгоритмах последо-
последовательности полиномиальных остатков вычислялись с помощью
классического алгоритма деления полиномов PDF; более того,
вместо вычисления содержания (» + 2)-го члена PRS мы просто
делили его коэффициенты на /?,-, зная, что это деление может
быть выполнено без остатка. (Почему это так, мы увидим в
разд. 5.2.1 и 5.2.3). В обоих приведенных алгоритмах мы имели
Введение и обоснование 301
также равенство /?i = 1, означавшее, что полином рз{х) не может
быть-редуцирован, и читателю следует помнить об этом.
Как уже упоминалось, Габихт обобщил результат Сильвестра,
и поэтому его алгоритм PRS может применяться также для пол-
полных PRS (конечно, за счет дополнительной стоимости). Однако
алгоритм Сильвестра PRS [(S) или (S')] работает не очень хорошо,
если наша PRS неполна, т.е. рост может быть экспоненциальным,
хотя и не таким быстрым, как в случае алгоритма Евклида PRS.
(Напомним, что не существует способа a priori узнать, будет PRS
полной или неполной.)
Пример. Снова рассмотрим полиномы pi(x) — х3 — 7х + 7, Р2(я) =
3x2-7BZ[z],rflecont[p!(a:)] = cont[p2(x)] = lnpi(x) - р'{(х), i= 1,2.
Имеем
Pl(x) = x3-7x + 7,
р2(ж) = За:2 - 7,
рз(х) = -42х + 63,
Р4(х) = -49,
g2(*) = -126z-189,
q3(x) = 18522* - 27783.
Поскольку мы имеем дело с полной PRS, оба алгоритма в ме-
методе Сильвестра-Габихта псевдоделения субрезультантных PRS
порождают одну и ту же последовательность, которая получается
такой же, как и для евклидова алгоритма PRS. Однако отметим,
что теперь ра{х) = —49, а не —441, поскольку р*(х) разделили на
9 = {Ic[p2(s)]}2- [Здесь Pi(x) — моном, но это несущественно.]
Метод матричной триангуляризации субрезультант-
субрезультантных PRS. В отличие от приведенных выше алгоритмов PRS
метод матричной триангуляризации не использует явного деле-
деления полиномов. Чтобы посмотреть, как он работает, рассмот-
рассмотрим два полинома в Щх]: pi(x) = спхп + cn^ixn~l + ¦ ¦ ¦ + Со и
р2(х) = dmxm + dm-xxm~l -I 1- d0, с„ ф 0, dm / 0, п^т, для ко-
которых мы хотим вычислить последовательность полиномиальных
остатков. Прежде всего построим матрицу, соответствующую
результанту в форме Сильвестра (определение см. в разд. 5.2.2 и
5.3.3), являющуюся в нашем случае выписанной ниже квадратной
матрицей порядка 2п [р2(ж) преобразуется в полином степени п
302 Наибольшие общие делители полиномов и PRS
добавлением нулевых коэффициентов]:
сп
dn
0
0
0
0
Cn-1
dn-i
dn
...
0
0
со
d0
¦
•
Сп
dn
0
0
со
do
Cn-1
dn-!
0
0
0
0
*
... 0'
... 0
... 0
... 0
... Co
... do-
Затем эту матрицу мы приводим к верхней треугольной форме, ис-
используя преобразования, сохраняющие целочисленность матрицы,
и все члены (полной или неполной) PRS получаются из строк ре-
результирующей матрицы с помощью доказанной автором теоремы
(теорема 5.3.6); время вычислений метода матричной триангуля-
ризации — то же самое, что и у метода Сильвестра-Габихта
псевдоделения.
Заметим, что сильвестрова форма результанта используется
впервые в настоящем столетии; она была погребена в статье
Сильвестра 1853 г. и только однажды была использована Ван
Влеком в 1899 г.
В следующем примере коэффициенты полиномов, получающихся
с помощью метода матричной триангуляризации субрезультант-
ных PRS, меньше коэффициентов, полученных методом псевдоде-
псевдоделения Сильвестра-Габихта.
Пример. Снова рассмотрим полиномы р\{х) = х3 — 7х + 7 и
ръ(х) = Ъх2 — 7. Как мы уже видели, оба алгоритма метода
Сильвестра-Габихта псевдоделения субрезультантных PRS дают
полиномы рз(х) — —42а; + 63, р^(х) = —49, а метод матричной
триангуляризации дает рз(х) — —\Ах + 21, Ра{х) = —49 (детали
реализации обсуждаются в разд. 5.3.3). Соответствующая резуль-
результирующая матрица:
1
0
0
0
0
0
0
3
0
0
0
0
-7
0
9
0
0
0
7
-7
0
-42
0
0
0
0
-21
63
196
0
0 "
0
0
0
-294
-49.
Помеченная звездочкой строка означает, что при выборе ведущего
элемента третья строка переставлена с четвертой. Коэффициенты
Введение и обоснование 303
полинома Рз(х) = —14ат+21 получены из третьей строки до переста-
перестановки, и мы видим, что они в три раза меньше полученных методом
псевдоделения Сильвестра-Габихта. Это происходит потому, что
частное от псевдоделения pi(x) на рг(х) равно За; и не содержит
свободного члена; это означает, что нам не нужно умножать р\{х)
на З2, достаточно на 3. (Однако нет способа узнать об этом до
выполнения деления.)
Следующим рассмотрим пример неполной PRS.
Пример. Если мы рассмотрим полиномы Р\(х) = хь + 5а:4 + Юх3 +
Ьх2 + 5*4-2 ирг(*) = x4+4x3 + &xi+2x+l, то верхняя треугольная
форма матрицы, соответствующей форме Сильвестра результанта,
равна
1 5 10 5 5 2 0
0
0
0
0
0
0
0
0
0
0
0
п
1
0
0
0
0
0
0
0
п
4
1
0
0
0
0
0
0
п
6
4
1
0
0
0
0
0
0
2
3
7
3
0
0
0
0
0
1
4
1
-2
9
0
0
0
0
0
2
3
-1
-6
58
0
0
0
0
0
2
0
-3
50
-266
0
0
0
0
0
0
0
18
-112
-756
0
0
0
0
0
0
0
0
-532
-980.
Помеченная * строка означает, что имеет место перестановка
строк. По теореме 5.3.6 члены неполной PRS, порожденной поли-
полиномами pi(x) и р2(х), суть Зж2 - 2х - 1, -266а; - 112 и -980.
5.1.2. Неклассический пащход: модулярный алгоритм для
наибольшего общего делителя
Как уже говорилось, в следующих разделах мы детально рас-
рассмотрим два метода субрезультантных PRS. Однако непосредст-
непосредственно сейчас мы представим алгоритм, который читатель должен
был предвидеть.
Ключевое для этого алгоритма наблюдение состоит в том, что
вычисление наибольшего общего делителя двух полиномов над
конечным полем не приводит к росту, поскольку коэффициенты не
могут превосходить размер модуля. Поэтому мы можем преоб-
преобразовать задачу нахождения наибольшего общего делителя двух
полиномов над целыми числами к нескольким задачам нахождения
304
Наибольшие общие делители полиномов и PRS
наибольшего общего делителя двух полиномов над некоторыми
конечными полями. По теореме 5.1.2, сформулированной ниже,
ответы к этим задачам затем интерполируются (с использованием
греко-китайского алгоритма), чтобы получить истинный наиболь-
наибольший общий делитель над целыми числами. Это в общих чертах
составляет модулярный gcd-алгоритм. В следующих рассуждениях
р(р\х) обозначает полином р(х) в 1,р[х].
Теорема 5.1.2. Пусть pi(x) и р2(х) — два полинома в Щх],
и рн(х) = gcd[pi(x),p2(x)]. Тогда для всех простых р, та-
таких, что р не делит lc[pi(a:)] • 1с[р2(х)], имеет место неравенство
deg[p?p)(*)] ^ deg[ph(x)], где р^\х) = gcd[pi(z),ft(*)] над Zp[x],
и существует только конечное число простых р, таких, что
?)(*)] > deg[ph(*)]-
Доказательство. Поскольку р не делит lc[pi(x)] • 1с[р2(х)], то, сле-
следовательно, р не делит старший коэффициент полинома рь(х), а
значит, первое утверждение тривиально. Второе утверждение
вытекает из наблюдения, что степень полинома р^'(х) может пре-
превосходить степень полинома Рь(х), только если р делит один из
старших коэффициентов предыдущих членов PRS, а это мажет
случиться только для конечного числа простых чисел. ?
Простые числа р, для которых deg]p?'(x)] > deg\ph(x)], назы-
называются «несчастливыми» и отбрасываются в описанном ниже
алгоритме; более того, с целью эффективности каждое простое
число р выбирается меньшим машинного слова. В модулярном
gcd-алгоритме используются также следующие факты:
A) Если полином pi(x) неприводим над целыми по модулю т,
где т не делит lc[pi(x)], то р\{х) неприводим также над
целыми числами; по существу это теорема 3.2.16.
B) Если полиномы pi(x) и р2(х) взаимно просты над целыми
по модулю т, где т не делит lc[pi(x)] и не делит 1с[р2(х)],
то полиномы pi(x) и р2(х) взаимно просты над целыми
числами; это следует непосредственно из теоремы 5.1.2.
М. Модулярный алгоритм (Modular Algorithm)
Вход: Два примитивных полинома р\(х),р2{х) от одной пере-
переменной с целыми коэффициентами.
Выход: Полином рь(х) = gcd\pi(x),p2(x)] над целыми числами.
Введение и обоснование 305
1. [Инициализация] Положить с := gcd{lc[pi(x)],lc[p2(x)]}. Выб-
Выбрать простое р, которое не делит lc[pi(x)] • 1с[р2(х)], и вы-
вычислить нормированный полином р^\х) = gcd\p1(x),p2(x)] в
GF(p). Положить d := deg\p%\x)]; если d = 0, то вернуть
Ph{') := 1.
2. [Готово?] Положить д(х) := с-р^\х) (mod p).
Если ppb(x)]|pi(x) и рр[д(х)]\р2(х) (где оба деления выполня-
выполняются над целыми числами), то вернуть рн[х) '¦= pp[g(x)].
3. [Новое простое] Выбрать новое простое число р\, которое не
делит lc[pi(x)] 1с[р2(х)], и вычислить нормированный полином
V{hl\x) = gcd[pj(x),p2(x)] в GF(Pl); если deg\p^\x)] = 0, то
вернуть Ph{x) := 1.
4. [Несчастливое простое?] Если deg^'^a;)] > d, то pi —
несчастливое простое число; перейти к шагу 3. Если
deg[pjflj(x)] < d, то р — несчастливое простое число; по-
положить ;4р)(х) := piPl)(x), d := deg[p|f }(x)], p := Pl и перейти к
шагу 2.
5. [Цикл по коэффициентам] В этой точке degtp^(a:)] =
deg[pip)(x)]. Положить p'h(x) := 0. Лля i := 0,1,..., d выпол-
выполнять: применить GCRA2 к коэффициентам при х1 в р^(х) и
Ph (х) по модулю р и pi; пусть q — результат интерполяции;
положить Рд(х) := p'h(x) +qx'. [При использовании симмет-
симметричной системы вычетов коэффициенты полинома р{,(х) по
абсолютной величине ^ [p-pi/2}', заметим также, что поли-
полином р{,(х) нормирован.]
6. [Обновление] Положить р := р ¦ рг, р^\х) := p'h(x) и перейти к
шагу 2.
Анализ времени работы алгоритма М. Из теоремы 5.1.2 следует,
что приведенный выше алгоритм завершается, поскольку число
несчастливых простых чисел конечно. [См. также (Brown, 1971,
th. 1), где дана оценка числа возможных несчастливых простых
чисел.] Браун показал, что преимущество модулярного алгорит-
алгоритма над классическими проявляется только тогда, когда данные
полиномы достаточно большие и достаточно плотные. В раз-
разреженном случае (много отсутствующих членов) преимущество
анализировать трудно.
Пример предложен чуть дальше. Предыдущий алгоритм не
использует априорную оценку числа различных используемых
20—274
306 Наибольшие общие делители полиномов и PRS
простых чисел; интересная версия алгоритма М, использующая
такую оценку, приводится ниже.
Ml. Модулярный алгоритм, версия 1 (Modular Algorithm, Version
1)
Вход: Два примитивных полинома Р\{х),рг{х) от одной пере-
переменной с целыми коэффициентами.
Выход: ПЪлином Рд(х) — gcd[p1(x),p2(i«:)] над целыми числами.
1. [Инициализация] Выбрать простое р, которое не делит
lc[pt(x)] -Ic[p2(x)], и вычислить р%\х) = gci\pi{x),p^{x)\ в
GF(p). Положить d := deg\p%\x)]; если d = О, то вернуть
ph(x) := 1. Положить В := max[|pi(a:)|oo, |Р2(*)|«>].
2. [Новое простое] Выбрать новое простое число р\, которое не
делит lc[pi(x)] • 1с[р2(ж)]. Вычислить р%1\х) = gcd[pi(x),p2(x)]
в GF(pi). Если deg[p^"(a:)] = 0, то вернуть рь(х) := 1.
3. [Несчастливое простое?] Если deg[phPl^(x)] > d, то р\ —
несчастливое простое число; перейти к шагу 2. Если
degbh (г)] < d, то р — несчастливое простое число; по-
положить р^\х) := p^l\x), d := deg\p^\x)], p := pi и перейти к
шагу 2.
4. [Цикл по коэффициентам] В этой точке deg[phpi'(x)] =
deg[php^(x)]. Положить p'h{x) := 0. Для i := 0, l,...,d выпол-
выполнять: применить GCRA2 к коэффициентам при х* в Рд (х) и
Рд'(х) по модулю р и р\ соответственно; пусть q — результат
интерполяции, положить p'h{x) := p'h(x) + qx'. (Использовать
симметричную систему вычетов.)
5. [Готово?] Положить рь(х) := рл(ж), р := р- рь Если р > 2В, то
вернуть рн(х) :¦= рр[рл(ж)], иначе перейти на шаг 2.
В действительности значение В, используемое в приведенном
выше алгоритме, — это оценка максимума абсолютной величи-
величины коэффициентов полинома Рь{х). Такая оценка может быть
получена из теоремы А.О. Гельфонда (Трансцендентные и ал-
алгебраические число М.: Гостехиздат, 1952), но в практических
вычислениях вместо этого используется максимум абсолютных
величин коэффициентов полиномов Р\[х) и р^х). Выбирает-
Выбирается значение 2В, так как оно работает в большинстве случаев
(Brown, 1971). Ясно, что существуют исключения; например, если
р(х) = Xs + 2а:7 + Зх6 + 4х5 + 5а:4 + 4а:3 + За:2 + 2х +1 и q{x) = х - 1, то
Метод Сильвестра-Габихта 307
р(х)д(х) = х9 + х8 + х7 + х6 + х5 - х4 — х3 — х2 — х — 1, и мы имеем дело
со случаем, когда коэффициенты делителя больше коэффициентов
делимого.
Заметим, что обе версии модулярного gcd-алгоритма легко
обобщить для обработки полиномов от многих переменных. Можно
также воспользоваться алгоритмами подъема, описанными в гл. 6,
чтобы найти наибольший общий делитель двух полиномов над 7L.
Это — так называемый расширенный gcd-алгоритм Цассенхаузена
[Extended Zassenhaus GCD (EZGCD)], который не описывается
здесь, но подробности можно найти в литературе (Miola et al.,
1974; Moses et al., 1973; Yun, 1974).
Пример. Найдем наибольший общий делитель полиномов Pi(x) =
9х5 + бх4 + Зх3 + Зх2 + 2х + 1 и р2(х) = Зх4 + 5х3 + 6х2 + Зх + 1.
Используя М, заметим сначала, что с = 3, а затем для р = 5
получимр(!5)(х) = 4х5+*4-|-Зх3+За:2+2х+1, р25)(х) = Зж4+х2+Зя+1
ирд5)(:с) = gcd[p!(x),p2(x)] = 2х2+Зх+4 = х2+4х+2 в GF(b). Затем,
на шаге 2 вычисляем полином д(х) = Зх2 + 2х + 1, который Делит
как pi(x), так и рг(х). Поэтому рн(х) = Зх2 + 2х + 1.
Используя Ml, сначала вычислим р? (х) = gcd[pi(x),p2(x)] =
2х2 + Зх -(- 4 в GFE), а затем p(h7)(x) = gcd\p1(x),p2(x)] = 5x2 + х + 4
в GFG). Поскольку 5 • 7 = 35 > 2В = 18, этих двух простых чисел
достаточно. С помощью греко-китайской теоремы об остатках мы
из полиномов р\ (х) и рд '(х) получаем полином д(х) = 12л:2 + 8х +4
и Ра(х) = рр[^(х)] s= Зх2 + 2х + 1.
Метод Сильвестра—Габихта псевдоделения субрезультантных
PRS
В этом разделе мы детально изучаем метод Сильвестра-
Габихта псевдоделения субрезультантных PRS. По существу мы
собираемся показать, почему значения /?,-, указанные в разд. 5.1.1
в связи с алгоритмами Сильвестра и Габихта PRS, делят р,-+2(х),
(i + 2)-й член PRS. В этом месте читателя просят вновь просмот-
просмотреть свойства определителей в приложении в конце этой книги.
20*
308
Наибольшие общие делители полиномов и PRS
5.2.1. Алгоритм Сильвестра редуцированных (субрезультан-
тных) PRS
В своей статье 1853 г. Сильвестр разработал мегод вычисления
полной последовательности полиномиальных остатков над целы-
целыми числами; более того, он сохранял коэффициенты членов PRS
насколько возможно малыми, удаляя их распределенные сомножи-
сомножители (используя терминологию Сильвестра), а не их содержание
(операция, включающая вычисление наибольшего общего делите-
делителя целых чисел). Следует также отметить, что Сильвестр интере-
интересовался вычислением последовательностей Штурма (рассматри-
(рассматриваемых в гл. 7), где вычисляется противоположный для каждого
полиномиального остатка в PRS, т.е. Pi(x) = pi+i(x)qi(x) — pi+2(x).
Поэтому определители в его доказательстве в точности совпа-
совпадают с определителями, используемыми ниже, за исключением
того, что в них переставлены вторая и третьи строки (Akritas,
1987). (Результанты и субрезультанты определяются в следующем
разделе.)
Теорема 5.2.1 (Сильвестр 1853). Пусть pi{x),p2(x),Pz{x),
.. .,ph(x) — полная последовательность полиномиальных остатков,
Pi{x)<EZ[x] дляi=l,2,...,h. Тогда {\с\р{(х)]}2\р{+2(х), 1 < i < Л-2,
т.е. квадрат старшего коэффициента полинома р»(х) является де-
делителем полинома ()
Доказательство. Пусть а,Ь,с,d,... —коэффициенты какого-либо
делимого p(_i(a:), a а,Р,у,6,... —делителя pi (х), где а = lc[pj_i(a:)]
и а = \c\pi(x)]. Тогда, как легко видеть, коэффициенты остатка
Pi+i(x), образующие второй делитель, равны
4r det
det
ш
а
а
0
а
а
0
6
Р
а
Ь
Р
а
d'
6
7.
е
?
[Читателю следует проверить, что эти определители — ко
циенты остатка pj+i(a;).] Таким же образом, полагая
m := det
Метод Силъвестра-Габихта
309
видим, что каждый коэффициент второго остатка будет иметь
форму блочного определителя [заметим, что, присваивая значение
переменной т, нам не нужно делить определитель на а2 (почему?)]:
—г det
а
Р
а
а
0
6
Р
а
0
с
7
Р
а
а
0
а
а
0
6
Р
а
Ь
Р
а
d
6
7
с
7
Р
а
а
0
а
а
0
Ь
Р
а
Ь
Р
а
е
е
6
d
6
7.
где выписанное выше выражение — это к^+гОО]- C х 3-элементы
в выражении для выписанного выше определителя сами являются
определителями.) Опуская общий множитель A/т2) и разлагая по
первому столбцу, мы видим, что выписанный выше определитель
равен
Снова разлагая, мы видим, что для некоторых выражений А, В
первый член имеет вид
а2А + а{аРу ¦ аРу - ар2 • afiS),
в то время как второй член имеет вид (разлагаем и упрощаем
выражение в первых скобках)
а2В - а(у2 - р6)а2р2.
Следовательно, после сокращения весь определитель имеет вид
а2(А+В), и мы видим, что а2 будет входить в качестве сомножителя
в этот и остальные коэффициенты полинома р»+2(я)- П
310 Наибольшие общие делители полиномов и PRS
Заметим, что в теореме 5.2.1 мы не можем редуцировать коэф-
коэффициенты полинома Рз(я); предложение применяется к коэффици-
коэффициентам полиномов р^(х),р5(х) и т.д.
Сильвестр указывает, что «тот же самый явный метод может
применяться, чтобы показать, что если степень первого делителя
была бы на е единиц, а не на одну, меньше степени первого
делимого, то ае+1 содержалось бы в каждом члене второго вычета;
однако сложность доказательства этим методом возрастает с
возрастанием е» (Sylvester, 1853, р. 419).
Пример. Рассмотрим снова полиномы pi(ar) = х3 — 7х + 7 и
Pi{x) = Зж2 — 7 в Щх]. Как уже говорилось, последовательность
полиномиальных остатков, полученная с помощью евклидова алго-
алгоритма PRS, — это pi(х) = х3-7х+7,р2(х) = Заг2-7,р3(а:) = -42ж+63,
РА(х) = -441.
Пользуясь теоремой 5.2.1, вычислим коэффициенты полинома
Рз(х) как определители, полученные из матрицы
10-77
3 0-70
0 3 0-7
Эти определители суть
det
1 0 -7
3 0
0 3
-7
0
[10 7
-42 и det 3 0 0
0 3-7
= 63.
(В действительности они являются субрезультантами и опреде-
определяются в следующем разделе.) Заметим, что в этом месте мы
не можем выполнить какое-либо деление, поскольку рз(х) — это
первый остаток.
Подобным образом единственный коэффициент полинома Ра{х)
получается из определителя
(l/32)det
3
-42
0
0
63
-42
-7
0
63
= A/9) • (-441) = -49.
Легко видеть, что в этом случае мы можем разделить без ос-
остатка 441 на З2, где 3 = 1с[р2(а:)], и получить гораздо меньший
коэффициент.
Метод Сильвестр а-Габихта 311
Используя соотношение (S') из разд. 5.1.1, получаем следующий
алгоритм:
SRSPRS. Редуцированные (субрезультантные) PRS Сильвестра
(Sylvester's reduced (subresultant) PRS)
Вход: Лва ненулевых полинома P\{x),pi{x) в Щх],
гц = deg\pi(x)] ^ n2 = deg[p2(x)].
Выход: Редуцированная (субрезультантная) PRS полиномов
pi(x) ир2(а:).
1. [Инициализация] t := 1; с := 1; по := f»i.
2. [Готово?] Если pi+i(x) = 0, то выход.
3. [Вычисление псевдоостатка] Вывести р,+2(а:) := ргет[р,(х),
Pi+i(x)]/cni-l~ni+1; положить i := г+ 1, с := lc[p,(x)] n,+i :=
deg[p,+i (x)] и перейти к шагу 2.
Анализ времени работы алгоритма SRSPRS. Время работы
этого алгоритма равно
<SRSPRS[P1(*)>P2(*)] = 0{n4X,2[|p(*)|oo]},
где |р(х)|оо = max(|pi(«c)|oo)|p2(aj)|oo)- Доказательство этого факта
использует результанты (обсуждаемые в следующем разделе) и
опускается, поскольку оно совпадает с доказательством анализа
времени вычислений алгоритма HSPRS, приведенном в разд. 5.2.3.
(Кстати, оно совпадает со временем вычислений классического
PRS-алгоритма.)
Теорема Сильвестра указывает отношение делимости, сущес-
существующее между некоторыми членами полных PRS, в качестве
результата которого мы можем легко получить существующие
отношения делимости. Однако для того, чтобы увидеть, поче-
почему работает алгоритм Габихта субрезультантных PRS (который,
напоминаем, используется в неполных случаях), нам понадобится
более общее отношение делимости, т.е. нам требуется отношение
делимости между любыми членами PRS. На это новое отношение
делимости намекнул Сильвестр, но впервые оно было представле-
представлено Габихтомв 1948 г. Прежде, однако, нам потребуются некоторые
дополнительные понятия, обсуждаемые в следующем разделе.
312 Наибольшие общие делители полиномов и PRS
5.2.2. Результант двух полиномов
Результанты и субрезультанты существенны для глубокого
понимания PRS-алгоритм Габихта, и в этом разделе мы изучаем
их свойства. (Сильвестр неявно использовал их.) Великолепной
работой является (Netto, 1896); см. также (Bocher, 1907) и (Lipson,
1981).
Рассмотрим два полинома в Z[x]:
Pi(x) = cn*n+cn_1*n-1 + --- + c0) с„/0, п>0,
р2(х) = dmxm + d^z-1 + • ¦ • + do, dm ф 0, m > 0,
и найдем условия, при выполнении которых они имеют общий
делитель или (по крайней мере один) общий корень.
Обозначим корни полинома р\(х) = 0 через ai,a2,.. .,«„, а
полинома Рг(я) = 0 — через /?i, А> • ¦ -i&m- Тогда для того, чтобы
полиномы pi(x) и Рг(х) имели общий корень, некоторое а,- должно
быть равно некоторому fa и должно обращаться в нуль следующее
произведение, обозначаемое через res[pi(x),p2(a:)]:
res[p1(x),p2(x)] = «(а* - A)(«i - А) ¦ • .(«1 - Рт)
(а2 - А)(«2 - А) • • • ( - А»)
(
это и есть то условие, которое мы ищем. [Читателю следует отме-
отметить, что между res[pi(x),p2(x)] и переменной res, использованной
в разд. 2.4 и 3.1.4, нет никакой связи; эта переменная обозначена
сокращением слова result (результат).] Группируя п строк и т
столбцов и принимая во внимание, что
Рх(х) = (-1)"с„(аг - х)(а2 - х)... (а„ - х),
Р2(х) = dm{x - /?0(х - /?2)... (х - /Зт),
имеем
res[pi(x),p2(x)] = Cp2(ai)p2(a2) •• Р2(а„)
= (-l)mnOi(A)Pi(A) • • -Pi(An)- (R)
Таким образом, мы видим, что множитель cJJ'dJJ, необходим, что-
чтобы сделать res[pi(x),p2(x)] целой функцией коэффициентов c,-,dj.
Очевидно, что
res[p1(x),p2(x)] = (-I)mnres[p2(x),p1(x)],
и это выражение мы называем результантом полиномов Pi(x) и
р2(х). Поэтому нами доказана следующая
Метод Сплъвестра-Габихта 313
Теорема 5.2.2. Обращение в нуль результанта res[pi(x),p2(x)] —
это необходимое и достаточное условие для того, чтобы уравнения
рх(х) = 0 и р2(х) = 0 имели общий корень.
Некоторые свойства результантов. Если р2(х) =
Рз(х)р4(х), где deg[p3(z)] = mj и deg[p4(x)] = m2, то из соотно-
соотношения (R) вытекает
res[p1(x),p3(x)p4(x)] = C'+m»[p3(ai)p4(ai)] • • • [(рз(«пЫа„)]
= Cfti(«i) • • -Рз(«») • C3P4(«i) • • -Р4К).
То есть
resk>i(x),p3(x)p4(x)] = гез[р1(х),рз(х)] • res[p1(x),p4(a:)].
Более того, если с — константа, то из (R) получаем
res[pi(x),p2(x) + cpi(x)] = c^[p2(aj) + cpi(ai)]... [р2(а„)
а поскольку pi(a,) = 0, t = 1,2,... ,n, то
res[p1(x),p2(x) + cpi(x)] = res[p1(x),p2(x)]. (R2)
Наконец, если рг(х) = xm, то все значения Д- равны нулю, и мы
получаем специальный вид
ves\pi(x),xm] = (-1)тп[р1@)Г = (-1)твсо". (R3)
Представление результанта. Мы не будем вычислять
результанты по формуле (R), поскольку тогда нам потребовалось
бы прежде вычислить корни полинома pi(x) илирг(ж). Вместо этого
мы представим результант как определитель, который нетрудно
посчитать. Чтобы сделать это, рассмотрим следующую систему
(т + п) уравнений [мы все еще имеем дело с данными выше двумя
полиномами Pi(x) и рг(а:) степеней п и га соответственно]:
[с0-
+ схх
с„х
= 0,
= 0,
+ c1xm+ ...
+ dmxm
... +dmxm+1
+ cnxm+n-1 =0,
= 0,
= 0,
dmx
m+n—1
= 0.
314 Наибольшие общие делители полиномов и PRS
Мы рассматриваем это как систему линейных уравнений от (т+п)
неизвестных 1,х,х2 хт+п~1. Первые m уравнений в действи-
действительности являются тождествами, получаемыми из определения
Pi{x); последние п выполняются только для х = /?i,/?2i.--i/?m- Пе-
Переставляя столбцы и строки, мы получаем уравнение степени m
от v = pi(/?i)iPl(/?2)i • •. ,Pi(Pm), которое может быть представлено
определителем
det
С с„_1 ...
О с„ с„_1
с0 -v О
со — v
0
0
0 0
dm rfm_x
0 dm
L 0 0
Cn
d0 0
... d0
dm dm_i
С„_1 ...C0-t>
0 ... 0
0 ... 0
... d0
= 0,
>(m строк)
(n строк)
и корни этого уравнения определяют величины Pi(/?i),Pi(/?2), • • • i
Pi(/?m). Воспользовавшись тем, что если мы имеем уравнение
amv
• + а0 = 0,
то произведение всех его корней равно (-l)ma0/am; мы видим, что
если мы разделим наше уравнение степени т от v на коэффициент
при vm, то свободный член будет равен (-l)mpi(/?i)pi(/?2) • • -Pi (An)-
Поскольку в нашем случае коэффициент при (—v)m равен (—l)mndj},
(проверьте!), получаем следующее соотношение (заметим, что мы
положили v — 0, и следовательно, определитель — это свободный
член уравнения степени т):
det
сп
0
Сп-1
Cn-l
dm-l
d0
Cn
0
d0
0
CO
Cn-l
0
0
L 0 0 ... dn
... Co
... 0
... 0
... d0.
строк)
\{n строк)
¦ ¦¦P2(an)
= resB[pi(a:),P2(x)].
Метод Сильвестра-Габихта 315
Таким образом мы выразили результант в виде определителя,
который может быть легко вычислен; далее мы будем обозначать
эту форму результанта через resB[pi(x),p2(a:)] в честь итальяно-
французского математика девятнадцатого века Ди Брюно, кото-
который широко ею пользовался.
Субрезультанты — получение коэффициентов членов
PRS. Введем определение субрезультантов, играющих важную
роль в наших исследованиях PRS-алгоритмов. Рассмотрим полную
последовательность полиномиальных остатков Pi(x),Р2(х),рз(х),
...,ph(x), где
С0,
Р2(Х) = dn-ix"'1 + dn_2*"-2 + • • ¦ + dQ, dn-1 Ф 0.
(ВТ)
Как упоминалось в доказательстве теоремы 5.2.1, коэффициенты
полинома рз(х) степени п — 2 задаются определителями
det
с„
dn-i
0
Cn-l
dn-2
dn-i
Cn-2
dn-3
dn-2\
\.
det
с„
dn-i
о
Cn-l
dn-2
dn_i
Cn-3
dn-4
dn-з
и т.д.,
где первый определитель — это старший коэффициент полино-
полинома рз(х), второй определитель — это коэффициент при хп~3 и
т.д. По причинам, которые объясняются ниже, эти определители
называются субрезильтантами. [Мы знаем, что для последова-
последовательных членов PRS, Pi(x), i > 3, каждый определитель делится
на {1с[р,-_2(ж)]}2.] Сравнивая эти определители с результантом
полиномов pi(a:) и Р2(х), представленным в виде определителя
порядка 2п — 1, мы легко видим, что коэффициенты полинома
Рз(х) получаются следующим образом. Поскольку степень поли-
полинома рз(х) равна п — 2, удалим из матрицы Мв, соответствующей
rese[pi(x),p2(:e)], последние п —2 (из п — 1) строк значений с, послед-
последние п — 2 (из п) строк значений d и последние п — 2 столбца. Таким
образом, у нас осталась Зх(п+ 1)-матрица М'в, т.е. М'в имеет 3
строки и п + 1 столбцов M'B(j), j — 0,1,2,..., п. Последовательно
вычисляем п — 1 коэффициентов полинома рз(х) из определителя
(субрезультанта) порядка 3, первые два столбца которого всег-
всегда совпадают с Мв@),МвA), а третий последовательно равен
Mg(j), j = 2,3,.. .,п; при j — 2 получаем старший коэффициент
полинома рз(х)- [Это в точности то, что Сильвестр делал в теореме
5.2.1, чтобы вычислить коэффициенты только полинома рз(я)]
316 Наибольшие общие делитель полиномов и PRS
Этот процесс можно обобщить для вычисления коэффициентов
любого члена PRS, Pi(x), степени п - i + 1. Мы просто долж-
должны удалить из матрицы Мв, соответствующей resB[pi(x),p2(x)],
последние n — i+l строк значений с, последние п — i + 1 строк
значений d и последние n—i+l столбцов, оставив Bi—3)x (n+i—2)-
матрицу М'в [М'в имеет (i - 2) строк элементов с и (i — 1) строк
элементов d]. Тогда п — х + 2 коэффициентов полинома р,(х) по-
последовательно вычисляются из определителя (субрезультанта)
порядка B« — 3), первые 2(* — 2) столбцов которого всегда равны
М'в@), М'вA),..., MB[2(t - 2) - 1], а последний последовательно
равен MB(j), з = 2(* - 2), B* - 3),..., n + i - 3. Этот общий способ
вычисления коэффициентов любого члена полной PRS был открыт
в 1859 г. Ди Врюно [см. (Muir, 1920, р. 327-328)], т.е. Ди Брюно
обнаружил, что для полиномов (ВТ) р,(х), i-й член PRS, равен
А,
-n-i+l-m.
det
С„
0
0
Cn-1
Cn
0
dn-2
О
Сп-2
Сп-1
Сп
dn-3
dn-2
dn-i
cn-2(i-2)+l
Cn-2(«-2)+2
Cn-i+2
Cn_2(i_2)-m
Cn-«+l-m
»—»+l—m
где A,- — «распределенный» множитель, а с_* = 0 для любого
значения к.
Если последовательность полиномиальных остатков неполная
или если разность степеней полиномов pi(x) и рг(ж) больше еди-
единицы, то мы можем в основном пользоваться описанным выше
подходом для вычисления коэффициентов любого члена PRS; од-
однако, как уже упоминалось, распределенный множитель не так-то
легко определить, и это будет обсуждаться ниже. Кроме того,
если при вычислениях степень полинома Pi(x) окажется меньше,
чем п - i + 1, например n-i + 1-fc, имы вычисляем коэффици-
коэффициенты полинома Pi(x), удаляя из матрицы Мв, соответствующей
resB[pi(x),p2(x)], последние п — i + 1 — к строк элементов с и d и
последние n — i+l —к столбцов, то мы получаем полином, пропор-
пропорциональный полиному, который мы получили бы, удаляя последние
Метод Сильвестра-Габихта 317
n — i+l строк элементов с и d и последние n — i + l столбцов.
Однако, удаляя из resB[pi(a:).P2(a:)] последовательно последние
п — i п — i + 1 — (к — 1) строк элементов с и d и последние
n — i,...,n — i+l — (k—l) столбцов, мы получаем нулевые полиномы.
Эти факты доказаны в разд. 5.2.3.
В нашем обсуждении теоремы 5.2.1 мы уже упоминали, что
Сильвестр интересовался вычислением противоположных к поли-
полиномиальным остаткам (последовательностью Штурма). Так, для
полиномов (ВТ) он вычислял коэффициенты полинома Рз(х) как
det
Cn
0
n-1
Cn-1
dn-i
dn-2
Cn-2
dn-2
dn-3
, det
Cn
0
Cn-1
dn-i
dn-2
Cfi-3
dn-3
<In-4
и т.д.
Чтобы иметь возможность получать противоположные к коэф-
коэффициентам любого члена PRS [для полиномов (ВТ)] способом,
подобным описанному выше, мы должны пользоваться другой
формой результанта, а именно
resT[pi(a:),P2(a:)] = det
0
0
0
Сп-1
Сп
0
0
0
Co
Cn-1
01
0
со
do
0 dn_i ... d0 0 ... 0
\-dn-i ... d0 0 0 ... OJ
Индекс Т стоит в честь итальянского математика прошлого
века Н. Труди, давшего первое систематическое изложение бигра-
диентов [см. (Muir, 1902, р. 329)]; термином биградчент обозначаем
форму результанта, обозначенную нами res-r[pi(x),p2(x)].
Теперь, чтобы вычислить коэффициенты любого члена р,(х)
полной PRS, где deg[p,(x)] = п - i + 1, мы удаляем из матрицы Мт,
соответствующей resT[p1(x),p2(x)], верхние п-i+l строк элементов
с, последние n—i + l строк элементов d и первые n — i + l столбцов.
При этом остается Bi - 3) х (п + i - 2)-матрица М'Т, с которой мы
работаем так же, как в случае resB[pi(x),p2(x)].
Отметим, что
resB[pi(*),P2(z)] = (-l)n("-1)/2resT[p1(x)Ip2(x)].
Представим теперь теорему Труди в ее первоначальном виде и
обозначениях.
318 Наибольшие общие делители полиномов и PRS
Теорема 5.2.3 (Trudi, 1862). Коэффициенты г-го остатка R,
возникающие в ходе выполнения процесса деления Штурма для
полиномов
_т
аох
аг
(т.е. мы вычисляем противоположные для остатков, полученных
евклидовым алгоритмом PRS), равны последовательным опреде-
определителям массива (биградиента)
(а0
,О1,...,ат)г]]
оМ,...,Ьп) \\'
разделенным на произведение квадратов первых коэффициентов
всех предыдущих остатков, на 6™~n+1 и на знаковый множитель
Доказательство. Доказательство можно найти в книге (Household-
(Householder, 1970). ?
Пример. Лля полиномов р\{х) = х3 — 7х + 7 и рг(я) = За:2 — 7 мы
имеем две следующие матрицы для соответствующих результан-
результантов:
Мв =
¦10-7 7 0
0 10-77
3 0-70 0
0 3 0-70
L0 0 3 0-7
МТ =
Г1 0 -7 7 0
0 10-77
0 0 3 0-7
0 3 0-70
L3 0 -7 0 0
Коэффициенты полинома рз(х) степени 1 получаются следую-
следующим образом.
Используя
det
1 0 -7
3 0-7
0 3 0
= -42, det
1 0 -7
3 0 0
0 3-7
= 63
и, таким образом, Рз(х) = —42а: + 63.
Используя
= 42, det
Г1 0 -7
det 0 3 0
3 0-7
= -63
Метод Сильвестра-Габихта 319
и рз(х) = -42х + 63.
Что касается полинома ра(х), являющегося константой, то мы
просто вычисляем результант и получаем resa[pi(a:),ръ{х)] = —49 и
icst\Pi(x),Рг(х)] = 49. Читатель может сравнить эти результаты с
результатами, полученными в примере разд. 5.2.1. (Заметим, что
в этом случае, чтобы получить значение ±49, определитель не
нужно ни на что делить.)
Дополнительное свойство результантов. Мы пре-
представим сейчас теорему, утверждающую, что результант двух
полиномов может быть выражен через эти полиномы.
Теорема 5.2.4. Пусть J — коммутативное кольцо с единицей,
а р(х) и q(x) — полиномы в кольце J[x] положительной степени.
Тогда в J[x] существуют полиномы г(х) и s(x), такие, чтор(х)г(х) +
q(x)s(x) - resB[p(ar),g(x)], причем deg[r(-c)] < deg[q(x)] и deg[s(x)] <
deg{p(x)]. (Очевидно, что подобный результат имеет место и для
resT\p(x),q(x)].)
Доказательство. Пусть т = deg[p(:e)] и п = deg[g(a;)]. Для
1 ^ i < т + п домножим i-й столбец матрицы Мв на хт+п~'
и прибавим его к последнему столбцу. В результате получим
новую матрицу Mq, определитель которой равен определите-
определителю матрицы Мв- Последний столбец матрицы Мв состоит из
полиномов хп-1р(х),х"-2р(х),... ,р(х),хт-^(х),хт-2я(х),... ,q(x).
Разлагая определитель по последнему столбцу, получаем тож-
тождество p(x)r(x) + q(x)s(x) = det(M'B) = те&в\р(х),q(x)], в котором
коэффициенты полиномов г(х) и s(x) являются алгебраически-
алгебраическими дополнениями элементов последнего столбца матрицы MD, a
следовательно, и М и поэтому принадлежат J. ?
Эта теорема напоминает нам о соотношении, существующем
между двумя полиномами и их наибольшим общим делителем. Для
более подробного исследования снова рассмотрим два полинома в
Z[x]:
спф0, п>0,
, rfm^O, m > 0,
и предположим, что у них есть общий корень а. Тогда
р(х) = (х- a)pi(x), q(x) = (х - a)qi(x),
rw;pi(x),qi(x) в Цх], deg[pi(x)] = n- 1, deg[qi(x)] = го - 1.
320
Наибольшие общие делители полиномов и PRS
Из теорем 5.2.2 и 5.2.4 легко следует, что
p(x)9l(x) - q(x)Pl(x) = 0. (CR)
Обратно, существование соотношения выписанного вида, в
котором pj(x),{i(x) лежат в Z[x], deg[pi(x)] = n—1, deg[ji(x)J = тп—1,
— это доказательство существования общего корня у полиномов
р{х) и q(x). [Это так, поскольку qi(x) не может делиться на
все линейные сомножители (х — /?д) полинома q(x), а поэтому
существует по крайней мере один линейный сомножитель полинома
q(x), появляющийся также и в р(х).]
Пусть теперь
Pi(x) = un_ixn~l + и„_2х"" н h «о, Ип-1 ф 0,
и заменим в (CR) все полиномы соответствующими их выражени-
выражениями. Тогда, группируя все коэффициенты при равных степенях
х и полагая все их равными 0, мы получаем систему уравнений,
выписанную на стр. 321 (где мы предполагаем п ^ тп).
Это система m + n линейных уравнений отга+п неизвестных
un_i,... ,uo, vm_i,... ,vo. Существование общего корня означает,
что у этой системы уравнений имеется ненулевое решение, следо-
следовательно, ее определитель должен равняться нулю. Переставляя
строки и столбцы, видим, что выписанный определитель является
результантом полиномов р(х) и q(x), Te&s\p(x),q(x)].
Этот процесс можно продолжить. Если степени ненулевых поли-
полиномов Р\(х) и q\(x) в (CR) равны (п—2) и (т — 2) соответственно, то
полиномы р(х) и q(x) имеют общий сомножитель второй степени,
так что (CR) становится необходимым и достаточным условием
существования двух общих корней полиномов р(х) и q(x). Доказа-
Доказательство проходит аналогично приведенному; нам только нужно
положить un_i = um_i = 0 как в выражениях дляр1(х), ?i(r), так и в
соответствующей системе уравнений. Теперь в системе (т + п — 1)
уравнений от (m + n - 2) неизвестных, и для того, чтобы сущест-
существовало ненулевое решение, все определители порядка (т + п — 2),
полученные из матрицы
det
сп
0
С„-1
drn-l
со
С!
do
do
0
со
0
0
>(m— 1) строк
(n — 1) строк
Метод Сильвестра-Габихта 321
о о
1
?
3
"И
1
1
?
—i
1
Е
Й
сч
1
с
?
7
?
3 ¦
7
1
с*
1
а
?
.4
1
тЧ
j
?
U
<м
1
Е •
Й
1
?
I
?
3
13
1
1
|
"в
|
1
с
3
1
о
а
1
?
1
_?
?
I
?
U
_?
^Е
1
е
о
т—1
1
й
сч
1
Е
1
с
1
1
СЧ
1
е
о
13
|
о
1
+
с**
1
эЕ
S?
I
?
1
|
?
I
?
U
(М
1
Й
о
3
1
g
1
1
1
?
¦1
1
о
г>
7
?
и
сч
1
?
а
^t
и
+
7
1
т—1
1
з3
|
1
.
1
СЧ
1
Е
-«
1
о
S1
1
?
+
1
?
s>
о
о
1
Е
13
I
21-274
322 Наибольшие общие делители полиномов и PRS
должны обращаться в нуль; в этой матрице (т + п — 1) столбцов.
Очевидно, что мы можем продолжить этот процесс.
Существование наибольшего общего делителя заданной
степени. Воспользуемся полученными результатами, чтобы
найти необходимые и достаточные условия существования наи-
наибольшего общего делителя заданной степени полиномов р(х) и q(x).
Читателю следует тщательно изучить доказательство следующей
теоремы.
Теорема 5.2.5. Степень наибольшего общего делителя двух
полиномов р(х) и q(x), deg[p(x)] = n, deg[g(x)] = m, из кольца Щх]
равна индексу первого ненулевого определителя среди
resB[p(*)- «(*)] = гевв'ЬОО. «(*)], res^bOO. «(*)],'««в^1)' q(x)],...,
где tea$\p(x),q(x)] — субрезультант, получающийся из результан-
результанта resB[p(x), q(x)], если мы удалим последние i строк коэффициентов
какр(х), так и q(x), и последние 2г столбцов, т.е. тея? \p(x),q(x)] —
это определитель порядка (т + п — 2г) и называется (как мы убе-
убедимся, по очевидным причинам) г-м главным субрезулътантным
коэффициентом.
Доказательство. Выведем сначала условия, необходимые для то-
того, чтобы полиномы р(х) и q(x) имели наибольший общий делитель
степени 1. Пусть
р(х) = СпХп + Cn-iX" + ¦ • • + С0,
С„ ф О, П > О,
, dm^0, m>0.
Из предыдущих рассуждений нам известно, что если resB[p(z),
q(x)} — О, то р(х) и q(x) имеют делитель (по крайней мере) первой
степени. Предположим, что этот случай действительно имеет
место, и рассмотрим полиномы
с неизвестными коэффициентами и„_2, • ¦ •, «о, fm-2, • • •) vo- Тогда
из уравнения
h go
Метод Спльвестра-Габихта
получаем следующую систему уравнений:
CnVm-3 —
-2 = Ят+п-2,
-3 = Ят+п-3,
323
= go-
He считая последнего уравнения, мы имеем (т + п — 2) линейных
уравнений от (т + п — 2) неизвестных. Поэтому если соответст-
соответствующий определитель тея?'\р(х), Ч(х)] порядка т + п — 2 не равен
нулю, то мы можем определить неизвестные так, чтобы
SVn+n-2 = Эт+п-з = ¦ ¦ ¦ = 92 = 0 и дх = Tes)b'\p(x), q(x)].
В этом случае
Последнее соотношение означает, что р(х) и q(x) имеют общий
делитель только первой степени (в противном случае правая часть
выписанного уравнения будет делиться также на этот другой
сомножитель более высокой степени). Таким образом,
Г«4О)[Р(*),<К*)] = 0,
)] Ф О
суть необходимые и достаточные условия, чтобы степень наиболь-
наибольшего общего делителя полиномов р(х) и q(x) равнялась 1.
Если, однако, гевд^ЬСя)»?^)] = 0. то
= д0,
но теперь, поскольку р(х) и q(x) имеют общий множитель, сущест-
существует значение х, для которого левая часть последнего соотношения
обращается в нуль, а следовательно, должен иметь место случай
до = 0. Таким образом,
= 0,
откуда мы заключаем, что полиномы р(х) и q(x) имеют общий
множитель по крайней мере второй степени.
21 *
324 Наибольшие общие делители полиномов и PRS
Поэтому если Tes(°)\p(x),q(x)] = te^)\p(x),q(x)] = 0, то мы пола-
полагаем
o, Vm-зфО,
qV\x) = «п_3х"-3 + • • • + щ, и„_з ф О,
с неизвестными коэффициентами и„_3>..., щ, «га_3 «о, и снова
из уравнения
р(х)рЩх) - q(x)qW(x) = дт+п-3хт+п-3 + дт+п_4хт+п-4 + • • • + до
мы получаем следующую систему уравнений:
Cn«m-3 - rfm«n-3 = Ят+п-3,
Cn-lVra-3 + CnWm_4 - «Jm-lUn-3 ~ <*т«„-4 = Ят+п-4,
He считая deyz последних строк, мы имеем систему (т+ п - 4)
линейных уравнений от (m + n - 4) неизвестных. Если соответст-
соответствующий определитель
с„ с„_1 ... с0 О
О с„ ... ci со
О
d0 0
di d0
не равен нулю, то мы можем определить неизвестные так, чтобы
Ят+п-з = Ят+п-4 = ¦ • • = 0, д2 = *"es^[p(z), 9(г)].
В этом случае
= tes^\p(x), q(x)] • z2 + glX + 9o.
Это означает, что р(х) и q(x) имеют общий делитель только
степени 2 (если существует делитель более высокой степени, то он
должен делить также правую часть выписанного соотношения).
Поэтому
«40)[p(z), q(x)} = Tes^\p(x), q(x)] = 0, res^z), q(x)] ф О
суть необходимые и достаточные условия, чтобы степень наи-
наибольшего общего делителя полиномов р(х) и q(x) равнялась 2.
Продолжая таким же образом, мы закончим доказательство тео-
теоремы, rj
Метод Силъвестра-Габихта 325
В качестве следствия теоремы 5.2.5 мы получаем
Следствие 5.2.6. Необходимым и достаточным условием вза-
взаимной простоты двух полиномов от одной переменной является
необращение в нуль их результанта.
Чрезвычайно важное значение для материала, излагаемого в
следующем разделе, имеет i-й главный субрезультантный коэф-
коэффициент resg [р(г),з(ж)], кратко обозначаемый там Я,-; см. также
приведенный ниже пример.
Результаты, аналогичные полученным выше, могут быть по-
получены для ге8т[р(х),д(х)], где используются те же обозначения
(причем различие знаков игнорируется), а именно имеет место
Определение 5.2.7. i-й главный субрезультантный коэффициент
iesy\pi(x),p-2(x)] двух полиномовPi(x),p2(x) от одной переменной —
это определитель, получающийся из результанта ieaT\pi(x),p2(x)]
этих полиномов, если отбросить первые t строк и столбцов и
последние i строк и столбцов.
Пример. Для полиномов pi(x) = х3 — 7х + 7 и рг(я) = За:2 — 7 мы
получаем следующие су б результанты Я,- = Teay\pi(x),p2(x)], i —
0,1,2:
Ro =
1
0
0 Дх =
0
3
0
1
0 R2-
3
0
-7
0
3
0
-7
7
-7
0
-7
0
0
0
-7
0
0
Теорема 5.2.8. Степень наибольшего общего делителя двух
полиномов от одной переменной равна индексу первого ненулевого
главного субрезультантного коэффициента До = resSp [р1(а:),р2(ж)],
R\ =resT1)[pi(a:).P2B)], Ri =resT2)[pi(a:)>p2(a;K,... .
Доказательство аналогично доказательству теоремы 5.2.5. ?
В последнем примере мы находим, что Ro = Tes>r'\pi(x),p2(x)],
откуда заключаем, что степень наибольшего общего делителя
полиномов pi (г) к р2(х) равна 0, т.е. gcd\pi(x), рг(^)] = 1.
Имеет место также следующая
326
Наибольшие общие делители полиномов и PRS
Теорема 5.2.9. Если /г-й главный субрезультантный коэффи-
коэффициент полиномов pi(x) и Р2{х) является первым ненулевым [т.е.
)
(
sSj
p() Р
= resT1)[Pl(a:))p2(a:)] = ••• =
О, a resSj, \pi(x),p2(x)] ф 0], то наибольший общий делитель поли-
полиномов pi(x) и р2(х) может быть получен из resSp'[pi(z),p2(z)], если
мы заменим (а) на pi(x) последний элемент в последней строке
коэффициентов полинома pi(x), на xpi(x) — элемент, находящийся
непосредственно над ним, на х2р\(х) — элемент над этим и т.д.,
(Ь) нар2(я) — последний элемент в первой строке коэффициентов
полинома Р2(х), на xpi(x) — элемент под ним, на х2р2(х) — элемент
под этим и т.д.
Доказательство. Доказательство основано на теореме 5.2.4, и мы
оставляем его читателю в качестве упражнения. ?
Обобщая теорему 5.2.9, мы видим, что точно таким же образом,
как описано в теореме 5.2.9, мы можем получить i-Vi член после-
последовательности полиномиальных остатков из res^1 \pi(x),P2(x)\,
пример приведен ниже
resB[pi(a0,p2(z)].
Отметим
Те же результаты имеют место для
s^ [
также, что \Ri\ = | res^
|reSB[pi(a:),p2(z)]|, а потому, игнорируя различие в знаках, мы
будем в обоих случаях использовать обозначение Ri.
Пример. Мы уже знаем, что Яо = res^ [pi(ж),рз(а:)] ф 0 для
полиномов р\(х) = х3 — 1х + 7 и рг(х) = Зж2 — 7; следовательно,
deg[gcd[p1(a;),p2(x)]) = 0; наибольший общий делитель получается
из res^ \pi(x),P2(x)] вычислением определителя
•10-7 7 хР1(х)-]
0 10-7 рх(х)
0 0 3 0 р2(х)
0 3 0-7 хр2(х)
.3 0-7 0 х2Р2(х)\
Подобным же образом мы видим, что рз(ж), третий член PRS,
получается из tes^ \pi(x),p2(x)]:
1 0 pi(*)
det
det
0 3 pa (яг)
3 0 хр2(х)
- 63 + 9х3 -
Метод Сильвестра-Габихта 327
(Сравните это с результатами, полученными в примере, предшес-
предшествующем теореме 5.2.4.)
В заключение этого раздела дадим следующее
Определение 5.2.10. Дискриминант discr[p(a;)] полинома р(х) =
аПк|<п0в ~ а<) определяется следующей формулой:
discr\p(x)] = а
2"-2
Ц
Отметим, что дискриминант дает меру близости корней поли-
полинома. Это будет использоваться в методе изоляции корней. Более
того, можно доказать, что для нормированного полинома р(х)
степени п
discr\p(x)] = (-!)"(
), p'(x)],
где р'(ж) — производная полинома р(х). Дополнительные свойства
дискриминанта можно найти в литературе (Berlecamp, 1968).
5.2.3. Алгоритм Габихта субрезультантных PRS
Как мы видели, Сильвестр указал отношение делимости, сущес-
существующее между некоторыми членами полной последовательности
полиномиальных остатков, и это явилось основанием для алгорит-
алгоритма редуцированных (субрезультантных) PRS. Однако, для того
чтобы иметь дело с неполными PRS, нам требуется отношение
делимости, существующее между любыми членами PRS. Это новое
отношение делимости было сформулировано Габихтом в 1948 г.
и составляет предмет данного раздела. [Удивительно простое
доказательство см. в (Gonzalez et al., 1990).]
Чтобы доказать теорему Габихта, рассмотрим два полинома в
ад
= coxn+1
cixn
pn(x) = doxn
dn
степеней n + 1 и п соответственно и последовательность полино-
полиномиальных остатков pn-i(x),... ,pi(x),po(x), где индекс указывает
степень соответствующего полинома. Отметим, что Габихт ин-
интересовался в первую очередь последовательностями Штурма, и
328 Наибольшие общие делители полиномов и PRS
это объясняет выбор степеней первых двух полиномов. Многие из
представленных ниже результатов справедливы при произвольных
степенях двух первых полиномов (читатель легко может опреде-
определить, когда это имеет место), но мы придерживаемся подхода
Габихта.
Как мы напоминали, для полных PRS Сильвестр доказал, что (i—
2)-й член PRS делится на квадрат i'-го главного субрезультантного
коэффициента:
(SO)
Другими словами, квадрат старшего коэффициента полинома
р,(я) делит без остатка полином р,_2(г) [resjfj'\pn+i(x),p — n(x)] был
определен в теореме 5.2.5]. Для неполных PRS, когда некоторые
члены PRS отсутствуют, Габихт доказал, что
О < i < п, 0 < j < i,
(НО)
где полиномы p^(x),q^\x) получены из коэффициентов поли-
полиномов Pi+i(x) и Pi(x) таким же образом (объясненным ниже),
как полиномы p(t\x),q(l\x) (определенные ниже в теореме 5.2.11)
получены из коэффициентов полиномов pn+i(x) и рп(х).
Замечание. Читатель должен хорошо разобраться в различии
между двумя парами полиномов с верхними индексами, т.е.
p('*\x),qW)(x) и p('\x),q(%)(x); роль индекса i в них совершен-
совершенно разная. Для согласованности последняя пара может также
обозначаться {p("'\x),q(nt\x)}, но мы пользуемся более простым
обозначением.
В полном объеме смысл и значение соотношения (НО) будет
разбираться позже. Заметим, что для неполных PRS с помощью
рA*\х) и q('*\x) мы приходим к новым свойствам делимости, сфор-
сформулированным в конце раздела, которые приводят к алгоритму
Габихта субрезультантных PRS, упоминавшемуся в разд. 5.1.1.
Вначале будет доказана
Теорема 5.2.11. Рассмотрим последовательность полиноми-
полиномиальных остатков pn+i(x),pn(x),pn-i(x),... ,pi(x),po(x) над целыми
числами, в которой индекс обозначает степень соответствующего
Метод Силъвестра-Габихта 329
полинома; тогда для любого члена Pi(x) этой PRS, 0 ^ « < п,мы
можем найти в Щх] два полинома
x) = ао*""'-1 + en
""'"'
+ • • • + On-i-i,
степеней п — » — 1 ип-i соответственно, таких, что
Pi(x) = Щ <*>)
Доказательство. Доказательство является конструктивным и ана-
аналогично расширенному алгоритму Евклида для целых чисел или
полиномов над полем, т.е. мы требуем соблюдения соотношения
Pi(x) = Рп+1(х)р(г\х) + pn(x)qW(x) для любого i.
Очевидно, что р^'\х) = 1 и q('\x) = 0 при i = n +1 и Р^'\х) = 0 и
q('\x) = 1 при i = п. Как мы уже видели, чтобы вычислить рA\х)
и q('\x) для 0 ^ г < п, мы изменяем их таким же образом, как
изменяем значения р,-(х), а именно, если
Pi-i(x) = {lc[p,(ar)]}2pi+i(x) -р,(ж)9(ж),
где q(x) — частное от деления (lc[p<(a;)]}2pj+i(x) на Pi(x), то
= {k[pi
D
Теорема 5.2.11 показывает, что расширенный алгоритм Евклида
работает также с полиномами над целыми числами. [Если мы
сравним выражения pi(x) = Pn+i(x)P^%\x) + Рп(х)я^(х) в теореме
5.2.11 с выражениями вида
= ге40ЬК*). «(«)]*' + ''' + Я1* + 90,
полученными в доказательстве теоремы 5.2.5, мы увидим, что
старший коэффициент полинома р,(аг), 0 ^ i < п (где pi(x) — произ-
произвольный член PRS), является субрезультантом izs^'\pn+i(x),pn(x)),
и поэтому он называется главным субрезулътантным коэффициен-
коэффициентом.]
Мы видели, что произвольный член PRS, Pi(x), может быть
вычислен из соответствующего главного субрезультантного ко-
коэффициента, как описано в теореме 5.2.9; подобным образом
330
Наибольшие общие делители полиномов и PRS
мы видим, что полиномы р('\х) и q('\x) в выражении pi(x) =
Pn+i(x)ff-'\x) + pn(x)q^(x) также могут быть получены из главного
субрезультантного коэффициента следующим образом:
Определитель для р(*\х) в точности совпадает с определите-
определителем для Pi(x), кроме последнего столбца, который равен я""',
—, 1,0,... ,0 (начиная сверху).
Определитель для q('\x) в точности совпадает с определите-
определителем для Pi(x), кроме последнего столбца, который равен 0, ...,0,
г""',..., 1 (начиная сверху).
[Итак, если нам нужны последовательности Штурма и мы поль-
пользуемся формой Брюно для определителя, то во всех определителях
присутствует сомножитель (— 1)п("+1)/2-) в этом состоит различие
между формами Брюно и Труди для результанта. Ниже мы этот
сомножитель будем игнорировать.]
Таким образом, полиномы р^'\х) и q^'\x) могут быть непосредс-
непосредственно получены из следующих определителей порядка 2(п — f) +1,
где мы меняем местами строки и столбцы:
= det
n—i—1
Со
«<*>(*) = det
n—2 ... i oo
0 ... 0 do 0
со ... 0 di d0
c0
... cn_,-
Г 0 0 ... О ж"-»' г"-'
со 0 ... О d0 О
ci с0 ... О di d0
¦ ... с0
0
0
0
d0
(HI)
1
0
о
do
... Cn-i • ¦ ... rfn-i
Мы можем также представить соотношения (HI) в виде
= i>n,i\Pn+l(x),pn(x)],
Метод Силъвестра-Габихта 331
где фп<х и фп,\ рассматриваются как операторы, действующие на
любой паре полиномов степеней п + 1 и п.
Пример. Рассмотрим полиномы р2+\(х) — х3 — 1х + 7 и Pi(x) —
За;2 - 7, т.е. п = 2, и вычислим р^(х) и д^^(х), так что
Заметим, что в этом случае » = 1, и, следовательно, определители
имеют порядок 2(п — i) + 1 = 3, так что
= det
• (-3*) = -42* + 63,
Pi(«) = Pa+i(*) • 9 + pj
что нам уже известно. [Читателю следует проверить, что мы
получим те же полиномы pf-l\x) и q^\x), используя расширенный
алгоритм Евклида для полиномов, описанный в теореме 5.2.П.]
Затем для вычисления р^°^(г) и q(°\x), таких, что ро =
P2+i(x)p(°\x)+p2(x)q<-°)(x), нам нужно вычислить два определителя
порядка 5:
q<-°\x) = det
det
" 0
1
0
-7
L 7
' X
1
0
_7
. 7
0
0
1
0
-7
1
0
1
0
-7
а:2
3
0
-7
0
0
3
0
-7
0
X
0
3
0
-7
0
0
3
0
-7
Г
0
0
3
0.
о-
0
0
3
0.
= 126а:+189
= -42а:, 2 - 63а: Ч
следовательно,
Ро(х) = p2+i(a:)A26a: + 189) + р2(х)(-Юх2 - 63* + 196) = -49.
Заметим, что в приведенном примере выполняются удивитель-
удивительные соотношения:
332 Наибольшие общие делители полиномов и PRS
Как мы уже говорили, старший коэффициент i-ro члена PRS равен
res<jp\pn+l(x),pn(x)] и отличается знаком от те$)\р„+1(х),рп(х)];
игнорируя различие в знаках, мы обозначаем оба результанта Д,-.
Поэтому в общем случае
1ф„И]Д.- = - ictP0^)], b\Pn+i(x)]Ri = b\sp-l\x)). (H2)
Эти формулы проверяются несложными вычислениями, если рас-
рассмотреть определители Я,-, р^'~1\х) и «^'""^(я) вместе с тем фактом,
что порядок первого из них равен 2(п — ») + 1, а двух последних
2(п — ») + 3; см. также предыдущий пример.
Таким образом, для каждого индекса »', 0 ^ г < п, мы создали
множество из трех полиномов Pi(x), р^'\х) и д(*\х); сейчас мы
свяжем их попарно следующим образом.
Теорема 5.2.12 (Габихт). В предположениях теоремы 5.2.11 для
1 ^ f < п - 1
t-i(
(НЗ)
Доказательство. Мы имеем
Ш<-1Чх). (Н4)
Умножая первое соотношение на р^~г\х), а второе — на pW(x),
мы получаем
f
L
«-»(х)]
Pi-M J
det
(Н5)
Левая часть соотношения — это полином степени п, поскольку
степень полинома Pt[x)ff-l~1\x) равна п, а степень полинома
Pi-i(x)p(-'\x) — только п - 2. Однако, поскольку степень поли-
полинома рп(х) равна п, определитель в правой части соотношения
(Н5) является целой константой; в действительности эта констан-
константа равна — 1с{р('~х)(а;)}Л,/1с[рп(х)], частному от деления старших
коэффициентов полиномов — pi(x)p^'~1\x) и рп(х), которое по пер-
первой из формул (Н2) равно R] (проверьте это для последнего
примера). Таким образом, мы доказали два первых соотношения
(НЗ) П
) , д р нения
(НЗ). Последнее легко получается после умножения соотношений
(Н4) ^l^{) ^{x) соответственно. ?
()
из (Н4) на
и
Метод Силъвестра-Габихта 333
[Формулы (НЗ) можно расширить, чтобы включить pn+i(x) и
рп(х), полагая р("+1)(х) = 1, р(")(х) = 0, g<n+1>(a:) = 0, ?(п)(х) = 1. В
этом случае формулы (Н4) и (Н5) остаются справедливыми; более
того, если мы воспользуемся разницей в знаках, которую до сих
пор игнорировали, и положим ^"""^(а:) = — dj| = — й? (посмотрите,
как это получилось в последнем примере), то (НЗ) справедливо
для i = n, а для i = n + 1 положим Дп+i = 1.]
Выведем сейчас соотношение между p,+i(x), Pi(x) и pt-i(x) и
более общее соотношение между Pi+i(x), Р$(х) и Pj(x), j < i для
1 ^ * < п - 1.
Из двух последних соотношений (НЗ) мы получаем для «+ 1
Умножая первое из этих соотношений на
р('~х\х), получаем
), а второе — на
что в соответствии с (НЗ) равно
Pi-Л*) = -Rbi+Лх) + Qi(x)Pi(x),
A16)
где <2;(х) — полином степени 1, который может быть выражен
через коэффициенты полиномов p,-+i(a:) и Pi(x) (например, коэф-
коэффициент при х равен RiRi+x). С использованием введенных ранее
операторов (Н6) можно переписать в виде
i (я:),
p()
A16')
Основываясь на этом уравнении, рассмотрим теперь более общий
случай.
Теорема 5.2.13 (Habicht, 1948). В предположениях теоре-
теоремы 5.2.11, если положить р^\х) = <j>ij\pi+i(x),pi(x)] и qW)(x) =
4ii\Pi+i(x),Pi(x)] @ < i < п и 0 ^ j < 0, то
. (H7)
334 Наибольшие общие делители полиномов и PRS
Доказательство. Пользуясь обозначениями этой теоремы, полино-
полиномы р('\х) и q('){x), определенные в теореме 5.2.11, можно записать
как р(пг\х) и q(m)(x) соответственно. Поэтому полиномы pW)(x)
и q('i\x) могут быть вычислены исходя из определителя, элемен-
элементами которого являются коэффициенты полиномов pi+i(x) и Pi(x),
таким же образом, как полиномы р("*\х) и q("'\x) могут быть вы-
вычислены исходя из определителя, элементами которого являются
коэффициенты полиномов pn+i(x) и рп(х).
Фиксировав i, образуем полиномы
р'г{х) =
и
Заметим, что полиномы p'j(x), j < i, выражаются через Pi+i(x) и
Pi(x), а полиномы pj(x) — через р„+\(х) и рп(х) (теорема 5.2.11);
поэтому коэффициенты первых полиномов больше, чем коэффици-
коэффициенты вторых, и мы хотим доказать, что
Pi(*) = *&'%(*)• (Н8)
Лля простоты обозначений положим также Rj+1 = г {напомним,
что .Rt+i = lc[pi+i(r)]} и образуем полиномы с рациональными
коэффициентами
Обозначим старшие коэффициенты полиномов р'Лх) и p'j'(x) через
/?'. х, т?" соответственно. Покажем, что (Н6) выполняется для
j sj г — 1, и этим закончим
любых р"+1(х), р'/(х) и р"_1(х), 1
доказательство теоремы.
Очевидно, что р"(х) = Pi(x), а по (Н6') мы имеем р'/-х(х) —
Pi-i(x); поэтому мы можем последовательно заключить, что также
р"(х) = pj(x), j = г - 2,..., 0. Однако по определению операторов
<f>ij и rpij повторным применением использованных выше рассужде-
рассуждений мы устанавливаем, что A16) выполняется для значений p'j(x),
т.е.
Следовательно, разделив для каждого индекса j соответствующее
соотношение на
получаем
*) + Qj'
1- ?
Метод Сильвестра-Габихта 335
Эта теорема показывает, что (без вычисления наибольших
общих делителей) наименьшие коэффициенты членов PRS полу-
получаются как субрезультанты результанта resB[pn+i(a:),pn(a;)], т.е.
мы получаем наименьшие коэффициенты для членов PRS только
при использовании коэффициентов полиномов рп+х(х) и рп(х). Од-
Однако вычисление определителей является трудоемким процессом,
и члены PRS вычисляются путем псевдоделения; коэффициенты
членов PRS тогда получаются большими, но мы уже знаем, на что
их нужно делить.
Пример. Рассмотрим снова полиномы из последнего примера
P2+i{x) — xs — 7х + 7 и Р2{х) = Зж2 — 7, для которых мы уже знаем,
что pi(x) = —42аг + 63 и ро(х) = —49. Очевидно, что в этом
случае pi(x) = Р\(х)} И> таким образом, мы можем вычислить
Ро(х) = Р2{фт(х)! +Pi(*)gA0)- Мы имеем i = 1, j = 0 и
р<1О>(а0 = det
= det
1 О О
3 -42 О
О 63 -42
"О х 1
3 -42 О
О 63 -42
= 1764,
= 126ж +189.
Поэтому р'0(х) = 1764Cх2 - 7) + A26z + 189)(-42ж + 63) = -441, и по
теореме 5.2.13 З2, старший коэффициент полинома pi{x), возведен-
возведенный в квадрат, делит —441, т.е. ро(х) — р'0(аг)/9 = —441/32 = —49.
В дальнейшем мы полагаем Rn+i = Co, Rn = ^о и рассмотрим,
что случится, если один или несколько главных субрезультантных
коэффициентов равны нулю, т.е. мы выведем формулы, составляю-
составляющие основу алгоритма Габихта субрезультантных PRS [формула
(Н) разд. 5.1.1]. Наши исследования основаны на соотношениях
(Н7) и (Н8).
Рассмотрим последовательность полиномиальных остатков
Pn+l(x),pn(x),.. .,ро(х), где для всех i, 0 ^ i ^ п - 1,
Pi(x) = citOx' + |-см,
и пусть pi(x), 0 < ii ^ п, — член этой последовательности, такой,
<-- 0, Ri = 0, сп = 0,..., с,-,,-_,-_1 = 0, см_;- ф О,
что
336
Наибольшие общие делители полиномов и PRS
т.е. степень полинома pi(x) равна j ^ г. Тогда следующие со-
соотношения легко выводятся из (Н7), (Н8) и вида полинома р,(х)
[напомним, что определители р&\х) и qW\x) получаются таким
же образом, как и определители р^(х) и q^(x), т.е. из (HI), где п
заменено на i, г на j и коэффициенты полиномов pn+i(x) и р„(х) —
коэффициентами полиномов p,-+i(x) и р,(х)].
Н-1. pi-i(x),... ,pj+i(x) равны нулю.
н-2. pU)(x) = o
н-з.
<7V() ( ;&#
Pi-i(*) = <сГсо~'р»-н« + ^^^^(x) (!• = n)!
Формулы пунктов Н-1, Н-2 и Н-З составляют основу алгоритма
Габихта субрезультантных PRS.
Пример. Рассмотрим неполную последовательность полиноми-
полиномиальных остатков pt(x) — 2х4 + Ьх3 + 5х2 — 2х + 1, рз(х) = Ъх3 +
Зг2 + Зх - 4, pi(x) = Ох2 - 2\х + 45, Pi(x) =-?-, ро(х) = -47049. Мы
видим, что здесь R^+i ф 0, но Дг = 0, т.е. во введенных выше
обозначениях i = 2 и ;' = 1. Тогда, чтобы вычислить р\.(х), мы
применяем случай Н-2 и получаем
0 0"
/21>(х) = det
= det
3 О
3 -21
О х
= 0,
1
3 О О = 3(-21),
3 -21 0_
где п := »', г := j и коэффициенты полиномов Pi(x) и рз(х) заменены
коэффициентами полиномов Рз(х) и рг(я)- Поэтому из р'^х) =
Рз(х)рB1)(х) + P2(x)qB1^ получаем
р[(х) = 3(-21)р2(х), или, эквивалентно, 2,2pi(x) - 3(-21)р2(ж)
и
Р1(х) = -147x4-315,
т.е. р\{х) — это полином, пропорциональный полиному рг{х).
Читателю предлагается в качестве упражнения вычислить ро(х),
используя случай Н-З.
Метод Силъвестра-Габихта 337
Рис. 5.2.1.
Лакунарная структура PRS; отрезок длины Jfc +1 пред-
представляет полином степени к (Габихт).
Представляет интерес рис. 5.2.1.
Используя (Н) из разд. 5.1.1, получаем следующий алгоритм.
HSPRS. Субрезультантные PRS Габихта (Habicht's Subresultant
PRS)
Вход: Два ненулевых полинома pi(z),p2(z) в Z[x], deg[pi(x)] ^
deg\p2(x)].
Выход: Субрезультантная PRS полиномов pi(x) и рг(х).
1. [Инициализация] i := 1; ft := (-l^sInC'M-deelpaWl+i,
2. [Готово?] Если p,+ i(x) = 0, то выход из алгоритма.
3. [Вычисление псевдоостатка] Pi+i(x) := ргет[р,(х),р<+1(х)]/Д-,
где /?,• вычислено из соотношения (Н) разд. 5.1.1 (см. также
ниже упр. 3 к этому разделу); положить t := t + 1 и перейти к
шагу 2.
Анализ времени работы алгоритма HSPRS. Пусть п = deg[pi(x)].
Тогда в худшем случае имеется п полиномиальных псевдоделений
над целыми числами, которые выполняются (см. также разд. 3.1.1)
за время О[{(п - 1) • 2 + (и - 2) • 2 + • • • +1 -2} • L2(a)] = О[пЧ2(а)], где
а — наибольший коэффициент, появляющийся в ходе вычислений
[аналогично времени, требуемому для вычисления произведения
Pi(x) ¦ Pi(x)]. Множитель L2(a) соответствует имеющему место
умножению целых чисел (коэффициентов). Наибольший коэффи-
коэффициент, появляющийся в ходе вычислений, ^ reSB[pi(x),p2(z)], что в
свою очередь ограничено по неравенству Адамара
|resB[pi(z),P2(z)]|
22-274
1/2
Bn)"(|p(x)U)
'In
338
Наибольшие общие делители полиномов и PRS
где |р(г)|оо = max(|pi(x)|oo, |Р2(ж)|оо), а г,;- обозначают элементы
результанта. Если положить а = Bn)"([p(ar)|ooJn, то ?2(а) =
[nLBn) + 2nL(\p(x)\oo)]2 = O(n2i2[|p(a;)|oo]), и время всех полиноми-
полиномиальных псевдоделений равно
5.3
Метод матричной триангуляризации субрезультантных PRS
Мы видели, что метод Сильвестра-Габихта псевдоделения суб-
субрезультантных PRS включает в себя два алгоритма: алгоритм
Сильвестра редуцированных (субрезультантных) PRS (основан-
(основанный на статье Сильвестра 1853 г.), очень хорошо работающий для
полных PRS, и алгоритм Габихта субрезультантных PRS (осно-
(основанный на статье Габихта 1948 г.), более предпочтительный для
неполных PRS. Заметим, что алгоритм Габихта субрезультантных
PRS может быть использован для полных PRS, но за счет допол-
дополнительных затрат. Более того, мы не можем a priori сказать, будет
получающаяся PRS полной или неполной.
В этом разделе мы представляем метод матричной триангуля-
триангуляризации субрезультантных PRS, разработанный автором в 1986 г.
Этот метод основан на полученном автором обобщении теоремы
Ван Влека и с единой позиции подходит к полным и неполным PRS.
Более того, коэффициенты членов PRS являются наименьшими из
тех, что могут быть получены без вычисления наибольших об-
общих делителей коэффициентов, и ясно демонстрируются свойства
делимости. (В разд. 5.1.1 мы видели пример, когда коэффици-
коэффициенты, полученные этим новым методом, меньше коэффициентов,
полученных методом PRS Сильвестра-Габихта.)
Удивительный факт о методе матричной триангуляризации
субрезультантных PR.S состоит в том, что в нем нет явного
деления полиномов, вместо этого используется процесс гауссо-
гауссова исключения (см. приложение в конце книги), применяемый
к единственной матрице, соответствующей результанту в форме
Сильвестра (рассматриваемому ниже), и все члены PRS получа-
получаются из строк результирующей верхней треугольной матрицы с
Метод матричной триангуляризации 339
помощью теоремы 5.3.6. Следует заметить, что результант в фор-
форме Сильвестра впервые используется в современной литературе.
(См. также историческое замечание 2.)
5.3.1. Гауссово исключение и полиномиальное деление
Рассмотрим полиномы pi(x) = спхп + сп-ххп~1 + ¦ • ¦ + cq, cn ф О,
п > ®,Р2{Х) = dmxm+dm^ixm~1-\ \-d0, dm ф О, т > 0, над целыми
числами n ^ т. Из евклидовости мы знаем, что существуют
единственные полиномы с целыми коэффициентами q(x) и г(х),
такие, что р\{х) = Pi{x)q{x) + r(x), deg[r(z)] < deg\p2(x)] (в этом
месте читателю следует посмотреть еще раз алгоритм PDF).
Пусть r(x) = rm_1rm-1 + rm_2zm-2 + • • • + r0.
Мы утверждаем, что деление полиномов над полем или псевдо-
псевдоделение над целыми числами эквивалентно приведению матрицы
М к верхней треугольной форме Т(М), т.е. все элементы m,-j,
j < г, матрицы Т(М.) равны нулю. Поскольку гауссово исключе-
исключение — это процесс, приводящий данную матрицу элементарными
преобразованиями над строками к верхней треугольной форме,
наше утверждение состоит в том, что полиномиальное деление
эквивалентно гауссову исключению.
Чтобы убедиться в этом, рассмотрим упомянутые выше поли-
полипомы и сформируем (п — m + 2) х (п + 1)-матрицу М:
М =
О
Lc
d0
О
do
О
Cn-1
0
0
d0
C0J
>(n — m + 1) строк
где коэффициенты полиномов ж"~тр2(-с), хп~т~1р2(х), ... , рг(^)
составляют первую, вторую, ... и (п — т+ 1)-ю строки (n — m + 2) x
(п + 1)-матрицы; коэффициенты полинома pi(x) составляют пос-
последнюю строку этой матрицы. Если мы приведем теперь матрицу
М к верхней треугольной форме Т(М), то увидим, что элементы
последней строки преобразуются в коэффициенты остатка г(х),
т.е.
... d0
T(M) =
22*
О dm
О
о
dm
О
0
d0
Гт_!
о-
о
do
r0J
340
Наибольшие общие делители полиномов и PRS
Метод матричной триангуляризации 341
Мы вычли здесь из последней строки матрицы М каждую из
первых п — т + 1 ее строк, предварительно домноженную на
соответствующее число, разность стала новой последней строкой.
Таким образом, мы последовательно исключили степени х до
хт~1.
Пример. Рассмотрим полиномы рх(х) — х3 —7х + 7 ирз(х) = Зх2 —7.
Тогда
'3 0-7 0 '
М= 0 3 0 -7
10-7 7 .
и, приведя ее к верхней треугольной форме, получаем
?
Г(М) =
3 0-7 0
0 3 0-7
0 0 -14 21
откуда заключаем, что псевдоостаток от деления pi(x) на ргО")
равен г(х) = — 14х + 21 = рз(х). (Читателю следует заметить, что
коэффициенты здесь меньше, чем полученные непосредственным
псевдоделением.)
Лалее мы будем иметь дело только с квадратными матрицами
и будем-приводить их к верхней треугольной форме, пользуясь
алгоритмом Доджсона, сохраняющим целочисленность (см. исто-
историческое замечание 3). Для п х n-матрицы М алгоритм Доджсона
работает следующим образом. Положим mfo := 1 и т^' := ту
(элементы матрицы), i,j — 1,... ,п; тогда для к < i,j ^ n положим
т,
,(*-!)
(D)
То есть при i ^ к строки не меняются, а при к < i мы получаем
в соответствующих строках 0 в нижнем треугольнике. [См. также
(Малашонок, 1983, 1986).]
Заметим, что нам нужен выбор ведущего элемента (перестанов-
(перестановки строк), чтобы обеспечить условие тгкк~ ф 0 для всех к, и, как
мы убедимся ниже, этот выбор должен быть сделан так, чтобы он
не испортил симметрию матрицы, соответствующей результанту
в форме Сильвестра. Поэтому мы пользуемся выбором ведущего
элемента методом пузырька, который определяется следующим
образом: если нам нужно переставить строку i со строкой j, где
j > i + 1, то мы позволяем строке j подняться до уровня строки %,
последовательно меняя ее местами (попарно) с каждой из строк,
лежащих над ней. Таким образом, после выбора ведущего элемен-
элемента методом пузырька бывшая строка i находится непосредственно
под бывшей строкой j.
В алгоритме Доджсона очень существенно, что определитель
порядка 2 без остатка делится на т]^ 'к_г и что элементы по-
получающейся матрицы являются наименьшими среди тех, которые
можно получить без вычисления gcd коэффициентов и без введе-
введения рациональных чисел. Чтобы в этом убедиться, рассмотрим
матрицу [см. также (Малашонок, 1983)]
a
/
6
9
I
с
h
m
d
i
n
e
j
о
После первого преобразования, к = 1, мы получаем матрицу
о Ь с d e ...
0 ад — bf ah — cf ai — df aj — ef
0 al — bk am — ck an — dk ao — ek ...
т.е. нет никакого деления, поскольку гщ 0 ' = 1. После второго
преобразования, к = 2, мы получаем следующую матрицу (до
деления):
?з = (а9 ~ bf)(am - ск) - (al - bk)(ah - cf)
= aagm — acgk — abfm + bcfk — aahl -f acfl + abhk — bcfk
= aagm — acgk — abfm — aahl + acfl + abhk,
1Щ ^ = aagm — adgk — abfn — aail + adfl + abik,....
Таким образом, мы видим, что каждый элемент подматрицы можно
без остатка разделить на а. Подобным образом мы сможем разде-
разделить на (ag — bf) элементы новой подматрицы после следующего
преобразования и т.д.
342 Наибольшие общие делители полиномов и PRS
5.3.2. Гауссово исключение и результанты в формах Брюно
и Труди
Напомним, что для двух данных полиномов р(х) = спхп +
Cn-i*"-1 + • • ¦ + с0 и q(x) = dmxm + dm-ix™ + • • • + d0, n > m,
матрица Мв, соответствующая результанту в форме Брюно, рав-
равна
Мв =
О
О
с„
с„_1
О
dm dm-i
О dm
L О
О
о
do
dm-l
О
со
Сп-1
о
О
01
0
со
0
0
d0.
}(т строк)
>(п строк)
Мы хотим доказать, что если мы приведем Мв к верхней
треугольной форме T(Mg), пользуясь только преобразованиями
строк, то последняя ненулевая строка матрицы Т(Мв) даст нам
коэффициенты полинома gcd\p(x),q(x)]. Заметим, что в общем
случае при преобразовании Мв в Т(Мв) мы можем получить только
gcd, но ми одного другого члена PRS, порожденной полиномами
р(х) и q(x).
Для доказательства главного результата прежде всего нам
понадобится следующая
Лемма 5.3.1 (Laidacker, 1969). Пусть Pi{x),pf(x) — полиномы,
соответствующие i-м строкам матриц Мв (определенной выше) и
Т(Мв) соответственно, где Т(Мв) — верхняя треугольная форма
матрицы Мв, полученная из последней только преобразованиями
строк. Если Jb — степень полинома р+(х), соответствующего
последней ненулевой строке матрицы Т(Мв), то не существует
полиномов вида
oripi(x) + а2р2(х) +¦¦¦ + ат+прт+п(х) (L)
степени, меньшей к, где »j — константа, t = 1,2,..., т + п.
Доказательство. В обеих матрицах, Мв и Т(Мв), элементы пер-
первого столбца — это коэффициенты при степени хт+п~1, элементы
второго столбца - это коэффициенты при степени xm+n~2 и т.д.
Метод матричной триангуляризации 343
Из линейной алгебры нам известно, что множество линейных ком-
комбинаций вида (L), порожденных полиномами {Pi(x)}, совпадает с
множеством, порожденным полиномами {pf(x)}, i = 1,2,..., m + п,
поэтому мы будем доказывать теорему для последнего множества.
Прежде всего заметим, что при it = 0 теорема очевидным
образом верна. Предположим теперь, что она неверна при к >
0. Тогда существуют константы /3,-, i = 1,2,...,г, такие, что
/?ipf (*) + foptW + ¦¦¦ + РгР?(х) = Р+(*)> где degb+Or)] < к. Так
как deg\pf(x)] = m + n — l>k, а также deg[pf(x)] > deg\pf(x)],
i = 2,..., г, то Pi должно равняться нулю. Рассмотрим оставшееся
выражение/Згр^(г)-I t-/?rp+(:r) = p+(x); по тем же причинам, что
и выше, мы заключаем, что /?,• = 0 для i = 2,3,..., г, откуда следует,
что р+(х) — нулевой полином, что противоречит предположению.
Теорема 5.3.2 (Laidacker, 1969). В предположениях леммы 5.3.1
последняя ненулевая строка матрицы Т(Мв), полученной из Мв
с помощью только преобразований строк, дает коэффициенты
полинома gcd[p(»), q(x)].
Доказательство. Пусть 0t,0*-i,- ¦ • ,Яо — элементы последней не-
ненулевой строки матрицы Т(Мв); в этом случае р?(х) = дьхк +
gh-ixk~x + Ь до- По построению Мв мы видим, что любой по-
полином вида atipi(x) + • • ¦ + ат+„рт+п(х) может быть записан в виде
p(x)gr(x) + q(x)g'r'x), где deg\gr(x)] < т-1 и deg^'(a;)] < n-1. Ясно,
что р?(х) также может быть записан в виде p(x)<jrr(a:) + q(x)g'r'x),
тогда, очевидно, gcd\p(x),q(x)]\p+(x), откуда мы заключаем, что
deg{gcd[p(x), q(x)]} ^ deg[p+(x)]. Однако по лемме 5.3.1 не сущест-
существует полиномов степени < к, которые могут быть представлены в
виде р(х)дг(х) + q(x)g"(x), а следовательно, наша теорема доказа-
доказана. ?
Пример. Рассмотрим пару полиномов р(х) = х3 — 7х + 7 и q(x) —
Зх2 — 7, порождающую полную PRS. Тогда
Мв =
Из последней строки матрицы Г(Мв) мы заключаем, что эти два
полинома взаимно просты. Заметим также, что в Г(Мв) мы теряем
1
0
3
0
0
0
1
0
3
0
J
0
-7
0
3
7
-7
0
-7
0
о -
7
0
0
-7.
,Г(МВ) =
1
0
0
0
.0
0
1
0
0
0
-7
0
14
0
0
7
-7
-21
196
0
0
7
0
-294
-49
344 Наибольшие общие делители полиномов и PRS
полином q{x), и оказывается, что мы получаем полиномиальный
остаток, третью строку, соответствующую полиному 14а; — 21.
Однако если мы рассмотрим пару полиномов р(х) = ж5 + 5х4 +
Юх3 + 5а:2 + 5х + 2 и q(x) = х4 + 4х3 + 6а:2 + 2х + 1, порождающую
неполную PRS, то
Г(МВ) =
—.
1 ,
0
0
0
0
0
0
0
0
-1
0
0
0
1
0
0
0
.0
1
0
0
0
0
0
0
0
5
1
0
0
4
1
0
0
0
10
5
1
0
0
0
0
0
0
10
5
1
0
6
4
1
0
0
J>
10
5
1
0
0
0
0
0
5
10
5
1
2
6
4
1
0
5
5
10
5
-19
0
0
0
0
5
5
К
5
1
2
6
4
1
2
5
I 5
10
0
1
2
6
4
2
5
5
10
-22
215
0
0
0
0
2
5
5
0
0
1
2
6
0
2
5
5
0
0
2
5
0
0
0
1
2
-13
64
-306
0
0
о-
0
0
2
0
0
0
0
1.
0
0
2
5
-12
81
36
756
0
0
0
0
2
-4
46
116
532
980
Учитывая, что члены PRS, порожденной двумя данными выше
полиномами, суть
-Зх2 + 2х + 1, -266х - 112, 980,
мы видим, что из Г(Мв) мы можем извлечь заключение только о
gcd[p(x),g(*)].
Очевидно, что форма Труди результанта по существу совпада-
совпадает с формой Врюно, за исключением того, что нижнее множество
строк попарно переставлено. Таким образом, теорема 5.3.2 ос-
остается верной в этом случае, и мы можем ожидать, что получим
только заключение о наибольшем общем делителе двух полиномов
(который будет Дан со знаком —).
Метод матричной триангиляризации 345
Пример. Рассмотрим пару полиномов, исследовавшихся в преды-
предыдущем примере. Прежде всего дляр(х) = ж3-7х + 7 и q(x) = За:2 —7
мы имеем
Мт =
Г1 0 -7 7 О
0 10-77
0 0 3 0-7
0 3 0-70
.3 0-7 0 0
Г(МТ) =
Г1 0 -7 7 0
0 10-7 7
0 0 3 0 -7
0 0 0 42 -63
-0 0 0 0 49
Заметим, что в Т(Мт) предпоследняя строка соответствует
полиному 42а; — 63 = (—3)(—14г + 21), т.е. это кратное противопо-
противоположного к остатку полинома. Подобным же образом последняя
строка — это наибольший общий делитель со знаком -.
Теперь для р(х) = хь + 5а:4 + 10а:3 + 5а:2 + 5а: + 2 и q(x) = х* + 4х3 +
6а:2 + 2а: + 1 мы имеем
Мт =
Т(МТ) =
=
1
0
0
0
0
0
0
0
0
¦1
0
0
0
0
0
0
0
л
5
1
0
0
0
0
0
0
0
5
1
0
0
0
0
0
1
4
10
5
1
0
0
0
0
0
0
10
5
1
0
0
0
1
4
6
5
10
5
1
0
0
0
0
0
5
10
5
1
0
1
4
6
2
5
5
10
5
1
0
0
0
0
5
5
10
5
1
4
6
2
1
2
5
5
10
4
3
0
0
0
2
5
5
10
4
6
2
1
0
0
2
5
5
6
-5
9
0
0
0
2
5
5
6
2
1
0
0
0
0
2
5
2
1
0
0
0
0
0
2
5
2
1
-6
-266
0
0]
0
0
2
1
0
0
0
0.
0
0
0
2
1
1
-112
-980
Заметим, что четыре последние строки матрицы Т(Мт) соот-
соответствуют четырем полиномам, из которых только три послед-
последних принадлежат PRS, порожденной р(х) и q(x). Таким образом,
9а:2 - 6а: - 3 = (-3)(-3а:2 + 2х + 1), где -За:2 + 2а: + 1 — остаток от
деления р(х) на q(x), -266х-112 = (-1)B66ж +112), а266а:+112 —
второй полиномиальный остаток и —980 — это gcd со знаком —.
346 Наибольшие общие делители полиномов и PRS
Из этого примера мы видим, что из Т(Мт), так же как из Г(Мв),
мы можем получить сведения только о наибольшем общем делителе
двух полиномов. Однако в случае полных PRS из Т(Мт) могут
быть получены противоположные к полиномиальным остаткам.
5.3.3. Гауссово исключение + результант в форме Сильвестра
= метод матричной триангуляризации субрезультантных PRS
До сих пор нам встречались результанты в формах Брюно и
Труди; в действительности в литературе обе эти формы обычно
называются формами Сильвестра. Однако мы будем называть
результантом в форме Сильвестра описываемый ниже результант;
эта форма была «погребена» в статье Сильвестра 1853 г. и упо-
упоминалась только в статье Ван Влека (Van Vleck, 1899). Сильвестр
указывает (с. 426 его статьи 1853 г.), что он получил эту форму в
1839 или 1840 г., а несколькими годами позже ее воспроизвел, не
зная о ней, также Кэли; Именно результант в форме Сильвестра
образует основу метода матричной триангуляризации субрезуль-
субрезультантных PRS.
Рассмотрим два полинома в Щх], р(х) = с„хп + cn^ixn~1 H \-со
и q(x) = dmx, m + dm_ia;m~1 + h rf0, с„ ф 0, dm ф 0, n ^ m. Тогда
результант в форме Сильвестра, ress[p(x), q(x)], имеет порядок 2п и
следующий вид [q(x) преобразован в полином степени п введением
нулевых коэффи"м»»тос]:
с„
dn
0
0
0
. 0
Cn-l
dn-i
Сп
dn
...
...
0 с„
0 dn
со
do
cn-i
dn-i
0
0
со
do
0
0
0
0
... o-
... 0
... 0
... 0
... c0
... d0.
(SI)
Сильвестр получил эту форму результанта (известную также
как элиминант) из системы уравнений
К*) = о,
q{x) = 0,
х ¦ q(x) = 0,
х2-р(х) = 0,
Метод матричной триангуляризации 347
x2 ¦ q(x) = 0,
x"~1.p(x) = 0,
xn-1-q(x) = 0
и указал, что если мы возьмем Jb пар из выписанных выше уравне-
уравнений, то наивысшая степень переменной х, появляющаяся в некото-
некотором из них, равна хп+к~1. Поэтому мы сможем исключить такое
количество степеней х, что хп~к будет наивысшей неисключенной
степенью и п — к будет степенью одного из членов последователь-
последовательности (Штурма) полиномов, противоположных (со знаком «минус»)
к полиномиальным остаткам, порожденной полиномами р(х) и q(x);
это доказано в теореме 5.3.4. Более того, Сильвестр показал, что
полиномиальные остатки, полученные таким образом, являются
тем, что он назвал упрощенными вычетами, т.е. коэффициенты
являются наименьшими из тех, что можно получить без вычис-
вычисления наибольших общих делителей целых чисел и без введения
рациональных чисел. Другими словами, полиномиальные остатки
освобождены от соответствующих распределенных сомножителей
(используя терминологию Сильвестра). (Этот факт очевиден пос-
после нашего обсуждения теоремы Габихта, поскольку единственные
коэффициенты, входящие в этот результант, — это коэффициенты
исходных полиномов, а не остатков.)
Пример. Рассмотрим полиномы pi(x) := р(х) = ж3 — 7х + 7 и
Р2(х) := q(x) = Зх2 - 7. Тогда
ress[p(a:),g(:E)] = det
и мы можем вычислить противоположные к коэффициентам первого
полиномиального остатка (степень которого п — к = 1), если
возьмем jfc = п — 1 = 2 пар строк. Таким образом, старший
коэффициент равен
1
0
0
0
0
0
0
3
1
0
0
0
-7
0
0
3
1
0
7
-7
-7
0
0
3
0
0
7
-7
-7
0
о -
0
0
0
7
_7_
det
Г1 0 -7 7
0 3 0-7
0 10-7
L0 0 3 0
= 3B1) -1-21 = 42,
348
Наибольшие общие делители полиномов и PRS
а второй коэффициент равен
det
•1
0
0
.0
0
3
1
0
-7
0
0
3
о -
0
7
-7.
= 3 • (-21) = -63,
т.е. первый полиномиальный остаток равен рэ(х) = 42а: — 63; от-
отметим разницу в знаках между рз(ж), вычисленным здесь, и р3(х),
вычисленным с использованием евклидова алгоритма PRS.
В качестве упражнения читателю предлагается вычислить
РА{х).
В общем случае, если имеется последовательность полиноми-
полиномиальных остатков Р1{х),р2(х),рз(х), ...,ph(x), deg[pi(a;)] = n,
deg[p2(:r)] = m, n ^ m, мы можем получить (противоположные)
коэффициенты (i + 1)-го члена PRS,» = 0,1,2,..., Л — 1, как миноры,
образованные первыми 2» строками матрицы (S1) с поочередным
приписыванием к первым 2» — 1 столбцам [B») х Bп)-матрицы]
каждого из оставшихся. Полиномы, образованные таким обра-
образом, пропорциональны полиномам, полученным с использованием
соответствующих процедур для результантов в формах Брюно
и Труди; более того, в случае неполных PRS полиномы следуют
образцу, данному на рис. 5.2.1 (доказательство дано ниже).
Но сих пор мы называли последовательность полиномиальных
остатков последовательностью Штурма, если, начиная с третьего
члена, коэффициенты каждого полиномиального остатка являют-
являются противоположными к коэффициентам полиномов, полученных
евклидовым алгоритмом PRS; это их главная характеристика.
Однако, как мы увидим в гл. 7 об отделении корней, последова-
последовательности Штурма обладают также следующим свойством: если
старший коэффициент какого-то члена равен нулю, то старшие
коэффициенты предыдущего и последующего членов (полиноми-
(полиномиальных остатков) имеют противоположные знаки.
Чтобы доказать, что члены PRS, полученные описанным выше
способом, составляют последовательность Штурма, нам понадо-
понадобится следующая
Лемма 5.3.3 ( мультипликативные правила для вычисления про-
произведения определителя на один из его миноров). Читателю
следует посмотреть (Muir, 1882, р. 118, Art. 90). Произведение
определителя на любой из его миноров М может быть выражено
Метод матричной триангуляризации 349
как сумма произведений пар миноров; эти пары формируются сле-
следующим образом. Первый сомножитель произведения получается
взятием 9 строк, включающих строки минора М, и формирова-
формированием затем каждого минора порядка q, содержащего М. Второй
сомножитель любого произведения — это минор, содержащий М
и дополнение до первого сомножителя. Наконец, знак любого
произведения задается так: второй сомножитель преобразуется
таким образом, чтобы его главная диагональ совпадала с глав-
главной диагональю двух указанных входящих в него миноров, после
этого нужно взять знак + или — в зависимости от того, будет ли
сумма номеров строк и столбцов, из которых сформирован первый
сомножитель, четной или нечетной.
Пример. Рассмотрим определитель
det
d\
0,2 а3 а4 а5"]
62 63 64 65
C2 С3 С4 С5
di d3 d4 db
e2 e3 c4 e5j
который мы обозначаем \aib2C3d4e5\, и его минор
deth Ч,
[с3 с4\'
который мы обозначаем \Ь3с4\. Тогда для двух различных мно-
множеств из q = 4 строк мы имеем
\b3cAd2\
Теорема 5.3.4 (Van Vleck, 1899). Рассмотрим в Щх\ полиномы
Pl(x) = cnx"+cn_ia;n-1 + --+с0 ир2(х) = dmxm+dm_1rm-1 + ---+do,
с„ ф 0, dm ф 0, n ^ m. Тогда последовательность полиномов,
образованных из первых 2г строк матрицы (SI), i = 1,2,..., п,
является последовательностью Штурма.
350
Наибольшие общие делители полиномов и PRS
Доказательство. Прежде всего заметим, что знаки старших ко-
коэффициентов полиномов, образованных из (S1), согласуются со
знаками соответствующих коэффициентов в остатках Штурма.
Поэтому нам достаточно доказать, что если старший коэффи-
коэффициент какого-либо члена равен нулю, то старшие коэффициенты
предыдущего и последующего полиномиальных остатков имеют
противоположные знаки. Для этого рассмотрим старшие коэффи-
коэффициенты любых трех последовательных полиномиальных остатков
?JJb-2>^2i,^2i+2, где Дь обозначает определитель k x Лг-матрицы,
образованной первыми к строками и столбцами матрицы (S1), и
умножим первый остаток на последний:
Поскольку 1Ь*-2 — минор матрицы Du+i, мы можем восполь-
воспользоваться леммой 5.3.3. Легко видеть, что первый определитель
Z>2t_2 можно взять в качестве минора матрицы Z?2t+2 несколькими
способами. Один из них состоит в том, чтобы опустить две первые
и две последние строки, а также первый и три последних столбца.
Затем мы выбираем в качестве q наших строк все строки с треть-
третьей по последнюю. Из определителей порядка q, которые можно
сформировать, чтобы получить 1Ь*-2, все кроме трех содержат
первый столбец, содержащий только нулевые элементы, следова-
следовательно, они обращаются в нуль. Оставшиеся три определителя
получены отбрасыванием кроме первого столбца еще последнего
столбца, или предпоследнего, или предпредпоследнего. Так по-
получаются первые сомножители из множества произведений пар
миноров; заметим, что первый равен D2k, а третий по лемме
5.3.3 должен быть умножен на D2k- Следовательно, если D2k — 0,
то нужно рассмотреть единственное произведение — оставший-
оставшийся определитель, умноженный на множитель, который, как легко
видеть, должен быть отрицательным. Поэтому Дг*-2 • ^2*+2 < 0,
если Zbi =0. П
Из приведенных выше рассуждений видно, что результант в
форме Сильвестра может дать нам последовательность Штурма
двух полиномов (последовательность их полиномальных остатков,
домножаемых на —1), являющуюся в общем случае полной пос-
последовательностью полиномиальных остатков. Более того, и это
наиболее существенно: для того чтобы найти коэффициенты, не
требуется вычислять определители. Это следует из того, что
в исходном определителе (S1) элементы любых двух последова-
последовательных строк совпадают с элементами двух предыдущих строк.
Метод матричной триангуляризации 351
Таким образом, если элементы какой-то строки изменены путем
добавления кратного предыдущей строки, то такая же замена
может быть выполнена с элементами всех соответствующих строк
через одну без изменения значения минора, появляющегося в ка-
качестве коэффициента в одном из полиномов последовательности
Штурма. Поэтому можно привести соответствующую матрицу к
верхней треугольной форме, пользуясь алгоритмом Лоджсона (D)
(см. разд. 5.3.1), не портя периодическую структуру определителя.
Таким образом, имеет место следующая
Теорема 5.3.5 (Van Vleck, 1899). Если мы приведем Ms, матрицу,
соответствующую результанту в форме Сильвестра, к верхней
треугольной форме T(Ms), то четные строки матрицы T(Ms)
дают коэффициенты последовательных полиномиальных остатков
(Штурма). Коэффициенты, взятые из данной строки, умножаются
на (—1)*, где к — число отрицательных «составляющих» на
главной диагонали выше рассматриваемой строки.
Ван Влек пользовался этой теоремой для вычисления полных
последовательностей полиномиальных остатков, обновляя однов-
одновременно только три строки и удаляя из каждого остатка наиболь-
наибольший общий делитель коэффициентов, вычисления которого мы
хотим избежать. Однако он не рассматривал задачу выбора веду-
ведущего элемента. В этом случае требуется проявлять осторожность
в определении знака коэффициентов при осуществлении выбора
ведущего элемента, поскольку этот выбор может менять знаки.
Рассмотрим следующий пример.
Пример. Пусть pi(x) = х3 - 7х + 7 и р2(х) = Зх2 - 7; тогда
Ms =
0 -21
-42
0
0
63
о-
0
0
0
196 -294
0 -49 J
Г1 0 -7 7 0 О"] rl 0 —7 7 0
030-7 00 030-7 0
0 1 0-7 7 0 , ,009
0 0 3 0-7 0 ^T(Ms)= о о о
0010-7 7 000
.00030 -7.1 L0 0 0
Помеченная ¦ строка означает, что при выборе ведущего элемента
поменялись местами третья и четвертая строки, а это значит, что
остатки Штурма суть 42а: - 63 и 49. Читателю следует вручную
выполнить соответствующую последовательность операций и за-
заметить, что до выбора ведущего элемента мы получили в третьей
строке элементы —14 и 21. Это ключевое наблюдение для ал-
алгоритмической реализации метода матричной триангуляризации
субрезультантных PRS.
352 Наибольшие общие делители полиномов и PRS
Замечание. Если мы рассмотрим строки обеих матриц этого
примера, то увидим, что каждая из них соответствует данному
полиному, степень которого на единицу меньше числа элементов,
заключенных между левыми и/или правыми нулями. Небольшая
сложность, которая может возникнуть при такой реализации,
состоит в том, что один или несколько коэффициентов при младших
степенях х могут быть нулевыми. В этом случае степень полинома
легко определить, рассматривая все строки верхней треугольной
матрицы. Однако эта проблема не возникает, если мы изменим
представление, используя, например, связные списки.
Все, что мы до сих пор сказали, относится к полным последо-
последовательностям полиномиальных остатков. Для того чтобы иметь
дело с неполными PRS, нам понадобится следующая теорема,
являющаяся нашим обобщением теоремы 5.3.5.
Теорема 5.3.6 (Akritas, 1986). Пусть pi{x) и р^(х) — два
полинома степеней пит соответственно, п ^ т. Пользуясь
алгоритмом Доджсона, приведем матрицу Ms, соответствующую
iess\pi(x),p2(x)], к верхней треугольной форме T(MS). Пусть
щ — степень полинома, соответствующего »'-й строке матрицы
T(MS), i = 1,2,...,2п, и пусть pt(x), k ^ 2, — k-й член (полкой
или неполной) последовательности полиномиальных остатков для
Р\(х) и Р2(х). Тогда если р*(ж) находится в г'-й строке матрицы
T(MS), то коэффициенты полинома р*+1(ж) получаются из i + j-й
строки матрицы T(Ms), где j — наименьшее целое, такое, что
ni+j < щ. [Если п = т, то и pi(x), и pi{x) ассоциируются с первой
строкой матрицы ()]
Доказательство. Доказательство основано на том, что элементы
любых двух последовательных строк в Ms те же самые, что в пре-
предыдущих строках, и что выполняется выбор ведущего элемента
методом пузырька. Предположим, что в ходе триангуляризации мы
получили Jb-й член PRS, Pk(x), из строки г, так что deg\pk{x)] = щ, и
что мы довели триантуляризацию до этой строки. На следующем
шаге процесса строка i не меняется, но предположим, что г + 1-я
строка изменилась таким образом, что n,+j = n,- -d, d > 1, и диаго-
диагональный элемент равен 0; пусть Pk+i(x) — полином степени n,- - d,
соответствующий этой строке. Этот полином является (к + 1)-м
членом PRS, но его положение в T(Mg) меняется, поскольку выпол-
выполняется выбор ведущего элемента методом пузырька, после чего
n;+i = щ (обоснуйте это). Этот процесс повторяется до тех пор,
пока старший коэффициент полинома p*+i(x) степени n,- — d не
Метод матричной триангуляризации 353
появится в точности на диагонали и нам не потребуется больше
выбирать ведущий элемент. Таким образом, в T(MS) за несколь-
несколькими строками, соответствующими полиномам степени П{, будет
следовать несколько строк, соответствующих полиномам степени
n,- — d. Первый из таких полиномов — это pk+i(x), коэффициенты
которого (к этому времени) значительно выросли в результате
большого количества преобразований. Поэтому если мы хотим,
чтобы коэффициенты полинома Pk+i(x) были наименьшими, мы
должны запомнить его, когда мы впервые встречаем его в строке
г + 1 (где впервые появляется разность степеней), и использовать
его в запомненном варианте, а не в том, в котором он появляется в
T(Ms). Читателю в качестве упражнения предлагается закончить
доказательство, т.е. определить, из какой строки будут получены
коэффициенты полинома р*+2(а:). ?
Заметим, что в качестве частного случая теоремы 5.3.6 мы по-
получаем теорему 5.3.5 для полных PRS. Мы видим, таким образом,
что на базе теоремы 5.3.6 мы имеем другой метод субрезультан-
тных PRS для вычисления последовательности полиномиальных
остатков и наибольшего общего делителя двух полиномов. Этот
метод, в котором не выполняется явное деление, с единой позиции
рассматривает как полные, так и неполные PRS и дает наименьшие
коэффициенты, которые можно ожидать без вычисления наиболь-
наибольших общих делителей коэффициентов. Как мы уже указывали в
разд. 5.1.1, в некоторых случаях коэффициенты меньше тех, кото-
которые получаются при использовании метода Сильвестра-Габихта
псевдоделения субрезультантных PRS.
Мы имеем следующий алгоритм (примеры были даны в
разд. 5.1.1).
ASPRS. Матричная триангуляризация субрезультантных PRS
(Matrix-Triangularization Subresultant PRS)
Вход: Два полинома в Щх], р\(х) = с„хп + Сп^х"'1 Н Ь с0 и
Р2{х) = dmxm + dn^x™-1 + ¦ ¦ • + d0, сп ф 0, dm ф 0, п > т.
Выход: Субрезультантная PRS полиномов pi(x) и р2(х).
1. [Инициализация] Сформировать матрицу Ms, соответствую-
соответствующую результанту ress[pi(z),p2(z)]-
2. [Основной шаг] Используя алгоритм Доджсона (D), описан-
описанный выше, привести Ms к верхней треугольной форме T(Mg).
Тогда члены PRS получаются из строк матрицы T(Ms) со-
согласно теореме 5.3.6.
2.3-27-1
354 Наибольшие общие делители полиномов и PRS
Анализ времени работы алгоритма ASPRS. Мы знаем, что
если п - наибольшая из степеней двух полиномов р\(х) и р<а{х),
то матрица Сильвестра Ms будет иметь размер 2п на 2п. Не
пользуясь преимуществами ленточной формы матрицы, мы видим,
что для приведения матрицы Ms к верхней треугольной форме
(используя метод Доджсона) нам нужно выполнить следующие
операции. На i-м шаге для каждой из оставшихся 2n — i строк мы
выполняем 2Bn- i) целочисленных умножения и Bn — i) вычитаний
и делений для определения получающихся элементов, которые не
обязательно равны нулю. Таким образом, общее число операций
в процессе триангуляризации равно
О
Пользуясь формулами
. k(k
.2 _
%
k(k
2)
6
мы видим, что общее число целочисленных умножений равно
О(п3). (Мы считаем только умножения, поскольку это наиболее
дорогие операции.)
Поскольку мы имеем дело с точной целочисленной арифмети-
арифметикой,-мы предполагаем, что в худшем случае-каждое целочисленное
умножение выполняется над наибольшими целыми числами, кото-
которые могут возникнуть. Эти наибольшие числа могут достигать
значения tess\pi{x),p2(x)]. Пользуясь неравенством Адамара, по-
получаем
П ( ? гЬ
где |p(ar)|oo = max(|pi(x)|oo, |р2(жI°о)- Таким образом, время умно-
умножения Bп)" • (|р(е)|ооJ" на се^я равно
L2{Bnr[\p(x)U2n} = {nLBn) + 2nL(|p(x)|oo)]}2 ~ n42[\p(x)U,
а поскольку имеется О(п3) таких умножений, мы получаем
Сравнение двух методов субрезультантних PRS 355
Таким образом, мы видим, что теоретически время работы ме-
метода матричной триангуляризации субрезультантных PRS больше
времени работы метода Сильвестра-Габихта псевдоделения суб-
субрезультантных PRS. В следующем разделе мы дадим некоторые
эмпирические результаты и сравнения.
ЪЛ
Эмпирическое сравнение двух методов субрезультантных
PRS
В этом разделе мы рассматриваем десять примеров (Ander-
(Anderson, 1986). Каждый раз мы начинаем с краткого рассмотрения
существенных аспектов данного примера, а затем следуют пос-
последовательности полиномиальных остатков, порожденные каждым
методом субрезультантых PRS. Лля метода Сильвестра-Габихта
псевдоделения мы даем две (иногда различные) последовательнос-
последовательности, получающиеся из двух различных алгоритмов, обсуждавшихся
в разд. 5.2. Число в скобках в правом конце каждой строки — это
степень полинома; для метода матричной триангуляризации этот
полином соответствует заданной строке. Выписываются толь-
только коэффициенты при различных степенях х, первым появляется
коэффициент, соответствующий наивысшей степени х.
В конце каждого метода приводится наибольшее (по абсолют-
абсолютной величине) целое число, получающееся при псевдоделении, в
скобках дается количество цифр в нем. Это наибольшее значение,
порождаемое соответствующим методом для соответствующего
примера. В алгоритмах PRS Сильвестра (S') и Габихта (Н) это
значение должно размещаться в памяти до того, как его разделят.
В методе матричной триангуляризации это значение делится до
того, как размещается в памяти. Это целое число приводится,
потому что коэффициенты членов PUS могут быть достаточно ма-
малыми, хотя в действительности для их получения использовались
целые числа гораздо большего размера.
Результаты, полученные с помощью алгоритмов PRS Сильвест-
Сильвестра и Габихта, просто отражают порождаемые последовательности
полиномиальных остатков. Метод матричной триангуляризации,
однако, требует приведения Ms, матрицы, соответствующей ре-
результанту в форме Сильвестра, к верхней треугольной форме
T(Ms). Лается только T(Ms), в самом левом столбце указыва-
23*
356
Наибольшие общие делители полиномов и PRS
ются номера строк. Как мы уже отмечали, каждой строке соот-
соответствует полином, степень которого на единицу меньше числа
элементов, заключенных между старшими и/или конечными нуля-
нулями. Символ «#», предшествующий номеру строки, указывает, что
для этой строки осуществлялся выбор ведущего элемента. Для
определения членов PRS мы просматриваем сверху вниз самый
правый столбец (степени) и из данного множества строк «степени
d» выбираем полином, соответствующий первой из них, в качестве
следующего члена PRS. Знак «>» после номера строки (в самом
левом столбце) означает, что эта строка может быть членом PRS
при условии, что не осуществляется выбор ведущего элемента. Ес-
Если выполняются преобразования, связанные с выбором ведущего
элемента, то соответствующая строка запоминается и распеча-
распечатывается под матрицей Г(Мд), а также отмечается знаком «>»
после номера строки. В этом случае мы сравниваем коэффициен-
коэффициенты запомненной строки с коэффициентами первой строки в T(Ms),
имеющей ту же степень, и выбираем ту, коэффициенты которой
меньше, в качестве нового члена PRS. (См. также доказательство
теоремы 5.3.6 и историческое замечание 4.)
Пример 1. Это классический пример неполной PRS, исполь-
используемый в литературе Кнутом (Knuth, 1981) и Брауном (Brown,
1971).
Метод Силъвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
рA) = 1 0 10 -3 -3 8 2 -5 (8)
рB) = 3050-4-921 F)
рC) = -15 03 0 -9 D)
рD) = 585 1125 -2205 B)
рE) = -18885150 24907500 A)
= 527933700 @)
Наибольшее целое число, порождаемое алгоритмом, равно
786410803602112500 A8 цифр).
Сравнение двух методов субрезультантных PRS 357
Ь. Алгоритм Габихта субрезультантных PRS
(8)
F)
D)
B)
A)
@)
( =1010-3-382-5
рB) = 30 5 0 -4-9 21
рC) = -15 03 0 -9
рD) = -65 - 125 245
рE) = -9326 12300
рF) = 260708
Наибольшее целое число, порождаемое алгоритмом, равно
21308697620 A1 цифр).
Метод матричной триангуляризации субрезультантных PRS
1>1010 -3 -382 -50000000 (8)
#2) 01010-3-382-5000000 (8)
3>003050-4-9 21 0000000 F)
4) 0 0 0 9 0 15 0 - 12 - 27 63 0 0 0 0 0 0 F)
5H000-60-15 09 18-45 00000 F)
#6) 0 0 0 0 0 4 0 10 0 - 6 - 12 30 0 0 0 0 F)
7>000000 — 10 020 —600000 D)
8) 0000000 25 0-50 15 0000 D)
9) 0 0 0 0 0 0 0 0 - 45 0 35 50 - 125 0 0 0 D)
#10) 0 0 0 0 0 0 0 0 0 81 0 - 63 - 90 225 0 0 D)
И > 0 0 0 0 0 0 0 0 0 0 - 117 - 225 441 0 0 0 B)
12) 0 0 0 0 0 0 0 0 0 0 0 169 325 - 637 0 0 B)
13) 000000000000 - 2035 2543 - 845 0 B)
14>0000000000000 9326 - 12300 0 A)
15) 00000000000000 -7778 -46630 A)
16>000000000000000 - 260708 @)
Наибольшее целое число, порождаемое алгоритмом, равно
2431362808 A0 цифр). При преобразовании 2, выбирая ведущий
элемент, изменяем строку 2. Запоминаем строку
2> 003050 -4 -9 21 0000000 F)
358 Наибольшие общие делители полиномов и PRS
При преобразовании 6, выбирая ведущий элемент, изменяем стро-
строку б. Запоминаем строку
6> 000000 15 0 -30900000 D)
При преобразовании 10, выбирая ведущий элемент, изменяем
строку 10. Запоминаем строку
10 > 0 0 0 0 0 0 0 0 0 0 65 125 - 225 0 0 0 B)
Читателю следует отметить, что в данном примере член второй
степени PUS получается не из матрицы T(Ms), а из запомненной
строки, напечатанной под ней. Этот факт в следующих примерах
не подчеркивается.
Пример 2. Это — небольшой пример неполной PRS.
Метод Силъвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
2 5 5 -2 1 D)
рB) = 333-4 C)
рC) = -21 45 A)
рD) = -47049 @)
Наибольшее целое число, порождаемое алгоритмом, равно
37044 E цифр).
Ь. Алгоритм Габихта субрезультантных PRS
D)
C)
A)
@)
= 255-21
рB) = 333-4
рC) = -21 45
рD) = 15683
Наибольшее целое число, порождаемое алгоритмом, равно
37044 E цифр).
Сравнение двух методов субреэультантных PRS 359
Метод матричной триангуляризации субреэультантных PRS
1>255 -21000 D)
2>0333-4000 C)
3) 0 0 9 9 2 3 0 0 C)
#4) 0 0 0 27 41 - 24 9 0 C)
5 > 0 0 0 0 63 - 135 0 0 A)
6) 0 0 0 0 0 147 - 315 0 A)
7H 00 0 00 3068 147 A)
8>0000000 - 15683 @)
Наибольшее целое число, порождаемое алгоритмом, равно
2305401 G цифр). При преобразовании 4, выбирая ведущий
элемент, изменяем строку 4. Запоминаем строку
4 > 0 0 0 0 21 - 45 0 0 A)
Пример 3. Пример полной PRS, где deg[pi(a:)] = deg[p2(z)];
заметим, что свободный член полинома рз(х) равен нулю.
Метод Сильвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
= 21435-22 (в)
рB) = 1-1-14-211 F)
рC) = 3 6 - 5 9 - 4 0 E)
рD) = 60 - 36 75 - 27 9 D)
рE) = -1628 240 - 376 - 468 C)
рF) = 42067 - 27959 12373 B)
рG) = -304996 -147119 A)
р(8) = 1873839 @)
Наибольшее целое число, порождаемое алгоритмом, равно
3913180032193072 A6 цифр).
360 Наибольшие общие делители полиномов и PRS
Ъ. Алгоритм Габихта субрезультантных PRS
рA) = 21435-22 F)
рB) = 1-1-14-211 F)
рC) = 36-59-40 E)
рD) = 60 - 36 75 - 27 9 . D)
рE) = -1628 240 - 376 - 468 C)
, рF) = 42067 - 27959 12373 B)
рG) =-304996 -147119 A)
р(8) = 1873839 @)
Наибольшее целое число, порождаемое алгоритмом, равно
3913180032193072 A6 цифр).
Метод матричной триангуляризации субрезультантных PRS
1>21435 -2200000 F)
2>0-3-65-94000000 E)
3) 0 0 9 - 22 9 - 23 6 - 6 0 0 0 0 E)
4) 0 0 0 - 60 36 - 75 27 - 9 0 0 0 0 D)
5) 0 0 0 0 - 332 - 45 - 379 93 - 120 0 0 0 D)
6 > 0 0 0 0 0 - 1628 240 - 376 - 468 0 0 0 C)
7) 000000 - 2549 - 8203 5113 - 3256 0 0 C)
8>0000000 42067 - 27959 12373 0 0 B)
9) 00000000 255739 - 151491 84134 0 B)
10>000000000 304996 147119 0 A)
И) 0000000000 - 1992731 609992 A)
12>00000000000 - 1873839 @)
Наибольшее целое число, порождаемое алгоритмом, равно
571513399644 A2 цифр). Заметим, что полином Рг(я) не появ-
появляется в T(Ms).
Сравнение двух методов субрезультантных PRS 361
Пример 4. Пример полной PRS, использованный Ван Влеком.
Метод Сильвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
рA) = 11-1-11-11 F)
рB) = 65-4-32-1 E)
рC) = -17 - 14 27 - 32 37 D)
рD) = 44 - 114 120 - 7 C)
рE) = -516 828 186 B)
рF) = 9108 -3114 A)
рG) = 127359 @)
Наибольшее целое число, порождаемое алгоритмом, равно
68687289792 (И цифр).
Ь. Алгоритм Габихта субрезультантных PRS
рA) = 11-1-11-11 F)
рB) = 65-4-32-1 E)
рC) = -17 - 14 27 - 32 37 D)
рD) = 44 - 114 120 - 7 C)
рE) = -516 828 186 B)
рF) = 9108 -3114 A)
рG) = 127359 @)
Наибольшее целое число, порождаемое алгоритмом, равно
68687289792 (И цифр).
Метод матричной триангуляризации субрезультантных PRS
1>11 -1-11 -1100000 F)
2>065 -4 -32 -100000 E)
3H01 -2 -34-560000 E)
4 > 0 0 0 17 14 - 27 32 - 37 0 0 0 0 D)
362 Наибольшие общие делители полиномов и PRS
5H000-8-46-8 17 000 D)
б > 0 0 0 0 0 - 44 114 - 120 7 О О О C)
7) 0 0 0 0 0 0 64 - 72 24 -44 О О C)
8) О О О О О О О - 516 828 186 О О B)
9) О Q 0 0 0 0 0 0 360 552 - 516 0 B)
10>000000000 9108 - 3114 О A)
11) 0000000000 - 11916 9108 A)
12>00000000000 - 127359 @)
Наибольшее целое число, порождаемое алгоритмом, равно
1159985772 A0 цифр).
Пример 5. В этом примере неполной PRS имеется уменьшение
степени ее членов на 3 (с 7 до 4), и это единственный представ-
представленный пример, требующий выбора ведущего элемента методом
пузырька в методе матричной триангуляризации, т.е. в выборе
ведущего элемента участвуют строки, не являющиеся соседними.
Метод Сильвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
рA) = 357 -3 -5 -7357 -2
рB) = 100 -100 -1 -1 -1
рC) = 700 -76 13 15 3
рD) = -42 - 91 - 154 - 70 - 49
(9)
(8)
G)
D)
рE) = -3146045 - 3785054 - 1840832 - 1391747 C)
рF) = -256801797 - 88236211 - 98913311 B)
рG) = 1999255468 - 2333396170 A)
р(8) = -33438950636 @)
Наибольшее целое число, порождаемое алгоритмом, равно
1026442541730304580597746128 B8 цифр).
Сравнение двух методов субрезультантных PRS 363
Ь. Алгоритм Габихта субрезультантных PRS
рA) = 357-3-5-7357-2 (9)
рB) = 100-100-1-1-1 (8)
рC) = 700—76 13 15 3 G)
рD) = -42 - 91 - 154 - 70 - 49 . D)
рE) = -64205 - 77246 - 37568 - 28403 C)
рF) = -5240853 - 1800739 - 2018639 B)
рG) = 40801132 -47620330 A)
р(8) = -682427564 @)
Наибольшее целое число, порождаемое алгоритмом, равно
8724617648516388414672 B2 цифры).
Метод матричной триангуляризации субрезультантных PRS
1>357 -3 -5 -7357 -200000000
2>О1ОО -1ОО -1 -1 -1OO0O00OO
3) 00570 -5 -768 10 -20000000
4>О0О -7007 -6 -13 -15 -30000000
5) ОООО - 49 О О 79 23 19 -55 14 ОООООО
#6) ООООО - 343 0 - 24 501 73 93 - 413 98 О О О О О
(9)
(8)
(8)
G)
G)
G)
#7) ОООООО - 2401 - 510 - 1273 1637 - 339 56 - 2891 686 О О О О G)
8>О0ОООО0 2058 4459 7546 3430 2401 ОООООО D)
9) 00000000 - 1764 - 3822 - 6468 - 2940 - 2058 ООООО D)
10) 0ОО00ОО00 1512 3276 5544 2520 1764 0 0 0 0 D)
11) ОООООООООО 25811 - 18982 4520 - 811 - 3024 0 0 0 D)
12>О0000000О0О - 64205 - 77246 - 37568 - 28403 0 0 0 C)
13) 000000000000 2124693 449379 519299 128410 0 0 C)
14>О0О0ОО0ОООООО - 5240853 - 1800739 - 2018639 О О B)
15) ОООООО00ООО00О - 22909248 - 24412716 10481706 О B)
16>000000000000000 - 40801132 47620330 0 A)
17) 0000000000000000 - 398219984 81602264 A)
18>00000000000000000 682427564 (О)
364
Наибольшие общие делители полиномов и PRS
Наибольшее целое число, порождаемое алгоритмом, равно
27843817119202448 A7 цифр). При преобразовании 6, выбирая
ведущий элемент, изменяем строку 6. Запоминаем строку
6 > 0 0 0 0 0 0 0 42 91 154 70 49 0 0 0 0 0 0 D)
При преобразовании 7, выбирая ведущий элемент, изменяем стро-
строку 7. Запоминаем строку
7) 0 0 0 0 0 0 0 294 637 1078 490 343 0 0 0 0 0 0 D)
Заметим, что, поскольку степень запоминаемой строки 7 совпа-
совпадает со степенью запоминаемой строки 6, последняя не является
членом PRS.
Пример 6. Это — пример PRS, в которой deg[pi(z)] и deg[p2(z)]
отличаются более, чем на 1.
Метод Сильвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
B)
A)
@)
= 3 4 0 -7 0 -9 1 -1 2 (8)
рB) = 3 12 0 - 7 0 1 E)
рC) = 39960 5238 -23895 -945 3618 D)
рD) = 5371812 226170 56430 -1003068 C)
рE) = -442106115 117089757 77380134
Кб) = 9708643482 -4839461901
рG) = 12487585839
Наибольшее целое число, порождаемое алгоритмом, равно
41671931313194660832971041260 B9 цифр).
Ь. Алгоритм Габихта субрезультантных PRS
рA) = 3 40-70-91-12
рB) = 3 12 0 - 7 0 1
рC) = 39960 5238 -23895 -945 3618
рD) = 5371812 226170 56430 -1003068 C)
рE) = -442106115 117089757 77380134 B)
Кб) = 9708643482 -4839461901 A)
рG) = 12487585839 @)
(8)
E)
D)
Сравнение двух методов субрезультантных PRS 365
Наибольшее целое число, порождаемое алгоритмом, равно
41671931313194660832971041260 B9 цифр).
Метод матричной триангуляризации субрезультантных PRS
1>340 -
#2H 3 4 0
#3H 0 3 4
4 >0 0 0 3
5H 0 0 0
6H 0 0 0
7H 0 0 0
8 >0 0 0 0
9H 0 0 0
10 >0 0 0 0
11H 0 0 0
12>0 0 0 0
13H 0 0 0
14 >0 0 0 0
15H 0 0 0
16 >0 0 0 0
-70 -9 1 -120000000
-70 -91 -12000000
0 -70 -9 1 -1200000
12 0 -70 10 0 00 000
9 36 0 -21 03000000
0 27 108 0 - 63 0 9 0 0 0 0 0
0 0 - 3456 - 504 1746 99 - 315 54 0 0 0 0
(8)
(8)
(8)
E)
E)
E)
E)
0 0 0 - 39960 - 5238 23895 945 - 3618 0 0 0 0 D)
0 0 0 0 75456 474480 - 25560 3096 - 79920 0 0 0 D)
0 0 0 0 0 - 5371812 - 226170 - 56430 1003068 0 0 0 C)
0 0 0 0 0 0 63357144 -3542580 2310276 -10743624 0 0 C)
0000000 - 442106115 117089757 77380134 0 0 B)
00000000 1089441759 1102788303 - 884212230 0 B)
000000000 9708643482 - 4839461901 0 A)
0000000000 - 36142658547 19417286964 A)
00000000000 - 12487585839 @)
Наибольшее целое число, порождаемое алгоритмом, равно
121237518861722851398 B1 цифра). При преобразовании 2, вы-
выбирая ведущий элемент, изменяем строку 2. Запоминаем строку
2> 0003 12 0 -7010000000 E)
При преобразовании 3, выбирая ведущий элемент, изменяем стро-
строку 3. Запоминаем строку
3) 0003 12 0 -7010000000 E)
366
Наибольшие общие делители полиномов и PRS
Пример 7. Еще один пример небольшой неполной PRS.
Метод Силъвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
рA) = 1 5 10 5 5 2 E)
рB) = 14 6 2 1 D)
рC) = -321 B)
рD) = -266 - 112 A)
рE) = 980 @)
Наибольшее целое число, порождаемое алгоритмом, равно
212268 F цифр).
Ь. Алгоритм Габихта субрезультантных PRS
рA) = 1 5 10 5 5 2 E)
рB) = 14 6 2 1 D)
рC) = -321 B)
рD) = -266 -112A)
рE) = 980 @)
Наибольшее целое число, порождаемое алгоритмом, равно
212268 F цифр).
Метод матричной триангуляризацьи субрезультантных PRS
1 > 1 5 10 5 5 2 0 0 0 0 E)
2>0146210000 D)
3) 0 0 1 4 3 4 2 0 0 0 D)
#4) 0 0 0 1 7 1 3 2 0 0 D)
5>00003 -2 -1000 B)
6) 000009-6-300 B)
7) 0 0 0 0 0 0 58 50 18 0 B)
8> 0 00000 0 -266 -112 0A)
9) 0 0 0 0 0 0 0 0 - 756 - 532 A)
10 > 0 0 0 0 0 0 0 0 0 - 980 @)
Сравнение двух методов субрезультантных PRS 367
Наибольшее целое число, порождаемое алгоритмом, равно
260680 F цифр).
При преобразовании 4, выбирая ведущий элемент, изменяем
строку 4. Запоминаем строку
4> 00003 -2 -1000 B)
Пример 8. В этом примере неполной PRS нуль появляется в
качестве свободного члена полинома рз(я).
Метод Сильвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
рA) = 235 - 2 - 1 D)
рB) = 112-1 C)
рC) = -2 0 A)
РD) = 8 @)
Наибольшее целое число, порождаемое алгоритмом, равно
16 B цифры).
Ь. Алгоритм Габихта субрезультантных PRS
рA) = 235 - 2 - 1 D)
рB) = 112-1 C)
рC) = -2 0 A)
рD) = 8 @)
Наибольшее целое число, порождаемое алгоритмом, равно
16 B цифры).
Метод матричной триангуляризацип субрезультантных PRS
1 > 2 3 5 -2 -1000 D)
2>0112 —1000 C)
3) 0 0 1 1 0 - 1 0 0 C)
#4) 0 0 0 1 5 0 - 1 0 C)
5>00002000 A)
6) 0 0 0 0 0 4 0 0 A)
#7H0 0 0 00 8-4 A)
8>0000000-8 @)
368 Наибольшие общие делители полипомов и PRS
Наибольшее целое число, порождаемое алгоритмом, равно
32 B цифры).
При преобразовании 4, выбирая ведущий элемент, изменяем
строку 4. Запоминаем строку
4> 0000 2 00 0 A)
При преобразовании 7, выбирая ведущий элемент, изменяем стро-
строку 7. Запоминаем строку
7> 0000000 -4 @)
Пример 9. Здесь полиномы не являются взаимно простыми.
Метод Сильвестра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
= 67 - 3 16 20 8 17 6 18 (8)
рB) = 2 13 1-29-73 G)
рC) = -56 28 96 - 60 80 44 48 F)
рD) = 5824 1792 -1008 10528 -2912 3696 E)
рE) = 782976 530624 -321920 1104896 208704 D)
рF) = 51455488 25727744 -25727744 77183232 C)
Наибольшее целое число, порождаемое алгоритмом, равно
2925396948683036033024 B2 цифры).
Ь. Алгоритм Габихта субрезультантных PRS
= 6 7 -3 16 20 8 17 6 18 (8)
рB) = 2 13 1-29-73 G)
рC) = -56 28 96 -60 80 44 48 F)
рD) = 5824 1792 -1008 10528 -2912 3696 E)
рE) = 782976 530624 -321920 1104896 208704 D)
рF) = 51455488 25727744 -25727744 77183232 C)
рG) = 0
Сравнение двух методов субрезулътантных PRS
369
Наибольшее целое число, порождаемое алгоритмом, равно
2925396948683036033024 B2 цифры).
Метод матричной триангуляризации субрезультантных PRS
1 > 6 7 -3 16 20 8 17 6 18 0000000
2>02131 -29-730000000
3H08 -24 26 52 -38 76 -636000000
4 > О О О 56 -28 -9660 -80 -44 -48000000
5) 0 0 0 0 - 560 1112 1216 - 744 2304 24 1008 0 0 0 0 0
(8)
G)
G)
F)
F)
6>00000 - 5824 - 1792 1008 - 10528 2912 - 3696 0 0 0 0 0 E)
7) О О О О О О -133568 -116384 -27904 -210496 -39456 -104832 ОООО E)
8>0000000 782976 530624 - 321920 1104896 208704 0 0 0 0 D)
9) 00000000 3477248 11134336 2959232 518016 14093568 ООО D)
10>000000000 51455488 25727744 - 25727744 77183232 0 0 0 C)
11) 0000ООО000 617465856 308732928 - 308732928 926198784 О О C)
#12 >0О000ОО0ООО00000 @)
13) ОООООООООООООООО (О)
14) 0000000000000000 (О)
15) ОООООООООООООООО (О)
16) ОООООООООООООООО (О)
Наибольшее целое число, порождаемое алгоритмом, равно
571896124988719104 A8 цифр).
Пример 10. Пример поменьше, где полиномы снова не взаимно
просты.
Метод Сильв естра-Габихта псевдоделения субрезультантных
PRS
а. Алгоритм Сильвестра редуцированных (субрезультантных)
PRS
24-274
= 2 - 1 - 14 17 - 5 D)
рB) = 6-74-1 C)
370 Наибольшие общие делители полиномов и PRS
рC) = -496 592 - 172 B)
рD) = 14432 - 7216 A)
рE) = 0
Наибольшее целое число, порождаемое алгоритмом, равно
123303313408 A2 цифр).
Ъ. Алгоритм Габихта субрезультантных PRS
рA) = 2 - 1 - 14 17 - 5 D)
рB) = 6-74-1 C)
рC) = -496 592 - 172 B)
рD) = 14432 - 7216 A)
рE) = 0
Наибольшее целое число, порождаемое алгоритмом, равно
123303313408 A2 цифр).
Метод матричной триангуляризации субрезультантных PRS
1 > 2 - 1 - 14 17 - 5 0 0 0 D)
2>06 -74 -1000 C)
3) 0 0 8 - 92 104 - 30 0 0 C)
4 > 0 0 0 496 - 592 172 0 0 B)
5) 0 0 0 0 - 6816 8368 - 2480 0 B)
6 > 0 0 0 0 0 - 14432 7216 0 A)
7) 000000 - 144320 72160 A)
8>00000000 @)
Наибольшее целое число, порождаемое алгоритмом, равно
983685120 (9 цифр).
Мы дадим сейчас табл. 5.4.1, суммирующую информацию о
наибольших целых числах, участвующих в операциях деления, в
каждом из рассмотренных примеров при обоих методах. Заметим,
что метод матричной триангуляризации порождает наименьшие
«наибольшие целые».
Упражнения 371
Таблица 5.4.1
Число цифр в наибольшем из участвующих в делении чисел
Пример
1
2
3
4
5
6
7
8
9
10
Метод PRS Сильвестра-Габихта
Алгоритм
PRS
Сильвестра
18
5
16
11
28
29
6
2
22
12
Алгоритм
PRS
Габихта
11
5
16
И
22
29
6
2
22
12
Метод
матричной
триангуляри-
триангуляризации PRS
10
7
12
10
17
22
6
2
18
9
Упражнения
Раздел 5.1.1
1. Вычислите псевдочастное q(x) и псевдоостаток г(х), если
pi(x) — х3 — Зх + 1 и р2(х) = Зх2 — 3. Чему равен их
наибольший общий делитель? Сделайте то же самое для
полиномов рх(х) = х3 - 6х2 + 8х + 40 и р2(х) = Зх2 - 12х + 8.
2. Пусть г(х) — псевдоостаток от псевдоделения полинома
pi(x) na.p2(x). Докажите, что если deg[pi(a;)] ^ deg\p2(x)]+2
и deg[p2(*)] ^ deg[r(ar)] + 2, то г(х) — кратное полинома
Раздел 5.1.2
1. Опишите своими словами различие между М и Ml.
2. Используя один из модулярных алгоритмов вычисления
gcd, описанных в тексте, вычислите наибольший общий
делитель полиномов:
24*
372 Наибольшие общие делители полиномов и PRS
a. pi(x) = 6х4 - 24х3 + 42х2 - 32* + 11 и р2(х) = 24х3 -
72х2 + 84х - 32.
b. Р1(х) = 16х4 - 32х3 + 88х2 - 8х + 17 и рг(*) = 64х3 -
Эб*2 + 176* - 8.
с. pi{x) = х4 + 2х3 - Ах + 10 и рг(х) = 4х3 + 6<г2 - 4.
Раздел 5.2.1
1. Пользуясь теоремой 5.2.1 и следующими примерами этого
раздела, вычислите последовательность полиномиальных
остатков для полиномов:
a. рг(х) = 2х3 - Зх2 + Ах - 1 и р2(х) = 6х2 - 6х + 4.
b. р1(х) = х4-х3 + Зх2-2*+1ир2(х) = 4х3-Зх2+6х-2.
c. pi(x) = х5+х4-2х3-2х2+4 ир2(х) = 5х4+4х3-6х2-4х.
d. pi(x) = х7 - xs - 8х2 + 3 и рг(х) = 7х6 - 5х4 - 16г.
Раздел 5.2.2
Упр. 1 чрезвычайно важно для досконального понимания сле-
следующего раздела; однако оно слишком длинное и трудоемкое
(для проверки арифметических вычислений пользуйтесь системой
компьютерной алгебры).
1. Используя Мв, матрицу, соответствующую результанту
ieaB\p1(x),p2(x)], где Pl(x) = Зх9 + 5аг8 + 7х7 - Зх6 - Ьхь -
7х4 + Зх3 + 5*2 + 7х - 2 и р2(х) = х8 - х5 - х2 - х - 1,
и метод, кратко описанный в тексте, вычислите члены
(неполной) последовательности полиномиальных остатков.
Какой вывод вы можете сделать? (Указание. Следуйте
примеру, предшествующему теореме 5.2.4.) Сравните PRS,
полученную таким образом, с PRS, полученной методом
Сильвестра.
2. Из теоремы 5.2.4 видно, что результант может быть вы-
вычислен с помощью того же самого процесса, который
используется для нахождения наибольшего общего дели-
делителя двух полиномов. Найдите результант полиномов
pi(x) = х4 - х3 + 2х2 - Зх + 1 и рг(х) = х3 - 2*2 + Зх - 1.
3. Докажите теорему 5.2.9.
4. Вычислите дискриминант полинома р(х) = х2 + ах + Ь.
Упражнения 373
Дополнительные формы результанта (известные также как
элиминанты,) (см. с. 31-42 в книге Salmon G. Modern Higher Algebra.
Hodges, Smith and Co., Dublin, 1859).
5. Докажите основное предложение теории исключения (см.
также приложение): Лана система тг однородных линейных
уравнений от тг неизвестных, АХТ = ОТ. Эта система
имеет нетривиальное решение (т.е. отличное от х\ — • ¦ • =
хп = 0) тогда и только тогда, когда определитель матрицы
коэффициентов А обращается в нуль (т.е. |А| = 0).
6. (Результант в форме Эйлера.)
a. Пусть pi(x) = 0 и р2(х) = 0 — два полиномиальных
уравнения степеней тип соответственно. Если
полиномы pi(x) и р2 имеют общий сомножитель, про-
произведение р\(х) на оставшиеся сомножители полинома
рг(х) равно произведению рг(х) на оставшиеся сом-
сомножители полинома pi(x). Используйте этот факт и
упр. 5, чтобы получить детерминантную форму ре-
результанта полиномов pi(x) и рг(я)- (Указание. См.
обсуждение, следующее за теоремой 5.2.4.)
b. Пусть pi(x) = ах2 + 6х-(-сир2(х) = a'x2 + b'x + cJ —два
полиномиальных уравнения, оба степени 2. Используя
(а), вычислите детерминантную форму результанта.
7. (Диалитическое разложение Сильвестра; результаты сов-
совпадают с результатами Эйлера. Историческое замеча-
замечание: в тексте получающийся определитель мы называем
по имени итальяно-французского математика Ли Брюно.)
Основная идея здесь — рассматривать все индивидуаль-
индивидуальные мономы (термы) полинома как независимые переменные
(например, х2 и х берутся как независимые переменные).
Порождается некоторое число дополнительных уравне-
уравнений простым умножением исходных уравнений на хорошо
подобранные мономы, так что общее число уравнений
равняется общему числу мономов, а затем применяется
упр. 5.
а. Пусть pi(x) = 0 и Рг(х) = 0 — два полиномиальных
уравнения степеней шип соответственно. Домножим
pi(x) (степени т) на х", хп~2,... , ар2(х) (степени п)
на хт~1, хт~2, ... \ таким образом, мы получим т + п
уравнений отш + п неизвестных (xm+n~1, xm+n~2,...)
или, эквивалентно, уравнение Ахт = 0т, где х =
(rm+n-1,x"H"n-2,...)_ а А — матрица с т + п строками
374 Наибольшие общие делители полиномов и PRS
и столбцами. Примените упр. 5, чтобы получить
детерминантную форму результанта полиномов Pi(x)
тлр2(х).
Ь. Пусть pi(x) = ax2-\-bx + c и рг(аг) = а'х2 + Ь'х + с? — два
полиномиальных уравнения, оба степени 2. Используя
п. а, вычислите детерминантную форму результанта;
чем она отличается от формы 6Ь?
8. (Результант в форме Безу.) Здесь мы применяем те же
основные идеи, что и в упр. 7, т.е. из исходных двух
полиномов мы формируем множество s уравнений от s не-
неизвестных. Определитель теперь имеет меньше элементов,
чем раньше, но каждый элемент получается более сложным
способом. Этот подход лучше объяснить на примере.
а. Пусть р\(х) = ах3 + Ьх2 + сх + d и рг(«) = о'г3 + Ь'х2 +
с* я + d' — два полинома степени 3. Наша цель — полу-
получить три уравнения от независимых переменных х2, х
и 1. После умножения рх(х) на а', рг(«) на о и вычи-
вычитания первые слагаемые в каждом полиноме взаимно
уничтожатся. Если мы воспользуемся обозначением
(i,f) = if — i'j, то первое уравнение —
аР2(х) - a1 nix) = (а, б')*2 + (а, с')х + (a, d') = 0.
Затем, после умножения рх(х) на (а'х + Ь), р2(х) на
(ах + 6) и вычитания первые два слагаемых в каж-
каждом полиноме взаимно уничтожатся, и мы получаем
уравнение
(ах + Ь)р2(х) - (а'х + b')Pi(x)
= (а, с')х2 + [(a, df) + (Ь, с')]* + (Ь, df)
= 0.
Подобным же образом мы получаем последнее урав-
уравнение
(ах2 +Ьх + с)Р2(х) - (а'х2 + Ь'х + c')Pl(x)
= 0.
т = 0т
Ясно, что мы получили уравнение Ахт = 0т, где
х = (х2,х,1), а А — матрица с 3 строками и стол-
столбцами. Примените теперь упр. 5, чтобы получить
Упражнения 375
детерминантную форму результанта полиномов Р\(х)
и р2(х).
Ь. Пусть р\(х) = ах2 + Ьх + с и рг(х) = а'х2 + Ь'х + с' — два
полиномиальных уравнения, оба степени 2. Используя
п. а, вычислите детерминантную форму результанта;
что случится, если степени не совпадают?
9. (Вариант Кэли метода Безу.)
Все необходимые дополнительные полиномы порожда-
порождаются теперь за один проход, без необходимости находить
дополнительные множители. Как и ожидается, снова при-
применяется упр. 5.
а. Пусть pi(x) = 0 и р2(х) = 0 — два полиномиальных
уравнения степеней тип соответственно. Заметим,
что если р\(х) и р2(х) имеют общий корень х = хо, то
он будет корнем уравнения
Pi{x)P2(a) - pi(a)p2(x) = 0
для любого значения а. Это уравнение удовлетворя-
удовлетворяется при х = а (даже если нет общего корня), поэтому
выписанное выражение должно содержать (х — а) в
качестве сомножителя. Разделив это выражение на
(х — а), мы получим полином с мономами от 1, а, а2,
... , где коэффициент при каждом мономе является
полиномом от х. В общем корне х = xq полученное
выражение должно обращаться в нуль при любом зна-
значении а, поэтому коэффициент-полином от х должен
обращаться в нуль при х — хо- Имеется п коэффициен-
коэффициентов от п переменных, и это — в точности полиномы,
необходимые для построения результанта в форме
Безу, разумеется, используя упр. 5.
Пример. Пусть р\(х) = ах2 + Ьх + сир2(х) = а'х2 + Ь'х + с1 —
два полиномиальных уравнения, оба степени 2. Снова
используя обозначение («',/) = if - i'j, мы получаем
!(х)Р2(а) - Р1(а)р2(х)]/(х -а) = {(а, Ъ')х + (а, с')]а + [(а, с')х + (Ь, с')].
Для того чтобы, существовал общий корень, все коэф-
коэффициенты полинома от а должны быть равны нулю, т.е.
мы имеем уравнение Ахт = 0т, где х = (х,1), а элемен-
элементы матрицы А суть (а,Ъ'), (а, с') (первая строка) и (а, с'),
(Ь,с') (вторая строка), и, применяя упр. 5, мы получаем
результант.
376
Наибольшие общие делители полиномов и PRS
Ъ. Пользуясь подходом Кэли, вычислите детерминант-
ную форму результанта полиномов Pi(x) = ах3 + Ьх2 +
сх + d и р2(х) = а'х3 + b'x2 + dx + d!.
10. Докажите, что если каждый элемент в какой-либо (или
в каком-либо столбце) представить в виде суммы двух
других, то определитель разлагается в сумму двух других;
т.е.
det
°1 а2 аЗ + а4
h h b3 + h
С\ С2 С3 + С\
= det
Ь\
с2 с3
а1 а2 а4
+ det | 61 62 64
C2 C4
11. В этой задаче мы увидим, как из п уравнений с m членами
получить уравнение с т — п + 1 членами. Рассмотрим
четыре уравнения степени 4
pi(x) = а4х4 + а3х3 + а2х2 + ахх + а0 = О,
ръ{х) = Ьлх4 + Ь3х3 + Ьъх2 + Ь\х + bo = О,
рз(х) = с4х4 + с3х3 + с2х2 + ах + с0 = О,
Pi(x) - diX* + d3x3 + d2x2 + dix + d0 = 0,
где x4, x3, x2, x и 1 — неизвестные. Из этих четырех урав-
уравнений можно ислючить любые три неизвестные, оставив
одно уравнение от оставшихся двух неизвестных. Пред-
Предположим, что мы хотим получить из pi(x), p2(x), рэ(х),
Ра(х) единственное уравнение, которое выполняется, когда
выполняются исходные четыре уравнения, но которое не
содержит мономов х4, х3, х2. Пользуясь упр. 10, докажите,
что требуемое уравнение получается из
det
а3
h
62
с2
d2
р\(х)
p2(x)
рз(х)
= 0.
Раздел 5.2.3
1. Докажите формулы (Н2) этого раздела.
2. Примените расширенный алгоритм Евклида для полиномов
над целыми числами к полиномам х3 — 1х + 7 и Зх2 — 7 и
сравните ваш ответ с ответом, полученным в примере,
Упражнения по программированию 377
следующем за теоремой 5.2.11. Что вы можете сказать о
последнем члене PRS?
3. Завершите вычисления в последнем примере этого разде-
раздела.
4. Используйте формулы в Н-1, Н-2 и Н-3, чтобы вывести
выражение (Н) из разд. 5.1.1.
Раздел 5.3.1
1. Определите наибольший общий делитель полиномов х3 —
7х + 7 и Ъх2 — 7, пользуясь процессом гауссова исключения
вместо псевдоделения.
2. Сделайте то же самое для полиномов х4 + 6х3 + Ьх2 — Ах —2
и 4х3 + 18х2 + 10* - 4.
Раздел 5.3.3
1. Используя метод, кратко описанный в тексте, завершите
первый пример этого раздела, т.е. определите, чему равен
полином Ра(хI
2. Следуя первому примеру этого раздела, вычислите после-
последовательность полиномиальных остатков для следующих
пар полиномов:
a. Р1(х) = 2*4+5х3+5*2-2х+1 ир2(х) = Зх3+Зх2+3*-4.
b. Р1(х) =
бх2 + 2х + 1.
c. pi(*) = 2x4 +
d. Pl(x) = 2х4-х3-14х2+Пх-5ир2(х) = 6х3-7*2+4*-1.
Упражнения по программированию
Раздел 5.1.1
1. Напишите процедуру для вычисления псевдочастного и
псевдоостатка от псевдоделения полинома pi(x) на р2(х).
2. Напишите процедуру для нахождения матрицы, соответ-
соответствующей результанту в форме Сильвестра полиномов
Pi(x) = cnxn+cn_ixn-1-|---+со ир2(х) = dmxm+dm_1xm-1 +
h d0, с„ ф 0, dm ф 0, п > т.
378 Наибольшие общие делители полиномов и PRS
Раздел 5.2.1
1. Напишите процедуру для реализации алгоритма SRSPRS
и примените ее к полиномам упр. 1 к этому разделу.
Раздел 5.2.3
1. Напишите процедуру для реализации алгоритма HSPRS
и примените ее к полиномам:
а. рх(х) = 2х*+5х3+5х2-2х+1кр2(х) = Зх3+Зх2+Зх-4.
&Х2 + 2х+ 1.
c. pi(r) = 2r4 + 3r3 + 5x2-2r-l ир2(х) = х3 + х2 + 2х-1.
d. Pl(x) = 2х*-х3-14х2+Пх-5пр2(х) = 6х3-7х2+4х-1.
Раздел 5.3.2
1. Напишите процедуру, которая для данных двух полиномов
с целыми коэффициентами будет распечатывать соответ-
соответствующие матрицы Мв и Мт. Примените ее к вашим
любимым полиномам.
2. Напишите процедуру для реализации алгоритма Доджсона
(D), обсуждаемого в разд. 5.3.1, и для данных матриц
Мв и Мх воспользуйтесь ею, чтобы получить верхние
треугольные матрицы Т(Мв) и Т(Мх).
Раздел 5.3.3
1. Напишите процедуру для реализации алгоритма ASPRS и
примените ее к полиномам упр. 2 к этому разделу. Выпиши-
Выпишите соответствующие последовательности полиномиальных
остатков и сравните ответы.
Исторические замечания и литература
1. Браун в обеих своих статьях A971, р. 485, 1978, р. 238) и
Кнут A981, р. 410) приписывают Коллинзу A967) открытие метода
Сильвестра-Габихта субрезультантных PRS. Как мы показали,
это открытие было начато Сильвестром в 1853 г. и завершено
Габихтом в 1948 г. В этой книге впервые должное было отдано
Исторические замечания и литература
379
тому, кому оно принадлежит. [См. также в этом контексте (Fryer,
1959).]
2. Статьи Сильвестра A853) и Ван Влека A899) не упоминаются
в обзорной статье Лооса A982).
3. Мы отдаем должное Лоджсону (Dodgson, 1866), а не Барейсу
(Bareiss, 1968) за сохраняющие целочисленность преобразования.
См. также работу (Waugh, Dwyer, 1945), в которой используется тот
же метод, что и у Барейса, но на 23 года раньше. Авторы последней
работы указывают на Доджсона как на своего предшественника; их
подход отличается только тем, что они не используют подвижный
ведущий элемент (Waugh, Dwyer, 1945, p. 266). Доджсон —
это человек, известный главным образом своими литературными
произведениями под псевдонимом Льюис Кэрролл.
4. Дальнейшее исследование и развитие метода матричной
триангуляризации субрезультантных PRS см. в работе (Akritas,
Akritas, Malaschonok, 1992). Получены теоретические результаты,
не зависящие от теоремы Ван Влека (которая не всегда верна),
где вместо преобразования матрицы порядка 2max(m, n) преобра-
преобразуется матрица порядка т + п.
Малашонок Г.И. Решение системы линейных уравнений над
областью целостности. Журнал вычислительной математики
и математической физики 23, 1497-1500, 1983.
Малашонок Г.И. Система линейных уравнений над коммутатив-
коммутативным кольцом. — Львов: ФМИ АН УССР, 1986 (препринт
№ 114).
Akritas A.G. A new method for computing polynomial greatest common
divisors. University of Kansas, TR-86-9, Lawrence, Kansas, 1986.
Akritas A.G. A simple proof of the validity of the reduced prs algorithm.
Computing 38, 369-372, 1987.
Akritas A.G. A new subresultant prs method. Proceedings ot the 12th
IMACS World Congress on Scientific Computation (July 1988, Paris,
France), 4, 654-655, 1988.
Akritas A.G. A new method for computing polynomial greatest common
divisors and polynomial remainder sequences. Numerische Mathe-
matik, 52, 119-127, 1988.
Akritas A.G., Akritas E.K., Malaschonok G.I. Computation of polynomial
remainder sequences in integral domains. Submitted for publication,
1992.
380
Наибольшие общие делители полиномов и PRS
Anderson G. An examination of polynomial remainder sequences. M.S.
Thesis, University of Kansas, Department of Computer Science,
Lawrence, KS, 1986.
Bareiss E.H. Sylvester's identity and multistep integer-preserving Gauss-
Gaussian elimination. Mathematics of Computation 22, 565-578, 1968.
Barnett S. Polynomials and Linear Control Systems. Marcel Dekker Inc.,
New York & Basel, 1983.
Barnett S. A new look at classical algorithms for polynomial resultant
and gcd calculation. SIAM Review 16, 193-206, 1974.
Berlekamp E.R. Algebraic coding theory. McGraw-Hill, New York,
1968. [Имеется перевод: Берлекэмп Э. Алгебраическая теория
кодирования. — М.: Мир, 1974.]
Bocher M. Introduction to higher algebra. MacMillan, New York, 1907.
Brown W.S. On Euclid's algorithm and the computation of polynomial
greatest common divisors. Journal of Association for Computing
Machinery 18, 476-504, 1971.
Brown W.S. The subresultant prs algorithm. ACM Transactions on
Mathematical Software 4, 237-249, 1978.
Brown W.S., Traub J.F. On Euclid's algorithm and the theory of
subresultants. Journal of Association for Computing Machinery 18,
505-514, 1971,
Collins G.E. Polynomial remainder sequences and determinants. Ameri-
American Mathematical Monthly 73, 708-7T2, 1966.
Collins G.E. Subresultants and reduced polynomial remainder sequences.
Journal of Association for Computing Machinery 14, 128-142, 1967.
Collins G.E. The calculation of multivariate polynomial resultants.
Journal of Association for Computing Machinery 19, 515-532, 1971.
Dodgson C.L. Condensation of determinants. Proceedings of the Royal
Society of London 15, 150-155, 1866.
Fryer W.D. Applications of Routh's algorithm to network theory problems.
IEEE Transactions on Circuit Theory CT-6, 144-149, 1959.
Gonzalez L., Lombardi H., Recio Т., Roy M.-F. Specialization de la suite
de Sturm et sous-resultants. Preprint Num. 8-1990, Department of
Mathematics Statistics and Computation, University of Cantabria,
39071 Santander, Spain.
Habicht W. Eine Verallgemeinerung des Sturmschen Wurzelzaehlver-
fahrens. Commentarii Mathematici ffelvetici 21, 99-116, 1948.
Householder A.S. The numerical treatment of a single nonlinear equation.
McGraw-Hill, New York, 1970.
Исторические замечания и литература 381
Knuth D.E. The art of computer programming. Vol. 2, 2nd ed. Seminu-
merical Algorithms. Addison-Wesley, Reading, MA 1981. [Имеется
перевод первого издания: Кнут Л. Искусство программирова-
программирования для ЭВМ. Т. 2. — М.: Мир, 1977.]
Laidacker M.A. Another theorem relating Sylvester's matrix and the
greatest common divisor. Mathematics Magazine 42, 126-128, 1969.
Lipson J.D. Elements of algebra and algebraic computing. Addison-
Wesley. Reading, MA, 1981.
Loos R. Generalized polynomial remainder sequences. In Computer
Algebra Symbolic and Algebraic Computations. B. Buchberger, G.E.
Collins, and R. Loos eds. Springer Verlag, New York, 1982, Computing
Supplement 4, 115-137. [Имеется перевод: Лоос Р. Обобщен-
Обобщенные последовательности полиномиальных остатков. — В кн.:
Компьютерная алгебра. Символьные и алгебраические вычис-
вычисления. — М.: Мир, 1986, с. 151-171.]
Miola A., Yun D.Y.Y. Computational aspects of Hensel-type univariate
polynomial greatest common divisor algorithms. Proceedings of
EUROSAM 1974, PP- 46-54 (also ACM SIGSAM Bulletin 31).
Moses J., Yun D.Y.Y. The EZGCD algorithm. Proceedings of the ACM
Annual Conference (August 1973, Atlanta), pp. 159-166.
Muir T. A treatise on the theory of determinants. Macmillan, London,
1882.
Muir T. The theory of determinants. Vol HI. Macmillan, London, 1920.
Netto E. Vorlesungen ueber Algebra. Erster Band. Teubner, Leipzig,
1896.
Sylvester J.J. On a theory of the syzygetic relations of two rational
integral functions, comprising an application to the theory of Sturm's
functions, and that of the greatest algebraical common measure.
Philosophical Transactions 143, 407-548, 1853.
Van Vleck, E. B. On the determination of a series of Sturm's functions
by the calculation of a single determinant. Annals of Mathematics,
Second Series 1, 1-13, 1899-1900.
Waugh F.V., Dwyer P.S. Compact computation of the inverse of a matrix.
Annals of Mathematical Statistics 16, 259-271, 1945.
Yun D.Y.Y. The Hensel lemma in algebraic manipulation. Ph.D. Thesis,
Department of Mathematics, MIT, 1974.
Глава 6
Разложение на множители полиномов над
целыми числами
6.1
Введение и обоснования
Ясно, что самый простой способ нахождения множителей дан-
данного полинома р(х), deg\p(x)] = к, — это алгебраически найти его
корни Qi, и тогда р(х) = (х - Qi)(x - q2)...(x - Qk)- (Читателю
следует сейчас снова просмотреть разд. 3.2.3.) Однако, как мы
убедимся в гл. 7, мы можем алгебраически найти корни полинома,
только если его степень ^ 4. Для полиномов, степень которых
больше 4, мы должны применить другой подход.
Помимо чисто теоретического интереса разложение полиномов
на множители имеет большое практическое значение (например,
в теории кодирования). Ньютон в своей Arithmetica Universalis
A707 г.) формулирует метод нахождения линейных и квадратич-
квадратичных множителей полиномов с целыми коэффициентами. В 1793 г.
метод Ньютона был обобщен астрономом Фридрихом фон Шу-
Шубертом, показавшим, как находить все множители степени тг за
конечное число шагов (Cantor, 1908; р. 136-137). Метод Шу-
Шуберта примерно через 90 лет был заново открыт Л. Кронекером.
Однако, как мы вскоре убедимся, метод Кронекера-Шуберта име-
имеет экспоненциальную вычислительную сложность по времени и,
следовательно, мало пригоден для практического применения.
Гораздо лучшие результаты получаются при использовании
методов разложения «по модулю р» вместе с техникой подгема
разложения «по модулю р» до разложения на множители над
целыми числами. Этот подход проиллюстрирован на рис. 6.1.1.
Однако, несмотря на то что подход, показанный на рис. 6.1.1,
работает почти во всех практических случаях очень хорошо, в
худшем случае он также имеет экспоненциальную границу време-
времени вычислений. Совсем недавно А. Ленстра, X. Ленстра мл. и
Л. Ловас (или просто L3) применили теорию решеток к задаче
разложения на множители и получили метод разложения с полино-
Введение и обоснования 383
миальным временем вычисления (Lenstra A.K., Lenstra H.W., Lovasz
L., 1982); изложение Ь3-метода выходит, однако, за рамки этой
книги; см. (Lenstra, 1981, 1982а; Панкратьев, 1988).
6.1.1. Метод Кронекера-Шуберта разложения на множители
над целыми числами
Этот метод работает следующим образом. Пусть р(х) — дан-
данный полином с целыми коэффициентами степени п, который мы
хотим разложить на множители. Если р(х) в действительности
разлагается на множители, то один из его множителей должен
иметь степень не выше !|. Пусть m = [j|J — наибольшее целое
число ^ ^; тогда мы должны выяснить, имеет ли р(г) множи-
множитель q(x) степени ^ т. Для т + 1 различных целых значений
ао,<ц,...,ат @,±1,±2,...) вычисляем р(ао),р(а1))...,р(ат). Если
я(х) — делитель полинома р(х), то число q(a0) должно быть де-
делителем числа р(а0), q(ai) — числа p(ai) и т.д. Обозначим через
/,- конечное множество всех различных целых делителей числа
p(aj). Тогда для к = 2,..., т + 1 выполняем следующие операции:
выбираем к элементов 6, из различных /,- и вычисляем интерполя-
интерполяционный полином Лагранжа q(x) степени it —1, такой, что g(at) = 6,-
для всех i. Если q{x) делит р(х), то мы нашли множитель поли-
полинома р{х) и можем рекурсивно применить этот метод к p(x)/q(x).
В противном случае выбираем другое множество it элементов 6,-
из /„• (не совпадающее ни с одним из выбранных ранее множеств),
интерполируем и снова проверяем на делимость. Когда мы испы-
испытаем все возможные комбинации изт + 1 или меньшего количества
целых значений из /;, мы придем к заключению, что полином р(х)
неприводим.
р(х) в Z[x]
I
множители р(х) в Щх]
р(х) (mod p) в Щ,[х]
1
множители р(х) (mod p) в Ър\х\
Рис. 6.1.1.
Окольный способ разложения на множители произ-
произвольного полинома р(х) в Щх].
Пример. Попробуем разложить на множители полином р(х) =
х4 + 4. Заметим, что тг = 4 и m = [|J = 2. Тогда выберем m +1 = 3
384
Разложение на множители полиномов над целыми числами
точки по = 0, а\ = 1, п2 = — 1 и сформируем множества /J:
4, /о = 0,-1,2, -2,4, -4},
5, Л = 0,-1,5,-5},
= p(-1) = 5, /а = 0.-1,5,-5}.
Легко видеть, что имеется громадное количество возможных ком-
комбинаций; мы пропускаем случай к — 2, так как он не даст нам
линейных сомножителей полинома р(х), и попробуем Jfc = 3. Выбе-
Выберем сначала 6о = 1, 6i = —1, 62 = 5 и, интерполируя пары
{а0 = ОА = -1}, {<U = l,6i = -1}, {а2 = -1,62 = 5},
получаем
(*-
-0)(*-Ц)
(*-o)(*-i)
-i-o)(-i-i
=*2-3*+1.
Затем делим р(х) на q(x) и видим, что д(*) не является сомножи-
сомножителем р(х), так как
х4 + 4 = (х2 - Зх + 1)(*2 + 3* + 8) + B1* - 4).
Тогда выбираем 6о = —2, h = 5, 62 = 1 и пары для интерполяции
{а0 = О.Ьо = -2}, {oi = l,6i = 5}, Ь = -1Л = 1};
получаем
Видим, что на этот раз
р(х), так как
Г (*-0)(*-1) 1
\(-1-0)(-1- 1)/
является сомножителем полинома
х4 + 4 = (г2 + 2г + 2)(*2 - 2х + 2),
и это — полное разложение на множители полинома р(х), поскольку
по критерию Эйзенштейна (теорема 3.2.15) эти два сомножителя
неприводимы.
Очевидно, что время вычислений рассмотренного метода экс-
экспоненциально, и для п ^ 5 метод работает очень неэффективно.
Введение и обоснования 385
6.1.2. Общая схема «окольного» метода разложения над
кольцом целых чисел
В этом разделе мы дадим краткое описание различных ша-
шагов, включенных в «окольный» метод, показанный на рис. 6.1.1;
детальное описание некоторых шагов приводится в следующих
разделах; см. также (Lazard, 1982; Moenck, 1977) (для случая
многих переменных см. (Wang, 1978)).
Предположим, что дан полином р{х) е Щх\, т.е.
р(х) = спхп + с„^хп-1 + ¦ ¦ ¦ + с0, с,- € Z,
который следует разложить на множители. Мы хотим найти
неприводимые сомножители этого полинома. Прежде всего за-
заметим, что без потери общности можно считать, что с„ = 1,
поскольку в противном случае можно положить х := х/сп и ум-
умножить получающийся полином на cJJ. Таким образом мы
получаем нормированный полином рн(х) = <%~1р(х/сп) с целы-
целыми коэффициентами, задача разложения которого эквивалент-
эквивалентна задаче разложения на множители полинома р{х), т.е. если
р„(х) = pi(x).. ,рг(х), то разложение полинома р(х) имеет вид
р(х) = A/с^-1)р„(с„х) = {\lc^-l)pi{cnx)...pr{cnx). Рациональное
число 1/с" исчезнет после того, как мы разделим на с„ как
можно больше сомножителей и/или выделим содержание сом-
сомножителей. В качестве первого примера рассмотрим полином
р(х) = 2х2 + Зх + 1. Тогда
= 2р (|) = 2 [2 (|J + 3 @
Разложение на множители полинома р(х) получается следующим
образом:
Р(*) = Q) РнB*) = Q) B. + 1)Bх + 2) = B* + 1)(х + 1),
где рациональное число 1/2 в этом случае домножается на 2
(содержание второго сомножителя).
В качестве второго примера того же процесса рассмотрим
полином р(х) = 112х4 + 58х3 - 31я2 + 107* - 66. Тогда
Ря(х) = 1123р (^) = х4 + 58х3 - 3472*2 + 1342208* - 92725248
= (х2 + 98* - 9408)(*2 - 40* + 9856).
25-274
386 Разложение на множители полиномов над целыми числами
Разложение на множители полинома р(х) получается следующим
образом:
[(Ш*J + 98 • 112* - 9408][(И2*J - 40 • 112* + 9856)
= (8х2 + 7х- 6)A4х2 - Ьх + 11),
где в этом случае рациональное число 1/1123 умножается на
1123, что соответствует делению на 112 обоих сомножителей и
выделению в обоих сомножителях содержания.
Таким образом мы предполагаем, что полином р(х) нормиро-
нормирован. (Это ограничение снимается в разд. 6.3.) Ниже излагаются
основные шаги «окольного» метода разложения на множители над
целыми числами (Musser, 1971, 1975 и 1978):
1. Прежде всего исключаем из р{х) нетривиальные сомножи-
сомножители нулевой степени и кратные сомножители, что достигается
вычислением наибольших общих делителей в Z и Щх]. (Другими
словами, мы вычисляем примитивный свободный от квадратов
полином; читателю следует по этому поводу освежить в памяти
разд. 3.2.4.) В качестве результата мы получаем нормированный
СВОбОДНЫЙ ОТ КВадраТОВ ПОЛИНОМ Рв{(х) = Y\l<i<qPi(X)' ГДе ВСе
Pi(x) — различные неприводимые полиномы. Наша цель состоит
в вычислении этих q сомножителей Pi(x).
2. Выбираем простое число р, такое, что разложение на
множители в Zp[x] возможно. Первое требование к выбору чис-
числа р заключается в том, чтобы полином paf(x), полученный на
шаге 1, имел ту же самую степень и оставался свободным от
квадратов по модулю р. Поскольку полином p8f(*) нормирован,
р не делит его старший коэффициент, и, следовательно, сте-
степень остается той же самой по модулю р; см. также теорему
3.2.16. Кроме того, мы мажем эффективно проверить, являет-
является ли полином pBf{x) (mod p) свободным от квадратов, проверив
равенство gcd[pef(r),^f(x)] = 1 в Ър[х] (^(х) обозначает произ-
производную полинома paf(x)). Справедливость этого утверждения
следует из того, что если р(х) = \рх{х)]2ръ{х), то р'{х) является
кратным полинома р\{х). Поэтому если gcd\p(x),p'(x)] = 1, то
мы знаем, что р(ж) свободен от квадратов, в то время как если
gcd\p(x),p'(x)] ф 1 и gcd\p(x),p'(x)} ф р(х), то нам нужно разложить
на множители gcd\p(x),p'(x)] и p(x)/gcd\p(x),p'(x)]; наконец, если
Введение и обоснования 387
gcd\p(x),p'(x)] = р(х), то р(х) = q(xP) = [q(x)]", и нам нужно раз-
разложить на множители q(x). Дальнейшие детали см. в разд. 6.2.1.
Размер используемых простых чисел также является существен-
существенным фактором при выборе алгоритма разложения в TLp\x\. При-
Применение больших простых чисел сократило бы количество шагов
гензелева подъема (описанных в разд. 6.3), необходимых для по-
подъема разложения pst(x) из Zp[x] до Z[x]. Однако эффективные
алгоритмы разложения на множители в Zp[x] имеются только для
малых р (Berlekamp, 1970). Третье главное требование к выбору
числа р — это число г сомножителей в полном разложении по
модулю р. Если psf(x) — неприводимый полином, но по моду-
модулю р расщепляется на г > 1 неприводимых сомножителей (для
объяснения этого явления см. шаг 3), то в конце подъема мы
получаем г сомножителей и в итоге 21" подмножеств сомножи-
сомножителей должно рассматриваться на шаге 5, описанном ниже, для
определения истинных сомножителей полинома ра{х) над целыми
числами. (Именно из-за этого максимальное время работы ал-
алгоритма оказывается экспоненциальным.) Некоторое упрощение
задачи получается, если разложить на множители pat(x) (шаг 3)
по модулю нескольких простых чисел р,-, для которых полином
остается свободным от квадратов, и выбрать из них в качестве р
число, дающее наименьшее число неприводимых сомножителей.
3. Для простого числа р, выбранного выше, мы получили
разложение на множители в Zp[x]
pi{f(x)= Д дк (modp), gk?Zp[x].
В разд. 6.2 мы рассматриваем способы получения такого разло-
разложения. Заметим, что число q истинных сомножителей полинома
Psf(z) над кольцом целых чисел (шаг 1) не обязательно равно
числу г сомножителей полинома ряг(х) по модулю р; например,
х2 + 2 = {х — 2)(х — 1) (mod 3). Интересно, что существуют по-
полиномы, неприводимые над целыми числами, которые могут быть
разложены на множители по модулю р для любого простого р.
Например, для любых целых чисел а, Ь и любого простого чис-
числа р полином р(х) = х4 + ах2 + Ь2 разлагается на множители в
Ж,р[х\. Чтобы убедиться, что полином р{х) = хА + ах2 + б2 разла-
разлагается на множители в Zp[x] для любого простого р, рассмотрим
прежде всего случай р = 2. Тогда для любых целых чисел
а, 6 имеются следующие четыре возможности: р(х) = х* (mod 2),
или р(я) = х* + х2 = х2(х7 + 1) (mod 2), или р(х) = хА + 1 =
388
Разложение на множители полиномов над целыми числами
(х + IL (mod 2), или р{х) = х4 + х2 + 1 = (х2 + х + IJ (mod 2).
Очевидно, что каждый из них приводим по модулю 2. В общем
случае, когда р — нечетное простое число, выберем с, такое, что
а = 2с (mod р). Тогда р{х) = х4 + 2сх2 + Ь2 (mod р), и мы имеем
три следующие возможности:
Р(х) = (х2 + сJ-(с2-Ь2) (modp),
р(х) = (х2 + ЬJ - B6 - 2с)х3 (mod p),
р(х) = {х2- бJ - (-26 - 2с)*2 (mod p).
Ясно, что для доказательства разложимости р(х) по модулю р
достаточно показать, что хотя бы одно из чисел (с2 — б2), B6 - 2с),
(—26 — 2с) является квадратом mod p [р(х) будет тогда разностью
двух квадратов]. Пусть d — примитивный корень по модулю р (см.
теорему 2.3.20). Если 26 — 2с и —26 — 2с не являются квадратами
mod р, то 26—2с = of" и —26 —2с = d* (mod p), где ей/ оба нечетны.
Взяв произведение B6-2с)(—26 —2с) = 4F2 —с2) = de+f, где теперь
e + f = 2g — четное число, видим, что 4(с2 — б2) — квадрат mod p.
Пусть 2Л = 1 (mod р); тогда с2 - б2 = 4(с2 - 62)Л2 = сР'Н2 = (d'hJ,
и мы видим, что с2 — б2 — квадрат mod p. Таким образом,
р(х) = х4 + ах2 + б2 разлагается на множители в Zp[x] по модулю
любого простого р. Пользуясь критерием Эйзенштейна (теорема
3.2.15), мы легко можем построить полином вида р(х) = х4 + ах2 +
б2, неприводимый над целыми числами, который разлагается на
множители mod p для каждого простого р. В качестве примера
рассмотрим х4 + 1. В качестве упражнения читателю остается
доказательство того, что при 0 < b < а полином р(х) = х4+2ах2+62
неприводим над целыми числами.
4. Используя построения гензелева типа (рассматриваемые в
разд. 6.3), мы поднимаем полиномы gic(x), полученные на шаге 3,
до соответствующих полиномов hk(x) (mod pi), таких, что
pat(x) = Д hk(x) (mod р»)
для достаточно большого положительного целого числа j (это
будет разобрано в разд. 6.3). Теперь каждый истинный сомножи-
сомножитель pt(x) полинома pSf(x) соответствует или отдельному полиному
Л,-(г), или произведению (mod p7) некоторых из них. Это соот-
соответствие выявляется на шаге 5.
Введение и обоснования 389
5. Здесь мы разбиваем множество полиномов Л*(х) на подмно-
подмножества hi, i = 1,2,...,/, такие, что
Pi(x)= ТТ h(x) (mod ру.
Истинные сомножители полинома pat(x) над целыми числами оп-
определяются тогда пробным делением. [То есть получив на пре-
предыдущем шаге сомножители hi(x), Лг(я) Л,(х) полинома psf(х)
modp7, мы должны рассмотреть каждое сочетание этих сомно-
сомножителей, проверяя делением, является ли их произведение по
mod р* истинным сомножителем; если найден истинный сомножи-
сомножитель, то полагаем p8f(x) := pst(z)/pi(x) и удаляем соответствующие
значения Л|(х) из списка. Необходимо рассмотреть только те со-
сочетания, для которых степень ^ [deg[p(x)]/2J.]
Анализ времени работы «окольного» метода разложения.
Выше мы уже видели, что в худшем случае окольный метод разло-
разложения имеет экспоненциальное время работы, поскольку г может
быть так же велико, как и п, и потребуется выполнить большое
число пробных делений (а именно 2"). Однако, как мы сейчас
убедимся, в среднем г = 1п(п), и поскольку среднее значение ве-
величины 2Г приблизительно равно тг, среднее время вычислений
окольного алгоритма полиномиально. (Среднее значение выраже-
выражения 2Г получается с помощью производящих функций и здесь не
обсуждается.)
Чтобы убедиться, что г = 1п(п), рассмотрим эквивалентную
задачу определения среднего числа циклов в «-перестановках (тот
же самый результат может быть получен с помощью производящих
функций). Эквивалентность этих задач была установлена в 1880 г.
Г. Фробениусом (Knuth, 1981, р. 632).
Таким образом имеет место
Теорема 6.1.1. Среднее число j-циклов в n-перестановках равно
\fj (не зависит от тг).
Доказательство. Пусть с — произвольный фиксированный j'-цикл.
Пусть 6 — любая n-перестановка, под действием которой элемен-
элементы цикла с остаются неподвижными. Пусть /С(Ь) = 6 • с; очевидно,
что с является j-циклом перестановки 6 • с.
Перестановка /сF) является взаимно однозначным отображе-
отображением из множества всех (тг — ^-перестановок на множество всех
n-перестановок, содержащих цикл с. Поэтому существует (тг — У)!
390
Разложение на множители полиномов над целыми числами
п-перестановок, содержащих с в качестве j-цикла. Мы можем (")
способами выбрать j элементов j-цикла с, затем можем (j — 1)! спо-
способами сформировать из этих j элементов j'-цикл. Следовательно,
число j-циклов с равно (")(j — 1)!.
В сумме общее число вхождений j-циклов во все п-перестановки
равно
и, разделив его на п!, общее число тг-перестановок, получаем
нужный результат.
Следствие 6.1.2. Среднее число циклов в тг-перестановке равно
где
#„ есть n-е гармоническое число, приблизительно равное
).
Ниже, в разд. 6.2, мы рассмотрим разложение на множители
полиномов над конечным полем, а в разд. 6.3 — процесс подъема.
[Представляют интерес работы (Butler, 1954; Calmet et al., 1980,
1982;-Camion, 1980; Lauer, 1982; Petr, 1936; Rabin, 1980).]
6.2
Разложение на множители полиномов над конечным полем
Как мы уже видели в предыдущем разделе, разложение поли-
полиномов в Zp[x], где р — простое число, интересно не только само
по себе, но также в связи с тем, что оно полезно при разложе-
разложении на множители в Z[x]. (Читателю следует заглянуть здесь в
разд. 3.3.) Любой полином степени тг в Щ>[х\ может быть разложен
на множители за конечное число шагов, поскольку существует рп
возможных полиномов степени < п, и мы можем просто проверить
каждый из них, используя PDF. Однако этот метод проб и ошибок
очень неэффективен.
В этом разделе мы подробно обсуждаем эффективный алго-
алгоритм Берлекэмпа разложения на множители в Zp[x] для малых
простых р. Этот метод был найден в 1967 г. (Berlekamp, 1967,
Разложение на множители полиномов над конечным полем
391
1968) и переводит задачу разложения на множители в задачу ре-
решения системы линейных уравнений с коэффициентами в Zp[x] и
нахождения наибольших общих делителей; последние две задачи
могут быть решены очень эффективно; таким образом, это преоб-
преобразование весьма желательно. (Берлекэмп в 1970 г. разработал
также другой алгоритм для разложения на множители полиномов
в 7Lp\x\ при больших простых р; этот вопрос кратко обсуждается в
разд. 6.2.4.)
Начнем с рассмотрения близкого материала.
6.2.1. Разложение на свободные от квадратов множители над
конечными полями
В этом разделе мы модифицируем PSQFF, алгоритм, разрабо-
разработанный в разд. 3.2.4, так, чтобы мы имели возможность разлагать
полиномы над конечными полями.
Как вы помните, доказательство теоремы 3.2.17 зависело от того
факта, что производная полинома, не являющегося константой,
не может быть тождественно равной нулю, если характеристика
области коэффициентов J равна нулю. Пусть теперь область J
имеет простую характеристику р, и рассмотрим полином р{х) =
спх" -\ h со. Тогда производная р'(х) = пспхп~1 Н 1- ci равна
нулю тогда и только тогда, когда ici = 0 для каждого »', что
имеет место тогда и только тогда, когда p\i или с,- = 0 для
каждого г. Поэтому р'(х) = 0 для некоторого полинома р{х) ф О
тогда и только тогда, когда р(х) — полином от хр. Справедливо
следующее обобщение теоремы 3.2.17.
Теорема 6.2.1. Пусть J — область с однозначным разложе-
разложением, на множители произвольной характеристики и р(х) — не
являющийся константой примитивный полином над J. Пусть
р(х) = [pi(z)]ei[p2(z)]e3 ... \рп(х)}е" — однозначное разложение р(х)
на неприводимые множители, и пусть 6,- = 0, если е,-р|(х) = 0, в
противном случае пусть 6,- = 1. [Условие e,-pj(ar) = 0 имеет место
тогда и только тогда, когда р\{х) — 0 или характеристика области
J делит е,-.] Тогда
gcd\p(x),p'(x)] =
Доказательство. Доказательство получается небольшой модифи-
модификацией доказательства теоремы 3.2.17. D
392
Разложение на множители полиномов над целыми числами
Предположим теперь, что характеристика области J равна
р, и пусть р(х) = \pi(x)]e*\p2(x)]" ...[р„(х)]е- в J[x]. Пусть е =
A^..., е„), и для 1 ^ % ^ е положим
/ \ _ / ПрЛх) '¦ ез = i и Pj(x
si\x) — Л л
L 1
) ф О, если р не делит i,
в противном случае
или
Тогда
= {Sl(x)[s2(x)}*...[Se(x)Y}s(x),
и по теореме 6.2.1 мы имеем gcd(«,-(x), «{•(*)) = 1, причем следует
отметить, что s'(x) = 0; кроме того, из теоремы 6.2.1 следует, что
gcd\p(x),p'(x)} =
а потому
Легко проверить, что алгоритм PSQFF, примененный к р(х),
даст разложение si(x),.. .,se{x), и при условии, что deg(s(x)) = 0,
он даст на выходе г(г); мы должны также дописать в конце шага 1
«если t(x) = 1, то {е := 0; выход}», чтобы учесть случай р'(х) = 0.
Если deg(r(x)) = 0, то мы получили разложение р(х) на свобод-
свободные от квадратов множители. Однако если deg(r(r)) > О, то для
получения полного разложения на свободные от квадратов мно-
множители требуются дополнительные вычисления. Хотя совсем не
очевидно, как это можно сделать для полиномов над произвольной
областью J характеристики р > 0 (не прибегая к алгоритму пол-
полного разложения), мы приводим алгоритм для частного случая,
когда J — область полиномов от одной переменной над конечным
полем. (В этом месте читателю следует еще раз посмотреть
теоремы 3.3.15-3.3.16.)
Лве следующие теоремы потребуются для разложения на сво-
свободные от квадратов множители в кольце %>р[х] и в следующих
разделах.
Теорема 6.2.2. Пусть р(х) — полином в кольце 2р[х]. Тогда
Разложение на множители полиномов над конечным полем 393
Доказательство. Докажем теорему следующим образом. Если
Р\(х) и Pi(x) — два полинома по модулю р, то
=Ых)]р
С -1
поскольку все биномиальные коэффициенты (i)>-••> (pPi) делятся
на р. Более того, по малой теореме Ферма <? = с (mod p) для
любого целого числа с. Поэтому если
р{х) - спхп
+ с0,
¦ + ЫР
f со =
то мы получаем
П
Теорема 6.2.3. Пусть р(х) — полином в Zp[x]. Тогда р'(х) — О в
том и только том случае, когда р(х) есть р-я степень некоторого
полинома q(x) в 1>р[х].
Доказательство. Если р(х) = [?(х)]р, то р'(«) = p[q(x)]p~1q'(x) = 0.
Обратно, если р'(х) = 0, то р(х) может быть записан в виде
р(х) = с0 + СрХ»1 + с2рх2р + ¦¦¦ + ckpxkP. Пусть ?(х) = (соI/р +
{срI/рх + (с2рI/рх2 + ¦¦¦ + {ckP)lhxk; тогда q(x) лежит в Щ,[х], и
р(х) = [,(*)р\ О
Мы получили следующий алгоритм разложения полиномов на
свободные от квадратов множители над конечным полем.
PSQFFF. Разложение полиномов на свободные от квадратов
множители над конечным полем (Polynomial Square-free Factorization
over a Finite Field)
Вход: p(x) — не являющийся константой нормированный поли-
полином в Zp[x], р > 0 — простое число.
Выход: si(x),.. -,se(x) и е, такие, что р(х) - Ili<i^e[e>(r)]' —
разложение р(х) на свободные от квадратов множители.
1. [Инициализация] к := 0; т := 1; е := 0.
394 Разложение на множители полиномов над целыми числами
2. [Основной цикл] j := 1; г(х) := gcd(p(x),p'(x)); t(z) := p(x)/r{x);
если t(x) = 1, то перейти к шагу 7.
3. [Итерация] е' := jm; если е' > е, то {se+i(x) := se+2(:r) :=
...se-_i(x) := 1;е := е'}.
4. [Вычисление se'(*)] «(*) := gcd(r(ar),*(*)); ee/(ar) := ((a;)/v(a;).
5. [Итерация] Если v(x) ф 1, то {r(x) := r(x)/v(x); t(x) :=
v(x); j := j + 1; перейтп к шагу 3}.
6. [Конец?] Если г(х) = 1, то выход из цикла (а также из
алгоритма).
7. [г'(х) = 0] р(х) := [г(х)]1^; к := Jfc +1; m := rap; перейти к шагу
2.
Время вычислений этого алгоритма проанализировано в
разд. 3.2.4, где приводится также пример. Во все время вы-
выполнения алгоритма PSQFFF выполняется соотношение т = рк, и
когда мы попадаем на шаг б, значение е — это наибольший индекс
г, такой, что рк не делит i и р{х) имеет не являющийся константой
делитель порядка »'. Мы предполагаем также, что полиномы г(х) и
v(x), вычисленные на шагах 2 и 4 соответственно, нормированы.
На шаг 7 мы попадаем, только если г'(х) = 0; поэтому в силу
теоремы 6.Я-3 мы знаем вид полинома г(х) и легко вычисляем
[г(ж)]1^\ пользуясь тождеством а}1р — арП .
6.2.2. Вычисление числа неприводимых полиномов над ко-
конечными полями
Из теоремы 3.3.20 нам известно, что в Zp[x] для любого п сущес-
существует неприводимый полином степени тг; более того, из теоремы
3.3.21 нам известно, что хр —х — произведение всех неприводимых
полиномов в Zp[x], степени которых делят тг. Теорема 3.3.21 будет
использована ниже для (частичного) разложения на множители
разных степеней; в данном разделе мы представим некоторый
результат о ip(n) — числе всех нормированных неприводимых
полиномов степени п в Zp[x]. Заметим, что, согласно теореме
3.3.21, хр —х, полином степени рп, имеет в качестве сомножителей
ip(d) неприводимых полиномов степени d для каждого d, делящего
п; отсюда следует, что степень произведения всех нормирован-
нормированных неприводимых полиномов над 2р[х], степени которых делят п,
равна T(
Разложение на множители полиномов над конечным полем 395
Чтобы получить выражение для »р(п), нам понадобятся неко-
некоторые дополнительные результаты, и прежде всего мы введем
следующее (Bender et al., 1975; Berlekamp, 1968; Childs, 1979)
Определение 6.2.4. Функция Мёбиуса fi(n) определяется для
п ^ 1 следующим образом:
¦ 1, если п = 1,
О, если ре\п для некоторого простого р
и некоторого е > 1,
(—1)г, если п является произведением г
различных простых чисел.
Заметим, что ц(п) = 0, если п делится на квадрат простого
числа, и что ц(р) = — 1 для любого простого р. Кроме того, легко
проверяется, что если (т, п) = 1, то ц(тп) = ц(гп)ц(п), т.е. ц —
мультипликативная функция. (Другим примером мультиплика-
мультипликативной функции является функция Эйлера ф.)
Имеет место следующая теорема о мультипликативных функ-
функциях.
Теорема 6.2.5. Если / — мультипликативная функция и функция
F определена соотношением F(n) = ^2d\nf(d), то F — также
мультипликативная функция.
Доказательство. Пусть (т,п) = 1. Тогда каждый делитель d
числа тп может быть единственным способом представлен в виде
d = did2, где di\m, d2\n и {dy,d2) = 1. Поэтому
F{mn) = J2 f(d) =
d\mn
{di\m,d3\n}
di\m
d2\n
П
Обратное для данного утверждения также имеет место, но нам
оно не понадобится. Мы докажем сейчас теорему о функции ц.
Теорема 6.2.6. Y,d\n /*(°0 = °> если п Ф *•
Доказательство. Из теоремы 6.2.5 нам известно, что функция
d\n
396
Разложение на множители полиномов над целыми числами
мультипликативна, а поскольку М(ре) = 1, если е = 0, в то время
как М(ре) = 1-1 + 0+-.. + 0, если е > 1, мы видим, что М{п) = 0
если п делится на какое-либо простое число, т.е. М(п) = 0, если
п>1. D
Теорема 6.2.7 (формула обращения Мёбиуса). Для любой
функции /, определенной на множестве натуральных чисел (не
обязательно мультипликативной), если
^(п) =?/(«0 Для любого п ^ 1,
то
E)
e|n
Доказательство. Положим е = n/d, d = п/е. Равенство двух сумм
становится очевидным. Затем по определению F мы имеем
= ?/*(«)
? /w>
= ?
Меняя порядок суммирования и замечая, что если е?|(п/е), то de\n
и, таким образом, e\(n/d), получаем
d\n
= ?
?
/(«0-
По теореме 6.2.6 в последней сумме коэффициент при f(d) равен
0, кроме случаев, когда n/d = 1 или d - п. Поэтому эта сумма
сводится к единственному члену f(n), и теорема доказана. ?
Мы теперь в состоянии получить формулу для ip(n).
Теорема 6.2.8. Число всех нормированных неприводимых поли-
полиномов степени п над Zp[x] задается формулой
d\n
Разложение на множители полиномов над конечным полем
397
Доказательство. Из теоремы 3.3.21 следует, что степень произ-
произведения всех нормированных неприводимых полиномов над Щ>[х],
степени которых делят п, равна
d\n
Применяя теорему 6.2.7 при F(n) = p" и f(d) = ip(d), получаем
желаемый результат. ?
Интересно знать, насколько быстро растет ip(n). Приведенная
ниже табл. 6.2.1 для р — 7 взята из (Simmons, 1970).
Таблица 6.2.1
Рост функции ip(n)
п
1
2
3
4
5
6
7
ip(n)
7
21
112
588
3360
19544
117648
Общее число нормированных
полиномов степени п(= 7")
7
49
343
2401
16807
117649
823543
Тесты неприводимости в Zp[x]. Ниже предлагаются два
теста для определения, является ли нормированный полином р(х)
степени п > 1 неприводимым в %>р[х]; третий тест будет представ-
представлен в разд. 6.2.4. Ни один из этих тестов не требует, чтобы
полином р(х) был свободным от квадратов, но создается впечатле-
впечатление, что в среднем применение сначала алгоритма разложения на
свободные от квадратов множители позволяет экономить время.
Тест 1. Полином р(х) степени п > 1 неприводим в Zp[x] тогда и
только тогда, когда
- х] = 1 для t = 1,2,.... L-J.
398
Разложение на множители полиномов над целыми числами
Этот тест непосредственно следует из теоремы 3.3.21. Если
полином р(х) приводим, то данный тест работает очень быстро.
Однако для неприводимых полиномов он становится довольно
неэффективным из-за большого числа вычислений gcd в Ър[х].
Можно уменьшить число вычислений gcd, если воспользоваться
следующим тестом.
Тест 2. Полином р(х) степени тг > 1 неприводим в ЪЛх\ тогда
и только тогда, когда (a) p(x)\(xF — х) и (b) gcd\p(x),xF — х] = 1
для всех щ = n/ki, где fc,- — простой делитель числа гг.
Доказательство. Заметим, что если р(х) — неприводимый поли-
полином, то любой корень ? уравнения р(х) = 0 лежит в поле GF(pn),
а поскольку ?р" — ? = 0, то (х - ?)\(хр" — х), откуда немедленно
следует условие (а). Кроме того, поскольку р{х) — неприводимый
полином степени п, у него нет корней ни в каком поле GF(pn>),
щ < п, откуда непосредственно следует условие (Ь).
Для доказательства обратного предположим, что выполнены
условия (а) и (Ь). Из условия (а) следует, что все корни полинома
р(х) лежат в GF(p"). Предположим теперь, что у р(х) имеется
неприводимый сомножитель J?i(x) степени п' < п. Тогда все
корни полинома р\(х) лежат в поле GF(pn ), порожденном над Zp
любым из этих корней. Поэтом^ GF(pn ) С GF(pn) и тг'|тг. Значит,
п'\щ для некоторого максимального делителя п,- числа п, и все
корни полинома Pi(x) лежат в GF(pni). В этом случае, однако,
pi(x)\gcd\p(x),xpn' — х], что противоречит (Ь). Следовательно,
полином р(х) неприводим. ?
6.2.3. Разложение полиномов на множители разных степеней
(частичное) над конечными полями
В этом разделе мы пользуемся теоремой 3.3.21, чтобы частично
разложить на множители свободный от квадратов полином р(х);
а именно мы воспользуемся тем, что неприводимый полином р(х)
степени d делит хр — х, но не делит хр° — х для с < d. Поэтому
мы можем выделить неприводимые множители каждой степени
отдельно, добавив в алгоритм соотношения
- х
для » = 1,2,. ..,п
и используя теорему 6.2.2.
Разложение на множители полиномов над конечным полем
399
DDF. Разложение на сомножители разных степеней (Distinct
Degree Factorization)
Вход: р\х) — свободный от квадратов полином степени тг над
Z,[x).
Выход: Полиномы ра(х) над Zp[x], d = 1,2,..., |_t»/2J, такие, что
Р(х) = П1$<ц|п/2| Pd(z); Pd{*) — произведение всех норми-
нормированных неприводимых сомножителей степени d полинома
р(х).
1. [Инициализация] q(x) := p(x); r(x) :— x; d := 0.
2. [Конец?] {Отметим, что в этом месте г(х) — хр [mod q(x)];
все неприводимые сомножители полинома q(x) различны и их
степени > d.} Если cf+1 > A/2) deg(q(x)), то выход [процедура
заканчивается, поскольку либо q(x) = 1, либо q(x) — неприво-
неприводимый полином], иначе {d := d+ 1; r(x) := [r(x)]p [mod д(я)]}-
3. [Вычисление pa(x)] Pd{x) := gcd[r(:e) — x, q(x)]. [Это — произве-
произведение всех неприводимых сомножителей полинома р(х), сте-
степени которых равны d.] Если ра{х) ф 1, то {q(x) := q(x)/pi(x);
r(x) := r(x) [mod g(x)]}; перейти к шагу 2. [Ниже мы об-
обсуждаем, как получить сомножители, если степень полинома
Pd(x) больше d.]
Пример. Применяя DDF к х15 — 1 в ^[х] (этот полином был
разложен на множители в разд. 3.3.1), получаем следующее.
При первом проходе на шаге 1 мы имеем q(x) = х15 — 1, г(х) = х
и d — 0; поскольку d < 7, на шаге 2 мы имеем d = 1 и г(х) = х2. На
шаге 3 мы получаем gcd[q(x),r(x) — х] = х — 1 = р\{х) и обновляем
q(x) и г(х), заменяя их на хы +х13+ ¦ •„• + х +1 и х2 соответственно.
При втором проходе на шаге 2 мы имеем d = 2 и г(х) = ж4; на
шаге 3 тогда gcd[q(x), r(x) -х] = х2 + х + 1 = Р2{х), и мы обновляем
q(x) и г(х), заменяя их на ж12 + я9 + х6 + х3 +1 и хА соответственно.
Последующие проходы шагов 2 и 3 не дают новых сомножи-
сомножителей, и, следовательно, мы получили всего три сомножителя, а
именно г-1,12 + г + 1и х12 + х9 + х6 + х3 + 1, сомножитель 12-й
степени, являющийся произведением трех полиномов степени 4.
(Заметим, что в Ъ-^х\ мы имеем +1 = —1. См. также историческое
замечание 1.)
Мы видим, что в приведенном выше алгоритме требуется вы-
вычислять хр [mod p(x)] и
[mod
= {xpi'1 [mod p(x)]}p [mod
400
Разложение на множители полиномов над целыми числами
для i = 2,..., [п/2]. Поэтому вычисление (частичного) разло-
разложения на множители различных степеней может быть выполнено
за 0[[n/2JL(p)] полиномиальных умножений по модулю р{х). Мы
можем уменьшить число полиномиальных умножений по модулю
р(х) следующим образом (Lenstra, 1982b).
Пусть в i-й строке п х n-матрицы Q находятся коэффициенты
полинома хгр [mod р(х)] для t = 0,1,..., п — 1; ниже мы отождеств-
отождествляем полиномы степени < п с вектор-строками, образованными их
коэффициентами. Тогда имеет место
Теорема 6.2.9. Для любого полинома v(x) = X^o<i<n-i v*x% B
Zp[x], рассматриваемого как вектор v своих коэффициентов,
v • Q = \р [пкк1 р(х)].
Доказательство. Пусть Q = (гу). гДе », j = 0,1,..., п - 1. Тогда
{v(x)Y [mod p(x)] = v(xp) [mod p(x)] = J^ *"** tmod К*)]
= E
t4r«)«*[modp(x)]
= v-Q.
Из приведенной теоремы видно, что {хр' [mod p(ar)]}Q =
хр' [mod p(x)], так что |_n/2j полиномов (xp' — x) [mod р(я)] для
i = 1,..., [n/2j может быть вычислено за О(п3) операций в конеч-
конечном поле, если известна матрица Q. Вычисление этой матрицы
может быть выполнено за O(L(p) + n — 2) полиномиальных умноже-
умножений по модулю р(х). Ясно, что для больших р предпочтительней
пользоваться матрицей Q.
Другой способ нахождения (частичного) разложения на сом-
сомножители разных степеней полинома р(х) предложен в работе
(Berlekamp, 1970). Этот метод использует ядро матрицы Q — I, где
I — единичная тг х тг-матрица, и может быть расширен до полного
разложения в %>р[х]. Обсуждение этого метода не входит в данную
книгу.
Мы видели, что алгоритм DDF определяет произведение всех
неприводимых сомножителей каждой степени d, и поэтому он
Разложение на множители полиномов над конечным полем 401
сообщает нам, сколько имеется сомножителей каждой степени.
Если мы хотим знать только степени, то можем действовать
следующим образом \р(х) не обязательно свободен от квадратов].
Обозначим через <г,- число различных неприводимых сомножи-
сомножителей степени i полинома р(х), и пусть щ — ранг ядра Q1 — I для
i = 1,..., п. Пусть А = (ац) есть п х n-матрица, где ay = gcd(», j),
<r = (<ti, ...,<т„), v = (у\ и„). Интересный результат Смита
(Smith, 1876) утверждает, что
det(yl)=
где ф — функция Эйлера, а в 1956 г. Шварцом [см. также (Schwarz,
1939)] было показано, что
А Т Т
А • о~ —V.
Поэтому матрица А обратима, и вектор <т однозначно опреде-
определяется вектором v. Так например, если для данного полинома
степени 8 мы получили <т = B,0,2,0,0,0,0,0), то мы знаем, что
у него два сомножителя степени 1 и два сомножителя степени
3. Дополнительные детали могут быть найдены в работе (Gunji,
Arnon, 1981).
Расщепление сомножителей различных степеней. Таким
образом мы редуцировали проблему разложения на множители
к задаче разделения произведений полиномов одной и той же
степени. Чтобы получить метод полного разложения в 1>р[х], нам
нужно научиться расщеплять ра(х) на неприводимые сомножители,
когда deg[pd(x)] > d. Для этого имеется несколько способов.
Мы изложим простой вероятностный алгоритм, предложенный
Кантором и Цассенхаузом (Cantor, Zassenhaus, 1981), основанный
на следующем тождестве. Если р — произвольное нечетное
простое число, то
pd(x) = d
для всех полиномов q(x), поскольку полином [?(ж)]р - q(x) делит-
делится на все неприводимые полиномы степени d (см. лемму 6.2.10).
Приведенное выше тождество основано на полиномиальном раз-
разложении, справедливом для нечетного р:
26-274
- х =
_ 1].
402
Разложение на множители полиномов над целыми числами
Лемма 6.2.10. Пусть р(ж) = Р1(х)р2{х). ..рг(х), г > 1, — произве-
произведение двух или более различных неприводимых полиномов одной
и той же степени d по модулю нечетного простого р. Тогда для
любого полинома q(x), случайно выбранного среди prd полиномов
степени < rd по модулю р, полином gcd{p(x), [g(z)](p ~1)/2- 1} будет
собственным сомножителем полинома р(х) с вероятностью
1- ¦=-
которая не меньше, чем 4/9.
Доказательство. Каждый элемент поля GF(pd) является корнем
полинома
Поэтому для (pd—1)/2 элементов поля GF(pd) имеет место равенст-
равенство х(р -1)/2 = 1, для (pd —1)/2 элементов— равенство х^р ~1''2 = —1
и для одного элемента, х = 0, — равенство х^р -1^2 = 0.
Из греко-китайской теоремы об остатках для полиномов (см.
теорему 6.2.12) нам известно, что кольцо Zp[x]/p(x) изоморфно пря-
прямой сумме X г экземпляров поля GF(pd). Если х = (xi,...,хг) —
элемент кольца X, то
имеет в качестве компонент только 0, 1, —1. Число таких х, что
ж(р -1)/2 не ИМеет компонент, равных 1, равно
и, таким образом, число таких х, что х
мере одну компоненту, равную 1, равно
имеет по крайней
Из них число таких х, что все компоненты х^ ~гУ2 равны 1, равно
Разложение на множители полиномов над конечным полем
403
Следовательно, число таких х, что х^~1^2 имеет по крайней мере
одну компоненту, равную 1, и по крайней мере одну компоненту,
отличную от 1, равно
Для каждого такого х элемент ж-1 является ненулевым обрати-
обратимым элементом кольца X. Если q(x) в Zp[x] соответствует одному
из таких х значений, то [з(а:)]^''~1)/2 - 1 не является взаимно
простым с р(х) и не делится на р(х); следовательно,
является собственным делителем полинома р(х). Это происходит
с вероятностью
rird
_ |у-1)/2-ц)Г /V-i\r
" L Pd \ VW)
/У-иУ (р"-Лг
\ 2р* ) \ 2pd )
Так как 1 - \Jpd < 1 и 1 + \/рл
вероятность не меньше, чем
4/3 (поскольку pd > 3), эта
Видно, что при г = 2 мы получаем
Чтобы вычислить gcd{p(z),|>(z)]<>'''-1)/2 - 1}, мы сначала возве-
возведем q(x) в степень (pd - l)/2 по модулю р(х), пользуясь бинарным
алгоритмом возведения в степень Е, описанным в разд. 2.3.2, а
затем вычтем 1.
404 Разложение на множители полиномов над целыми числами
Лемма 6.2.10 основана на разложении хр — х = х[х^ -1)/2 +
1][х(р ~г)/2 — 1], справедливом для всех нечетных простых чисел.
Лля р = 2 имеется другое разложение полинома хр — х, которое
может быть использовано для получения результата, аналогично-
аналогичного лемме 6.2.10.
В поле GF(pd) полином след, tr(x), определяется формулой
tr(x) = х + хр + ¦¦ ¦ + хр ~ . В этом случае в поле GF{2d) име-
имеет место разложение х2 — х — tr(x)[tr(x) + 1]. В этом легко
убедиться, воспользовавшись тем, что —1 = 1 в Ъ^, и теоремой
3.3.16, согласно которой возведение в квадрат является линей-
линейным преобразованием; а именно tr(x)[tr(x) + 1] = tr(x) + [tr(x)]2 =
х + х2 -\ h x2*'1 + х2 + х4 Н \-х2" = х + х2" = х2" -х.
Заметим также, что если р(х) — неприводимый полином степени
d в Ър[х] и q(x) — произвольный полином, то значение полинома
{q(x) + [q(x)]p + [?(аг)]р + • • • + [«KaOy } [mod p(x)] является целым
числом (т.е. полиномом степени ^ 0). Чтобы в этом убедиться,
положим t(x) = tr(g(x)) [mod р(х)]. Поскольку [q(x)]p = q(x) в
поле полиномиальных остатков по модулю р(х), в этом поле имеет
место равенство [<(х)]р = t(x). Поэтому t(x) является одним из р
корней уравнения хр — х = 0, а следовательно, t(x) — целое число.
Лемма 6.2.11. Пусть р(х) = pi(x)p2(*).. .рг(х), г > 1, — произве-
произведение двух или более различных неприводимых полиномов одной
и той же степени d по модулю 2. Тогда для любого полинома
q(x), случайным образом выбранного среди 2rd полиномов степени
< rd по модулю 2, полином gcd{p(x), tr[g(x)]} является собственным
делителем полинома р(х) с вероятностью 1 — 1/2г-1.
Доказательство. Локазательство аналогично доказательству лем-
леммы 6.2.10 и остается в качестве упражнения. ?
Пример. Попробуем расщепить полином 12-й степени р(х) =
х12 + х9 + х6 + х3 + 1, полученный в примере, следующем за алго-
алгоритмом DDF, который является произведением трех полиномов
степени 4. Следуя лемме 6.2.11, выберем случайным образом
полином степени 4, q(x) = х4 + ж3 + х2 + х + 1, вычислим его
след tr[?(i)] = q(x) + [q(x)]2 + [q(x)]4 + [q(x)]8, а затем полином
gcd{p(a;), tr[g(a;)]} = x4 + x3 + x2 + x + 1, являющийся делителем
полинома р(х) (повезло!). Теперь нам осталось разложить поли-
полином р(х)/ gcd{p(x),tr[q(x)]} = х8 — х7 + хь - х4 + х3 - х + 1 на два
сомножителя степени 4; читателю остается закончить пример (и
испытать таким образом свое счастье).
Разложение на множители полиномов над конечным полем 405
Заметим, что для любого р имеет место разложение
"*-*= П ы*)-*]>
и лемма 6.2.11 может быть использована для расщепления сомно-
сомножителя в разложении полинома р(х) на множители разных степе-
степеней так же, как и лемма 6.2.10, т.е. в этом случае мы используем
соотношение Пос»<р Scd{Pd(x), tr[g(a;)] - s) = pd(x).
Из лемм 6.2.10 и 6.2.11 мы видим, что для нахождения всех
сомножителей полинома р(х) не требуется много времени. Однако
в следующем разделе мы представим детерминистический метод
решения этой задачи.
6.2.4. Алгоритм Берлекэмпа разложения на множители над
конечными полями
В этом разделе мы рассмотрим разложение на множители
нормированного свободного от квадратов полинома р(х) в %р[х],
т.е. для данного полинома р(х) с коэффициентами из множества
{0,1,2,... ,р — 1} мы хотим найти его неприводимые сомножители
Pi(x), i= 1,2,..., г, такие, что
P(x)=pi(x)p2(x)...pr(x).
Идея Берлекэмпа состоит в использовании греко-китайской тео-
теоремы об остатках, которая, как мы уже убедились в разд. 3.1.3,
справедлива не только для целых чисел, но и для полиномов.
Теорема 6.2.12 (греко-китайская теорема об остатках для поли-
полиномов). Пусть р\{х),... ,рг(х) — полиномы из кольца 2р[х], причем
Pj(x) взаимно прост с Pk(x) для всех j ф к. [Эквивалентно, мы
можем взять в качестве р»(х) различные неприводимые полиномы
над этим полем], и пусть si(x),... ,sr(x) — произвольные полиномы
в Zp[x]. Тогда существует единственный полином t(x) в Zp[x],
такой, что
deg[t(x)] < deg(pi(«)] + • • • + deg(pr(x)]
[т.е. полином t(x) определен по модулю рх(х)рг(х).. -Рг(х)] и
t(x) = Si(x) [mod Pi(x)], 1 < i < г.
Другими словами, отображение, ставящее в соответствие каждо-
каждому полиному t(x) из Zp[x]/pi(x).. .Рг(х) r-вектор [«i(x),..., sr(x)],
где t(x) = s,(x) [mod Pi(x)], 1 ^ i < г, является биекцией между
ZP[x]/pi(x).. .pr(x) и Zp[x]M(x) + Zp[x]/p2(x) + ... + Zp[x]/Pr(x).
406
Разложение на множители полиномов над целыми числами
Доказательство. Используем расширенный алгоритм Евклида
для определения полиномов т,-(х), таких, что rrii(x) П»^« Pi(x) =
1 [mod pi(x)]. Полагая t(x) := Xw[s«(*)mi(*)IIj,« #(*)]> имеем
t{x) = Si{x) [mod Pi(x)], 1 ^ i ^ г. Если бы ti{x) также был реше-
решением этой системы сравнений, то полином t\{x) — t(x) делился бы
на каждый р»(х), а потому t\(х) = t(x) [mod П« ?•(*)]• ^
Отображение t(x) = s,(x) [mod Pi(x)], используемое в теореме
6.2.12, эквивалентно утверждению *t(x) = s,-(x) [mod Pi(x) и р]»,
поскольку мы рассматриваем полиномиальную арифметику по
модулю р.
Теорема 6.2.12 утверждает, что для произвольного г-вектора
(ex,...,sr) целых чисел по модулю р существует единственный
полином t(x)t такой, что
t(x) = si [mod
deg[<(x)]
],... ,t(x) = sr [mod pr(i)],
+ • • • + deg[pr(*)] = deg\p(x)],
(Bl)
где, как мы уже говорили, р(х) = р1(х)р2(х).. .рг(х). Заметим,
что полином <(х), определенный в (В1), позволяет получить ин-
информацию о сомножителях полинома р(х), поскольку, если г ^ 2
и «1 ф «2, то gcd[p(x),i(x) — Si] делится на pi(x) и не делится на
Р2(х). Проанализируем соотношения (В1) более тщательно. За-
метим, что по теореме 6.2.2 полином <(х) удовлетворяет условию
[<(х)]р = *? = sj = t(x) [mod pj(x)] для 1 < j ^ г и потому
[t(x)Y=t(x) [mod p(x)], deg[t(x)] < deg\p(x)]. (B2)
Более того, справедлив следующий результат.
Теорема 6.2.13. В конечном поле GF(p) имеет место разложение
'-*= П (*-•)•
(ВЗ)
Доказательство. Для любого элемента s 6 GF(p) по малой тео-
теореме Ферма мы имеем sp = s [равенство имеет место, поскольку
вычисления производятся в GF(p)]; значит, s является корнем
полинома хр — х, или, эквивалентно, (х — s) является делителем
полинома хр —х. Поскольку это верно для всех s 6 GF(p), про-
произведение YlseGF(p)(x ~~ s) является делителем полинома хр — х.
Однако
deg[ П (X~S)]=P- deg(xp - х),
Разложение на множители полиномов над конечным полем 407
а поскольку оба этих полинома нормированы,
?
t€GF(p)
Следствие 6.2.14. Для любого полинома t(x) над GF(p) имеет
место равенство
[t(x)f-t(x)= П К*)"»]- (В4)
Если полином <(х) удовлетворяет условию (В2), то р(х) делит
левую часть соотношения (В4), так что каждый неприводимый
сомножитель полинома р(х) должен делить один из р взаимно
простых сомножителей в правой части соотношения (В4). По-
Поэтому все решения сравнения (В2) должны иметь вид (В1) для
некоторых si,...,sr; поскольку мы можем рг способами выбрать
элементы в<, существует в точности рг решений сравнения (В2).
[Может показаться, что найти все решения сравнения (В2) очень
сложно, но в действительности это не так, поскольку множество
решений сравнения (В2) замкнуто относительно сложения.] Ког-
Когда мы найдем все решения сравнения (В2), мы можем разложить
на множители полином р(х) в %р[х], как указывает следующая
теорема.
Теорема 6.2.15. Пусть р(х) и t(x) — два нормированных полино-
полинома над GF(p), такие, что
[t(x))p = t(x) [mod p(x)], deg[<(x)] < deg[p(x)].
Тогда
*>(*)= П gcdfcK*), <(*)-«]. (В5)
Доказательство. По предположению
[t(x)Y = t(x) [modp(x)l
а следовательно, р(х) делит р(х)]р — <(х). Поэтому
P(x) = gcd{P(x),[<(x)]p-t(x)}=gcd{p(x),
по следствию 6.2.14. Кроме того, gcd[t(x) — s,t(x) — t] = 1 для 5 ф t, a
полиномы gcd\p(x),t(x)—s] ngcd[p(x),<(x)—t] также взаимно просты.
Поэтому gcd{p(x),fl^GF(p)[t(x) - s)} - ILeGJF(p)Scd[p(x).*Oc) ~ «J
(см. также упр. 1 к этому разделу). ?
408
Разложение на множители полиномов над целыми числами
Степень каждого сомножителя в правой части соотношения
(В5) не более степени полинома t(x), которая, в свою очередь, <
deg[p(z)]. Таким образом, в правой части соотношения (В5) должно
быть не менее двух нетривиальных делителей полинома р(х), и
(В5) представляет собой нетривиальное разложение полиномар{х).
Кроме того, если t(x) — скаляр (т.е. deg[<(z)] = 0), то
р(х) = gcd[p(z), 0]
). •] =
П
Поэтому (В5) — формула полного разложения, и она является
основной формулой, используемой в алгоритме Берлекэмпа.
Подведем итоги. Пусть р(х) — свободный от квадратов полином
степени п, который мы хотим разложить на множители над полем
GF(p), и предположим, что каким-то образом мы можем найти
полиномы t(x) в кольце Щ>[х], 1 ^ deg[<(«)] < п, такие, что [<(ж)]р =
t(x) [mod (p(z)]. [Заметим, что если степень полинома t(x) ^ 1, то
[<(х)У — t(x) ф 0, поскольку коэффициент при наивысшей степени
х не равен нулю.] Из теоремы 6.2.13 мы знаем, что у полинома
хр — х в поле GF(p) имеется р корней, а именно х = 0,1,2,...,р —
1; следовательно, полином хр — х разлагается на множители по
модулю р следующим образом: хр + х = х(х — 1)(х — 2)... (z — р\).
Заменяя х на t(x), получаем разложение
[<(*)]" - Цх) = <(*)[*(*) - 1][<(«) - 2]... [*(*) - р + 1]
в кольце Zp[x]. Так как полином р{х) делит [t(x)]p — t(x), то
p(x)=gcd{p(x)Mx)]p-t(x)}-
Кроме того, поскольку полиномы i{x) — s и t(x) — t взаимно просты
при s ф t, мы имеем (по следствию 6.2.14, теореме 6.2.15 и упр. 1)
p(x)=gcd{P(x),[t(*)]P -*(*)}=
что является нетривиальным разложением на множители полинома
р(х) над GF(p).
Таким образом, основная задача состоит в определении полино-
полиномов t(x). Это делается путем решения системы линейных уравне-
уравнений, и введенная в разд. 6.2.3 матрица Q оказывается очень полез-
полезной; в частности, очень важную роль играет нуль-пространство
Разложение на множители полиномов над конечным полем
409
(определенное ниже) матрицы Q — I, где I — единичная п х п-
матрица.
Система линейных уравнений, необходимая для определения
полиномов t(x), таких, что р(х) делит [<(х)]р — t(x), получается
следующим образом. Пусть
где U, г — 0,..., п — 1, — коэффициенты, которые требуется найти.
Чтобы проверить, делит ли р[х) полином [<(х)]р — t(x), взглянем
сначала на [<(я)]р; по теореме 6.2.2
(B6)
[t(x)]p = to + hx" + t2x2p + • • • + tn-lX(n-Vp.
Деля х'р на р(х), получаем
xip=p{x)qi{x) + n{x), i = 0,l,2,...,n-l, (B7)
где ri(x) = r,-,o + riix + ¦•• + r.^-iz"-1. [Заметим, что полиномы
qi(x) и ri(x) легко вычислить, если мы знаем р(х).]
Теперь, заменяя х'р в (В6) соответствующими выражениями из
(В 7), получаем
[t(x)f = t0r0(x) + hri(x) + ¦ ¦ ¦ + <„_1Г„_1(ж) -(- [кратное р(х)].
Таким образом, р(х) делит \t(x)]p -t(x) тогда и только тогда, когда
р(х) делит полином
= «о[г0(*) - 1] + ti[ri(x) -*] + •••+ <n-i[rn-i(«) - z"], (B8)
степень которого ^ п — 1. Поэтому полином р(х) степени п будет
делить (В8) тогда и только тогда, когда последний равен нулю.
Полагая (В8) равным нулю и собирая коэффициенты при l,z,
х2,...,х"~1, мы получаем систему п линейных уравнений от п
неизвестных <о>*i»- - - i'n-i; эти неизвестные суть коэффициенты
полинома t(x), такого, что р(х) делит [<(я)]р — t(x).
Пусть
»,0 Год . . . Го,п-1
П,0 Гц . . . Г1 „_1
(В9)
: |
ч-1,0
— матрица, строки которой образуют коэффициенты полиномов-
остатков го(х),... ,rn_i(i). (Замечание. Сначала выписываются
коэффициенты меньших степеней х.) Тогда имеет место
410 Разложение на множители полиномов над целыми числами
Теорема 6.2.16. Полином t(x) = t0 -Mi« H Mn-iz" является
решением сравнения [t(x)]p = t(x) [mod p(x)] тогда и только тогда,
когда
(to,ti,...,tn-i)Q = (to,ti,---,tn-i), или
(BIO)
Доказательство. Доказательство следует из того, что (В10) имеет
место тогда и только тогда, когда
= t(x") = [t(x)T [mod p(*)]-
(См. также теорему 6.2.9.) ?
Пусть N — множество векторов t = (to,ti,.. . ,tfn_i), таких,
что t(Q — i) = 0, где t — вектор коэффициентов полинома t(x),
а 0 — n-мерный нулевой вектор. Тогда N называется нуль-
пространством матрицы Q—I. Пусть {bi,b2,... ,ЬГ} — множество
векторов в N, таких, что каждый вектор а из N является линейной
комбинацией векторов bi,b2,...,br [заметим, что для каждого
вектора bt имеется соответствующий полином 6*(я)], т.е. для
любого вектора а из N в Щ, существуют числа х\,...,хг, такие, что
а = xibi H hxrbr. Наименьшее г, для которого существует такое
множество {bi,b2,... ,ЬГ}, называется размерностью пространства
N, а само множество называется базисом нуль-пространства. (См.
также приложение.)
Таким образом, в силу теоремы 6.2.16 нахождение подходя-
подходящих полиномов t(x) эквивалентно определению нуль-пространства
матрицы Q — I (см. также историческое замечание 2). Как мы
убедимся ниже, мы легко можем вычислить нуль-пространство и,
следовательно, можем применить теорему 6.2.15 и вычислить сом-
сомножители полинома р(х). Однако как мы узнаем, что нашли полное
разложение полинома р(х)? Ответ дается следующей теоремой.
Теорема 6.2.17. Число различных неприводимых сомножителей
Pi(x) полиномар(х) в TLp\x\ равно размерности г нуль-пространства
матрицы Q — I.
Доказательство. Полином р(х) делит Yl,eQF(p)gcA\p(x),t(x) — s]
тогда и только тогда, когда каждый полином pi(x) делит t(x) — s,-
Разложение на множители полиномов над конечным полем 411
для некоторого s,- € Zp. Из теоремы 6.2.12 следует существование
для данных si,..., sr 6 Zp единственного полинома t(x) [mod p(x)],
такого, что t(x) = s,- [mod Pi(x)]. Мы мажем рг способами выбрать
элементы s,-, и, как мы уже отмечали, существует в точности рг
решений сравнения [t(x)]p — t(x) = 0 [mod p(x)]. Из теоремы 6.2.16
нам известно, что t(x) является решением (В2) тогда и только
тогда, когда
ИЛИ
У этой системы имеется рг решений. Таким образом, размерность
нуль-пространства матрицы Q — I равна г и равна числу различ-
различных нормированных неприводимых сомножителей полинома р(х),
а ранг матрицы Q — I равен п — г. (См. также упр. 2 к этому
разделу.)
Кроме того, теорема 6.2.17 дает нам третий тест неприводимос-
неприводимости (два первых теста см. в разд. 6.2.2).
Тест 3. Полином р(ж) неприводим в Щ,[х] тогда и только тогда,
когда нуль-пространство матрицы Q — I одномерно и gcd\p(x),
р'(х)] = 1.
Доказательство. По теореме 6.2.17 нуль-пространство матрицы
Q — I одномерно тогда и только тогда, когда р(х) = fpi(i)]*, т.е.
является степенью неприводимого полинома. Тогда г — 1 и р(х)
неприводим в том и только том случае, когда gcd[p(x),p'(i)] = I. D
Теорема6.2.18. Пустьр(х) = pi(x).. .pr(x) в2р[ж] и{ЬьЬ2,... ,ЬГ}
— базис нуль-пространства матрицы Q — I. Тогда для каждого
3 Ф J' 1 1 ^ 3' < У ^ г, существуют i, 1 < t < г, и s e Zp, такие, что
Pj(x) делит, а р,(г) не делит gc6\p(x),bk(x) - в].
Доказательство. Прежде всего заметим, что в нуль-пространстве
матрицы Q — I существует вектор, j-я компонента которого от-
отличается от его /-й компоненты. Следовательно, существует к,
1 ^ к ^ г, такое, что
Ък(х) [mod pj(x)] ф Ьк{х) [mod py(x)].
Это можно также заключить по противоречию, к которому мы
придем в противном случае. Именно, если для всех к имеет
место равенство, то, поскольку любое решение уравнения (В2)
412 Разложение на множители полиномов над целыми числами
является линейной комбинацией {bi, Ьг,... ,ЪГ} с коэффициента-
коэффициентами из Zp, для любого такого решения b существует элемент
s ? Zp, такой, что b(x) = s [mod Pj(x)], b(x) = s [mod Pj>(x)]
[см. также (Bl)]. Однако существует решение уравнения (В2),
такое, что Ь(х) = 0 [mod pj(x)] и 6(х) = 1 [mod Pj'(x)], и это про-
противоречие доказывает выписанное выше соотношение. Полагая
bk(x) [mod Pj(x)] = s € Zp, получаем, что Pj(x)\[bk(x) - s] и Pj'(x) не
делит [б* (ar) — e]. D
Из предыдущего обсуждения ясно, как полином р(х) над конеч-
конечным полем разлагать на неприводимые множители.
ВА. Алгоритм Верлекэмпа (Berlekamp's Algorithm)
Вход: Нормированный свободный от квадратов полином р(х)
над GF(p), deg\p(x)] = п.
Выход: Неприводимые сомножители полинома р(х) над GF(p).
1. [Построение матрицы Q] Построить п х n-матрицу Q так, как
описано в (В9). Как показано ниже, это можно сделать одним
из двух способов в зависимости от того, насколько велико
число р.
2. [Триангуляризация Q —I] Привести матрицу Q—I к треуголь-
треугольному виду, вычислив ее ранг л-ги найдя нуль-пространство
матрицы Q — I, т.е. найти г линейно независимых векторов
bi,b2l.. ¦. ,br, таких, что bj[Q — I] = 0 для 1 ^ j ^ г. [Первый
вектор всегда может быть выбран в виде A,0,...,0), что
представляет тривиальное решение bi(x) = 1 уравнения (В2).
Приведение к треугольному виду может быть осуществлено
так, как описано в разд. 5.3.3, или с использованием пре-
представленного ниже алгоритма NS.] В этой точке г — это
число неприводимых сомножителей полинома р(х), поскольку
решениями уравнения (В2) являются рг полиномов, соответс-
соответствующих векторам aibi + a2b2 Ч Ь arbr при любом выборе
целых чисел 0 ^ ai,.. . ,ar ^ р. Поэтому, если г = 1, то
полином р(х) неприводим, и алгоритм заканчивает работу.
3. [Вычисление сомножителей] Пусть Ь2(х) — полином, соот-
соответствующий вектору Ь2. Вычислим gcd\p(x),b2(x) — s] для
всех s € GF(p). В результате по теореме 6.2.15 получим
нетривиальное разложение полинома р(х). Если с исполь-
использованием 6г(а;) получено менее г сомножителей, вычислим
gcd[w(x),bk(x) - s] для всех s 6 GF(p) и всех сомножителей
w(x), найденных к данному времени, для к = 3,4,...,г, пока
Разложение на множители полиномов над конечным полем 413
не найдем г сомножителей. Теорема 6.2.18 гарантирует, что
таким образом мы найдем все сомножители полинома р(х).
Если р мало, то вычисления на данном шаге весьма эффек-
эффективны. Однако для больших р (например, р > 25) может быть
предложен лучший способ, разбираемый ниже.
Анализ времени работы алгоритма ВА. Число вычислений,
выполняемых на шаге 2 алгоритма Берлекэмпа, равно О(п3). (Это
было показано при доказательстве анализа времени вычислений
алгоритма ASPRS в разд. 5.3.3.) Из разд. 3.2.2 нам известно, что
О(п3) мажорирует время вычисления gcd; поскольку требуется не
более р вычислений gcd для каждого вектора b из базиса и не
более г из этих вычислений gcd будут нетривиальны, получаем
<ва[р(*)] = О(рт3).
Читателю следует отметить зависимость этого алгоритма от
р. Лля больших р алгоритм неэффективен. Кроме того, из
следствия 6.1.2 нам известно, что среднее число г сомножителей
приблизительно равно 1п(гс).
Пример. Разложим на множители над GFA3) свободный от квад-
квадратов полином р(х) = 8х4 + 6х3 + 8х2 + 3* + 12 или эквивалентный
ему нормированный полином х4 + Ах3 + х2 + 2х + 8 (полученный
домножением полинома р(х) на 8 = 5). Это достаточно длинный
пример, но читателю следует основательно его изучить.
Вычислим сначала обратный каждого ненулевого элемента по-
поля GTA3) = {0,1,2,3,4,5,6,7,8,9,10,11,12}, поскольку мы будем
ими пользоваться: Обратные элементы вычисляются с исполь-
использованием методов, приведенных в гл. 2. Эти элементы суть
{1,7,9,10,8,11,2,5,3,4,6,12}.
На первом шаге алгоритма ВА вычисляется матрица Q, размер
которой в этом случае равен 4x4. Первая строка матрицы Q
всегда имеет вид A,0,0,0), представляя полином х° [mod p(x)] =
1. Вторая строка представляет х13 [mod p(x)], третья пре-
представляет ж26 [mod p(x)] и, наконец, последняя представляет
х39 [mod p(x)]. Очевидно, что нам нужно научиться быстро вы-
вычислять xk+1 [mod p(x)], если известно хк [mod p{x)]\ ниже мы
предлагаем такую процедуру общего вида.
Пусть р(х) = хп -(- Cn-ix"-1 -j Ь схх -(- са, и предположим, что
• +
[mod p{x)];
414 Разложение на множители полиномов над целыми числами
тогда
k+1 =rk,n-ix"
г*,гж2 + riiOx
1 CiX - Со)
=rk+i,n-ix
n~l
где
rk+i,o [mod
,-i - 0.
(Bll)
Эта простая рекуррентная формула позволяет без особого труда
3к
р
вычислять х,х2,х3,
[mod
Вычисления могут быть
выполнены с использованием одномерного массива (rn-i,..., ri,ro),
если положить в цикле t := rn_i, rn_i := (rn_2 — tcn-i) (mod p),...,
ri := (r0 — tci) (mod p) и r0 :— (—tc0) (mod p). Таким образом,
используя арифметику по модулю 13 для нашего примера, мы
получаем следующую таблицу:
к
0
1
2
3
4
5
б
7
8
9
10
11
12
13
Гк,3
0
0
0
1
9
2
7
9
11
8
0
2
5
5
Гк,2
0
0
1
0
12
2
11
8
0
6
2
0
12
4
Гк,1
0
1
0
0
11
0
2
9
4
10
0
1
9
0
п,о
1
0
0
0
5
б
10
9
6
3
1
0
10
12
Таким образом, вторая строка Q равна A2,0,4,5). Аналогично
мы определяем х26 [mod p(x)], ж39 [mod p(x)] и, наконец,
10 0 0 1
12 0 4 5
12 5 б 12
1 4 3 б J
го 0 0 0
12 12 4 5
12 5 5 12
L 1 4 3 5
Разложение на множители полиномов над конечным полем 415
Если р — большое число, то мы можем получить полиномы хк
[mod p(x)] более эффективным способом, чем описанный в (Bll); a
именно, эти значения могут быть получены за O[log(p)] операций
возведения в квадрат mod р(ж), т.е. перехода от хк [mod p(x)] к
х2к [mod p(x)]. Операцию возведения в квадрат сравнительно лег-
легко выполнить, если сначала составить дополнительную таблицу
значений Xх [mod р(х)] для « = n, n + 1,..., 2п — 2. Итак, если
хк [mod р(х)] = Cn^ix"'1 + h c\x + с0,
то
х2к [mod р(х)] = [с*.!
clCo)x + eg] [mod p(x)],
где степени x2n,... ,xn могут быть заменены полиномами из
дополнительной таблицы. Таким образом мы вычисляем хр
[mod p(x)], вторую строку матрицы Q. Чтобы получить осталь-
остальные строки матрицы Q, мы можем вычислить х2р [mod p(x)], х3р
[mod р(ж)],..., просто последовательно умножая на хр [mod p(x)]
аналогично тому, как мы возводили в квадрат mod p(x).
Этим завершается шаг 1 алгоритма Берлекэмпа.
Следующий шаг алгоритма ВА требует нахождения нуль-
пространства матрицы Q —I. В общем случае пусть М — матрица
размера пхп надполем, ранг п—r которой нам нужно определить.
Кроме того, предположим, что мы хотим найти линейно незави-
независимые векторы {bi,b2 br}, такие, что Ъ^М = 0, » = 1,2,... ,г.
Алгоритм этих вычислений основан на наблюдении, что лю-
любой столбец матрицы М можно домножить на ненулевую вели-
величину и любое кратное одного из ее столбцов может быть при-
прибавлено к другому столбцу без изменения ранга или векторов
{ЬьЬг,.. .,ЪГ}. {Заметим, что полиномы 6,-(г), соответствующие
базисным векторам Ь,- нуль-пространства матрицы Q — I, суть
все решения сравнения [t(x)]p = t(x) [mod р(г)].} Таким образом,
мы имеем следующий алгоритм приведения к треугольному виду
(Knuth, 1981; Lidl et al., 1984).
NS. Алгоритм нуль-пространства (Null-Space algorithm)
Вход: Матрица М = (my), 0 < i,j < n — 1 размера пхп,
элементы которой принадлежат полю.
Выход: Линейно независимые векторы bi,b2,... ,br, такие, что
Ь,М = 0, t = 1,2,..., г, где п — г — ранг матрицы М.
416 Разлоэюение на множители полиномов над целыми числами
1. [Инициализация флагов столбцов] Положить г := 0 и с0 :=
с\ := С2 := • • • := cn_i := — 1.
2. [Главный цикл] Для Л = 0,1,...,п — 1 выполнять {если сущес-
существует столбец j, такой, что т^,- ф О и Cj < 0, j = 0,1,..., п - 1,
то выполнять следующее [умножить столбец j матрицы М
на —1/mftj, так что rrihj станет равным —1; затем прибавить
умноженный на ты столбец j к столбцу * для всех » ф j;
наконец, положить Cj := h]. Если не существует столбца j,
такого, что rrthj ф 0 и Cj < 0, j ~ 0,1,2,..., п — 1, то. положить
г := г + 1 и выдать вектор Ъг = (ЬГ|о,Ьг,1,•• • ,br,n-i), где для
1,
о
если а = j > О, (если с* > О для более чем
одного к, взять любой из них),
если j = ft,
в противном случае}.
Применяя описанную выше процедуру к вычисленной выше
матрице М := Q —I, элементы которой принадлежат полю GFA3),
мы приходим к следующему (следует помнить, что в алгоритме
NS строки и столбцы матрицы нумеруются с 0, а не с 1).
При h = 0 мы получаем на выходе вектор bi = A,0,0,0), со-
соответствующий полиному-константе 1. При Л = 1 мы можем
взять j равным 0,1,2 или 3, поскольку с,- = —1 для i = 0,1,2,3;
выбор полностью произволен, хотя он влияет на получаемые на
выходе векторы. Мы выбираем j = 0 и, пользуясь таблицей об-
обратных величин, вычисленной в начале этого примера, получаем
—1/тю = —A/12) = —12 = 1 (mod 13); операции над столбца-
столбцами (colo := 1 • colo, colx := coli + 12 • colo, C0I2 := C0I2 + 4 • col0, C0I3 :=
C0I3 + 5 • colo), описанные в приведенном выше алгоритме, меняют
матрицу М на матрицу
Г 0 0 0 0 1
12 0 0 0
12 6 1 7
L 1 3 7 10 J
Выделенный жирным шрифтом элемент 12 в строке 1 и столбце
0 означает, что со = 1. При Л — 2 мы можем выбрать j — 1 и,
действуя аналогичным образом [т.е. вычисляя сначала —A/6) =
Разложение на множители полиномов над конечным полем 417
—11 = 2 (mod 13), а затем полагая coli := 2 соЦ, colo := colo + 12
coli, C0I2 := C0I2 + 1 • соЦ, C0I3 := C0I3 + 7 • coli], получим матрицу
Г0 0 0 01
12 0 0 0
0 12 0 0
L 8 6 0 0J
Как и выше, выделенный жирным шрифтом элемент 12 в строке
2 и столбце 1 означает, что а = 2. Теперь каждый столбец,
не содержащий выделенного жирным шрифтом элемента, состоит
полностью из нулей, поэтому при h = 3 алгоритм дает на выходе
вектор Ь2 = @,8,6,1), соответствующий полиному х3 + 6х2 + 8х.
Из вида матрицы М(:= Q — I) при Л = 3 ясно, что векторы bi
и Ь2 удовлетворяют уравнению Ь*М = 0. Поскольку выполненные
выше вычисления дали два линейно независимых вектора, полином
р(х) должен иметь в точности два неприводимых сомножителя над
GFA3), которые получаются на шаге 3 алгоритма Берлекэмпа.
На этом завершающем шаге 3 алгоритма ВА нам требуется
выполнить необходимые вычисления наибольших общих делите-
делителей, для того чтобы найти два сомножителя полинома р(х), т.е.
нам нужно вычислить gcd\p(x),b2(x) - в] для всех s € GFA3), где
р{х) = х4 + 4х3 + х2 + 2х + 8 и Ь2{х) = х3 + баг2 + 8х. Выполнив
вычисления, видим, что два сомножителя получаются при s = 1 и
s = 9, т.е.
s = 1 : gcd\p(x), Ь2(х) - 1] = х2 -(- 9х + 9,
s = 9 : gcd\p(x), Ь2(х) - 9] = х2 + 8х + 11.
Проверка: (х2 + 9х + 9)(х2 + 8х+11) = х4 + 4х3 + х2 + 2х + 8 (mod 13).
Ясно, что когда р большое и мы хотим вычислить наиболь-
наибольшие общие делители для всех s € GF(p), мы должны выпол-
выполнить огромный объем работы. Кантор и Цассенхауз (Cantor,
Zassenhaus, 1981) предложили лучший способ вычислений. Если
t(x) — произвольное решение уравнения (В2) и р нечетно, то
p(x)\{[t(x)Y - <(*)} = *(*){[<(*)](р-1)/2 + 1}{[<(*)](р-1)/2 - 1}. Это
предполагает, что мы будем вычислять
(В12)
При этом с некоторой вероятностью (В12) является нетривиаль-
нетривиальным делителем полинома р(х). Для определения этой вероятности
27-274
418 Разложение на множители полиномов над целыми числами
заметим, что из gcd{p(x), [i(z)](p~1)/2 + / — 1} = р(х) следует, что
gcd{p(a;), [Цх)]^1^2 — /+1} = 1, а значит, вероятность того, что по-
полином gcd{p(z), [*(*)]<*-W2 -1} или gcdfp^), [*(х)]<»'-1>/2 + 1} будет
нетривиальным делителем, равна
1 - prob(gcd{p(*), Мх)]*-1»3 - 1} = К*))
- prob(gcd{p(*), \t(x)]<>-W + 1} = К*))-
[Заметим, что не может одновременно быть gcd{p(x), [f(x)](p J^2 —
1} = 1 и gcd{p(x), [<(*)]0>-i)/a + 1} = 1, поскольку deg[<(*)] < п.] Ра-
Равенство gcd{p(x), \t(x)Y?~iyi—1} = p(x) вьтолняется тогда и только
тогда, когда Pj(x)\{[t(x)](p~1M2 — 1}, 1 < j < г, что имеет место
тогда и только тогда, когда sy " = 1 (mod p), 1 < j < г [см.
(В1)]. Мы знаем, что в точности (р— 1)/2 целых чисел s в интерва-
интервале 0 ^ s < р удовлетворяют сравнению s^)/2 = 1 (mod p). Если
<(х) — выбранное случайным образом решение уравнения (В2), все
рг решений которого равновероятны, то вероятность того, что gcd
в (В12) совпадает с полиномом р(х), равна [(р— 1)/2р]г. Те же са-
самые рассуждения справедливы для prob(gcd{p(x), [г(х)](р~1У2 + 1} =
р(х)), и, таким образом, вероятность того, что нетривиальный де-
делитель полинома р(х) будет получен путем вычисления (В 12),
равна 1 - 2[(р - 1)/2р]г > 1 - 2A/2)г > 1/2 для всех г ^ 2 и р > 3.
Поэтому, если только р не слишком мало, удачная идея —
заменить последний шаг алгоритма Берлекэмпа следующей про-
процедурой. Положим t(x) := ai&i(z) + a262(:c) + ••¦ + arbr(x), где
коэффициенты а,- выбираются случайным образом в интервале
О < а{ < р. Пусть р(х) = wi(x)... wh(x) — текущее частичное раз-
разложение полинома р(х), где первоначально h равно 1. Вычисляем
для всех I, таких, что deg[u;,(x)] > 1, после этого заменяем Wi(x)
на <7i(x)[u;,(x)/5,(x)] и увеличиваем значение Л до тех пор, пока не
будет найден нетривиальный gcd. Этот процесс мы повторяем при
различном выборе полиномов <(х) до тех пор пока не достигнем
h = г. Детали оставляются читателю.
Подгем (mod р)-разложения до разложения над TL 419
6.3
Подъем (mod p)-разложения рр разложения над целыми чис-
числами
В этом разделе мы рассмотрим, как поднять разложение mod p
до разложения над целыми числами, и в этом процессе мы от-
откажемся от ограничения, что полином р(х) в Z[x] нормирован.
Читателю следует в этом месте еще раз просмотреть разд. 6.1.2.
Прежде всего давайте соберем вместе различные соображения
о разложении полинома р(х) в общем случае. Предположим, что
полином р{х) разлагается на множители над целыми числами и
что р(х) = р\(х)р2{х); тогда по теореме 3.2.16 р{х) = Pi(x)p2{x)
(mod p) для всех простых р, так что за исключением случая
р|1с[р(х)] существует нетривиальное разложение по модулю р. По-
Поэтому в попытке восстановить возможное разложение полинома
р(ж) над целыми числами можно использовать эффективный алго-
алгоритм полиномиального разложения в GF(p) [рассматривавшийся
в разд. 6.2]. Если, например, для данного полинома р(х) степени 8
выполняются соотношенияр(х) = Р1(ж)рг(х) (mod Pi),deg[pi(x)] — 6
и deg[p2(x)] = 2, а для другого простого числа рг — соотноше-
соотношения р(х) = Pi(x)p2(x)p3(x) (modp2), deg\pi(x)] = 4, deg[p2(z)] = 3
и deg[p3(z)] = 1, то, поскольку в разложении mod рг нет сомно-
сомножителей степени 2, полином р(х) должен быть неприводимым над
целыми числами.
Приведенный выше пример, может быть, слишком прост и пря-
прямолинеен, и следует отметить, что неприводимость далеко не
всегда устанавливается так легко. Следует помнить, что для
всех к ^ 2 Свиннертон-Дайер (Swinnerton-Dyer, 1970) построил
полиномы степени 2 , неприводимые над целыми числами, но по-
полностью разлагающиеся на линейные и квадратичные множители
по модулю любого простого числа.
Если мы попытаемся найти сомножители полинома р(х), рас-
рассматривая его поведение по модулю разных простых чисел, то в
общем случае результаты не так легко свести воедино. Поэтому
желательно ограничиться одним простым числом и посмотреть,
какие «дивиденды» могут быть из него извлечены при условии,
что по нашему убеждению сомножители по модулю этого просто-
простого числа имеют нужные степени. Мы в деталях рассмотрим два
подхода: выбор одного большого простого числа и выбор одного
маленького простого числа в комбинации с «подъемом».
27*
420
Разложение на множители полиномов над целыми числами
Мы начнем с первой идеи, а именно разлагать полином р(х) по
модулю большого простого р, где р — некоторое число, большее
удвоенного значения абсолютной величины коэффициентов всех
возможных делителей полинома р(х), т.е. коэффициенты любого
истинного разложения р(ж) = Pi(a;)p2(x) над целыми числами дол-
должны в действительности лежать между —р/2 и р/2. [Ниже мы
вычисляем границы коэффициентов делителей полинома р(х), не
вычисляя самих этих делителей.] Тогда все возможные делите-
делители над целыми числами могут быть «вычитаны» из делителей
по модулю р, которые мы умеем вычислять. За этим подходом
скрываются следующие рассуждения. Бели мы выберем малень-
маленькое простое р и р(х) = pi(x)p2(x) (mod p), то в общем случае
мажет существовать много способов согласовать это разложение
с разложением на множители полинома р(х) над целыми числами.
Например, рассмотрим полином
р(ж) = 112а;4 -(- 58а;3 - 31а;2 + 107а; - 66
= A4а;2 - Ьх + 11)(8х2 + 7х - 6) в Щх].
По модулю 13 полином р(х) разлагается следующими способами:
р(ж) = 8(а;2 + 8* + 11)(а;2 + 9а; + 9) (mod 13)
= (8а;2 -(- 12а; + Ю)(а;2 + 9а; + 9) (mod 13)
= (х2 + 8х + 11)(8х2 -I- 7х + 7) (mod 13).
(См. также пример в разд. 6.2.4.) Заметим, что существует мно-
много полиномов, сравнимых с каким-либо сомножителем mod 13,
которые могут быть сомножителями полинома р(х) над целыми
числами, и для того чтобы обнаружить истинные сомножители
в Щх], потребуются определенные усилия. [Этой проблемы не
существует, если мы работаем с нормированным полиномом р(х).]
Итак, предположим теперь, что р(х) = pi(x)p2(x) (mod p), где
р достаточно велико, так что коэффициенты любого возможного
делителя полинома р(х), степень которого равна степени полино-
полинома Pi(x), лежат между —р/2 и р/2; более того, предположим, что
мы выбрали pi(x) так, что все его коэффициенты лежат в этом
интервале. Тогда если р(х) = Pi(x)P2(x) в Щх), где Pi(x) = pi(a;)
(mod р) и Р2(х) = Рг(х) (mod p), то должно выполняться равенст-
равенство Pi(x) = Pi(a:). [В противном случае существует коэффициент
полинома Pi(x), отличающийся от соответствующего коэффици-
коэффициента полинома pi(x) ненулевым кратным числа р. Но тогда этот
Подъем (mod р)-разложения до разложения над Ъ 421
коэффициент полинома Pi(x) должен быть по абсолютной величи-
величине ^ р/2, т.е. слишком большим по абсолютной величине, чтобы
определять Р\{х) как возможный делитель полинома р(х).] Поэто-
Поэтому если р(х) = р\{х)р2(х) (modp), то либо pi(x)\p(x) в Щх), либо
разложение р(х) = pi(a;)p2(a;) (mod p) не соответствует никакому
разложению над целыми числами.
Рассмотрим теперь, как найти подходящее большое р. (В этом
месте читателю следует еще раз посмотреть определения различ-
различных норм полиномов, введенные в разд. 1.2.)
Ограничения на коэффициенты делителей полинома.
Мы начнем с хорошо известной теоремы, которую докажем в
общем случае для комплексных коэффициентов.
Теорема 6.3.1. Пусть р(х) = х" + d-ix"'1 + \- с0 — нор-
нормированный полином с комплексными коэффициентами, и предпо-
предположим, что все его комплексные корни по абсолютной величине
меньше некоторого положительного вещественного числа 6. Если
f(x) — нормированный делитель полинома р(х), deg[/(a;)] = г,
то все коэффициенты полинома f(x) по абсолютной величине
Доказательство. В С[х] пусть f(x) = Fli^i^r(x"*"s») = xr+fr-ixr~1 +
¦¦¦ + fo, где —Si, 1 ^ i ^ г, — комплексные корни полинома
f(x). Перемножая разложение /(ж) = rii<t<r(;c + s«') и приравнивая
коэффициенты, получаем
/r_l =
/г_2 =
+
• + sr,
+ S1S4 -I— =
/r-3 =
/о =
Поскольку каждый -s,, 1 ^ i ^ г, является корнем полинома
p(x), имеет место неравенство | — e<| ^ Ь. Поэтому, пользуясь
неравенством треугольника, для каждого » мы получаем, что |/j|
не превосходит суммы, полученной заменой всех s,- на 6. Например,
при г = 4
«2
s4|
|s2|
b + b + b + b =
422 Разложение на множители полиномов над целыми числами
S2S3 + S2S4 + S3S4|
|*2*з| + |«2S4| + |«3«4| ^ 662,
| + |s2«3s4| <463,
l/ll =I
l/ol =|sis2s3s4| <64.
Заменяя каждый s* на 6, получаем полином fi(x) = (х + 6)r =
5D<r (t)^**1""*- Таким образом,
чем заканчивается доказательство теоремы.
D
Из теоремы 6.3.1. видно, что, для того чтобы найти хорошую
границу для коэффициентов делителей полинома р(х), нам нужно
найти хорошую границу для корней р{х). Имеет место следующая
Теорема 6.3.2 (Specht, 1949). Пустьр{х) - хп+сп_1хп-1+- ¦ -+с0 —
нормированный полином с комплексными коэффициентами. Кроме
того, пусть zi,z2,... ,Zk — корни полинома р(х) (с соответствую-
соответствующими кратностями), такие, что 1 ^ \zi\ ^ \z2\ < • • • ^ \zk\. Тогда
П М < Ь(гIг-
Доказательство. Доказательство достаточно громоздко, и мы
его опускаем. Оно имеется в работе Шпехта (Specht, 1949) на
немецком языке и (другое) в статье Миньотта (Mignotte, 1974) на
английском. (См. также историческое замечание 3.) ?
Из хорошо известного выражения для коэффициентов полинома
замечаем, что для выписанного выше полинома р(х)
Теперь мы готовы получить границу для коэффициентов дели-
делителей полинома р(х).
Подгем (mod р)-разложения до разложения над 7L 423
Теорема 6.3.3 (Mignotte, 1974). Пусть р(х) - xn + Cn-ii" +
• ¦ • + со — нормированный полином в Щх], и предположим, что
р(х) = pi{x)p2(x).. .рт(х), где pi(x), I < i < m, — нормированные
полиномы в Щх]. Тогда
(Ml)
где d — Y^Kitm deg[p»(*)]; кроме того, если рн(х) — один из этих
сомножителей, где рл(х) = хн -\ 1- слдх + Ch,o, то
2, i = 0,1 л-
(М2)
Доказательство. Оно непосредственно следует из теорем 6.3.1,
6.3.2 и хорошо известной формулы для коэффициентов полинома,
выписанной выше. О
Из приведенных выше рассуждений видно, что большое простое
число р должно быть выбрано так, что р ^ 2d|p(x)|2, так что
если р(х) = Pi(x)p2(x) (modp), то либо pi(x)\p(x) в Щх], либо
разложение р(х) = pi(x)p2(x) (mod p) не соответствует никакому
разложению над целыми числами.
Рассмотрим теперь второй подход. Вместо использования боль-
больших простых чисел р, которые должны быть чрезвычайно велики,
если у полинома р(х) высокая степень или большие коэффициенты
(или и то, и другое), мы можем также использовать маленькие
простые числа при условии, что полином р(х) (mod p) свободен от
квадратов. Один из лучших методов разложения полинома р{х)
над целыми числами, известных к настоящему времени, состоит в
том, чтобы разложить его по модулю р для маленького простого
р, а затем расширить (или «поднять») это разложение единствен-
единственным способом до разложения по модулю р* для подходящего к,
определенного условием (М2).
6.3.1. Линейный и квадратичный подъем
В этом разделе мы предполагаем, что разложили на множители
полином р(х) в 2р[ж] для некоторого маленького простого р и хотим
поднять это разложение до разложения над целыми числами.
Пусть р(х) — полином степени п в Zpk[x], такой, что 1с[р(х)] ф 0
в GF(p). Кроме того, пусть gi{x) и hi(x) — полиномы в GF(p)[x],
424 Разложение на множители полиномов над целыми числами
такие, что р(х) = g-i{x)hi{x) над GF(p) и gcd[fli1(x),hi(x)] = 1. Ни-
Ниже мы предлагаем два метода подъема этого разложения над
GF(p) до единственного разложения над Zpk = 1^, т.е. нахож-
нахождения gk{x),hk{x) в Zpk[x], таких, что р(х) = gk(x)hk(x) над Zpk
и gk(x) = д\{х), hi(x) = hi(x) (mod p). Для достижения это-
этого нам понадобятся следующие два алгоритма. Первый алго-
алгоритм — это хорошо известный расширенный алгоритм Евклида
в GF(p)[x], а второй алгоритм решает полиномиальное уравнение
a'(x)gj(x) + b'(x)hj(x) = с(х) для данных gj(x),hj(x) и с(х) в %р*[х].
Алгоритм 6.3.1 (расширенный алгоритм Евклида в GF(p)[x]).
Лля данных д(х) и h(x) в GF(p)[x] этот алгоритм вычисляет
единственные (с точностью до обратимых множителей) полино-
полиномы а(х),Ь(х) и с(х) в GF(p)[x], такие, что д(х)а(х) + h(x)b(x) =
с(х) — gcd\g(x),h(x)] над GF(p) при условии, что deg[a(i)] <
deg[h(x)] - deg[c(x)] и deg[6(x)] < deg[g(x)] - deg[c(z)]. Описание
этого алгоритма уже было представлено в разд. 3.2.2 (ХЕА-Р).
Алгоритм 6.3.2 (решение полиномиального уравнения в Zpj[r]).
Для данных полиномов a(x),b(x),c(x),gj(x),hj(x) в Цз[х], таких,
что gj(x)a(x) + hj(x)b(x) = 1 над ZpJ и старшие коэффициенты
полиномов a(x),b(x),gj(x),hj(x) обратимы в ZpJ, этот алгоритм
вычисляет полиномы а'(х) и Ь'(х) в Zpj[x], такие, что д,(х)а'\х) +
hj(x)b'(x) = с(х) над TLps, при условии, что deg[a'(x)] < deg[hj(x)],
следующим образом1).
1. Хотя коэффициенты полиномов принадлежат не полю, а коль-
кольцу Zpj, предположение об обратимости старших коэффициентов
позволяет использовать PDF, алгоритм деления полиномов над
полем, чтобы вычислить в ZpJ[x] полиномы q(x) и г(ж), такие, что
а{х)с{х) = hj(x)q(x) + г(ат) и deg[r(x)] < deg^(x)].
2. Полагаем а'(х) := г(х), Ь'(х) := Ь(х)с(х) + gj(x)q(x).
Тогда
gj(x)a'(x) + ^(х)Ь'(х) =9j(x)[a(x)c(x) - hj(x)q(x)]
+ hj(x)[b(x)e{x)+gi(x)q(x)]
=c(x)bZpj.
a^ Далее этот алгоритм применяется только в случае, когда
deg[c(z)] < deg\gj(x) ¦ hj(x)]. Тогда в качестве а'(х) и Ь'{х) мож-
можно взять остатки от деления полиномов а{х)с{х) и Ь(х)с(х) на hj(x)
и gj(x) соответственно. — Прим. перев.
Подгем (mod р)-разложения до разложения над 7L 425
Используя это, мы можем получить следу-ющий алгоритм линей-
линейного подъема, вытекающий из доказательства следующей леммы.
Лемма 6.3.4 (Гензель). Пусть р(х) — полином степени п в Ж[х],
такой, что 1с\р(х)] ф 0 в GF{p), р — простое число. Пусть дх{х)
и hx(x) — полиномы в GF(p)[x], такие, что р(х) = gi(x)hi(x) над
GF(p) и gcd[flfi(«), hi(x)] = 1 над GF(p). Тогда в Ърк\х\ существуют
единственные полиномы дк(х),hk(x), такие, что р(х) = gk{x)hk{x)
над V, deg[Ai(z)] = deg[hi(x)] и дк{х) = gi(x), hk{x) = h^x) над
GF(p).
Доказательство. Пользуясь алгоритмом 6.3.1, найдем полиномы
а(х),Ь(х), такие, что g1(x)a(x)+hi(x)b(x) = 1. Достаточно показать,
как построить gj(x), hj (ж) в Zpi[x] для j = 2,..., к, такие, что р(х) =
g}(x)hj(x) над Zpi, deg[/i,(x)] = deg[hi(ar)] и </Дх) = fld(x), ft^(ar) =
ЛДх) над GF{p). Предположим, что такие gj(x),hj(x) существуют
для некоторого j > 1, и пусть с{х) — такой полином в GF(p)[x], что
р(х) - gj(x)hj(x) - pjc(x) над Zpi+i. Пользуясь алгоритмом 6.3.2,
вычислим а'(х), Ь'(х) в GF(p)[x], такие, что g1(x)a'(x) + hl(x)b'(x) =
с(х) надС^(р). Определим
= gi(x) + р>'b'(x),
где следует отметить, что deg[ftJ+1(i)] = deg[hj(x)] и lc[hj+i(x)] =
1с[Л,-(х)]. Очевидно, что gj+i(x), hj+i(x) — полиномы в Zpi+i[x],
) = gi(x), hj+1(x) = hi(x) над GF{p) и
hs{x)V(x)]
c(x)
= p(x) над
D
Очевидно, что доказанная выше лемма дает нам пошаговый ме-
метод подъема разложения, т.е. от GF{p) к Ъръ,Ъръ,... ,Zp*. Поэтому
он называется алгоритмом линейного подгема. Заметим, что на
практике часто требуется поднимать более двух сомножителей.
В этом случае подъем осуществляется повторным применением
леммы 6.3.4 к парам сомножителей, один из которых — полином
р,(х), а другой — произведение Pi+i(x)pi+2(x). ..pr(x). А именно,
если
p(x)=p1(x)p2(x)...pr(x) (modp),
426 Разложенье на множители полиномов над целыми числами
то мы вначале берем g\(x) = pi(x) и hi(x) = р2(х)... рг(х) и под-
поднимаем до Zpk[x]; затем полагаем р(х) := р{х)/дх(х) в Zp*, gi(x) :—
Pz(x), /»i(x) ;= рз(х)...рг(х) и поднимаем до Ърь[х] и т.д. Если
полином р(х) нормирован, то алгоритм может быть модифициро-
модифицирован так, что одновременно может подниматься произвольное число
взаимно простых сомножителей.
Читателю следует тщательно изучить два следующих примера;
в первом мы используем множество неотрицательных вычетов
целых чисел, а во втором — симметричное множество вычетов.
HLLA. Алгоритм линейного подъема Гензеля (Hensel Linear-
Lifting Algorithm)
Вход: Простое число р, натуральное число к, а также полиномы
р(х) е Щх), <7i(x) и hx(x), оба € GF(p)[x], такие, что р{х) =
gi(x)hx(x) (mod р) и gc<%!(:E),/ii(z)] = 1.
Выход: Полиномы gt{x) и hk(x), оба ? (Z/pk)[x\, такие, что
Р(х) = 9h(x)hk(x) (modp)*, а также дк(х) = дг{х) (mod p) и
Ajfc(z) = hi(x) (mod p).
1. [Инициализация] Положить д(х) := д\(х), h(x) := hi(x), a
затем применить расширенный алгоритм Евклида в GF(p)[x]
(алгоритм 6.3.1, описанный в этом разделе) к полиномам д(х)
и h(x) и вычислить полиномы а(х) и Ь(х), оба € GF(p)[x],
такие, что д(х)а{х) + h(x)b(x) = 1 над GF(p).
2. [Основной цикл] Лля г = 2,3,..., к выполнять {вычислить
поправку с(х) := \р{х) - g(x)h(x)]/pi~1 (mod р); затем при-
применить алгоритм 6.3.2 (также описанный в этом разделе) к
д(х), h(x), а(х),Ь(х) и с(х), все е GF(p)[x], чтобы вычислить по-
полиномы a'i^ix) и 6{_х(г), такие, что g(x)a'i_l(x) + h^b'^^x) =
с(х) над GF(p), и положить д(х) := g(x)+pi~1b'i г(х) и h(x) :=
3. [Выход] Вернуть д(х) и h(x).
Пример [линейная гензелева конструкция; р(х) не обязательно
нормирован]. Рассмотрим полином р(х) = 112ж4 + 58г3 - 31г2 +
107г — 66 в Щх], для которого имеет место сравнение
р(х) = (8а;2 + Пх + Щ(х2 + 9х + 9) (mod 13).
Мы поднимем это разложение с G.FA3) до 213з, пользуясь линейной
гензелевой конструкцией и арифметикой неотрицательных выче-
вычетов. Для лучшего понимания процесса сообщим, что над целыми
Подгем (mod ^-разложения до разложения над 7L 427
числами имеет место разложение р(х) = (8х2+7х — 6)(Ых2 — 5х+11);
эти два сомножителя полинома р(х) найдены путем применения
алгоритма подъема. Очевидно, что в нашем примере gi(x) —
8г2 + 12г+ 10 и fti(x) = ж2-(-9г-(-9. Пользуясь алгоритмом 6.3.1, вы-
вычисляем полиномы а(х) =1+11и Ь(х) = Ъх + 11 в GF(l3)[x], такие,
что gi(x)a(x) + hi(x)b(x) = 1 над GfA3). [В действительности из
алгоритма 6.3.1 мы получаем а(х) - 5ж + 3, Ь(х) = 12г + 3, но тогда
gl(x)a(x) + hi(x)b(x) - 5 в поле GFA3), следовательно, мы должны
подправить их, домножив на соответствующую константу.]
Затем из соотношения р(х) - gi(x)hi(x) = 13с(г) (где g\(x),hi(x)
рассматриваются в Щх\) получаем с(х) = 8ж4 + Их3 + 9х2 + 6г + 1
над GFA3). Заметим, что р ¦ с(х) — это разность между р(х)
и gi(x)hi(x) в Zpj[r], и нам нужно теперь подкорректировать
наши сомножители, т.е. прибавить к gi(x) и h\(x), чего им не
хватает для того, чтобы разность исчезла. Используя алгоритм
6.3.2, вычисляем полиномы а'(х) = х + 9 и Ь'(х) = 8г2 + 12г + 6
в GF(lZ)[x], такие, что gi{x)a\x) + /ц(гN'(г) = с(х) над GFA3).
Затем определяем
92(х) = gi(x) + p- Ь'(х) = (8z2 -I- Пх + 10) + 13(8г2
= 112а;2-)-168а;+ 88,
h2(x) = h1{x) + p- a'(x) = {х2 + 9х + 9)
6)
х + 9) = х2 + 22z + 126.
Здесь р(х) = Зг(г)Лг(^) над Z169=i32; что легко может быть прове-
проверено, но нмд2(х), Hwh2(x) не делят p(z) bZ[x]. Однако заметим, что
д2{х) = 8A4г2 + 21г + И), и если мы скомбинируем сомножитель 8
с h2(x), то получим 8 • h2(x) = 8(г2 + 22г+126) = 8г2 + 176г +1008 =
8г2 + 7х+ 163 = 8г2 + 1х - 6 (mod 169). Здесь (8г2 + 1х- 6)|р(ж) над
целыми числами, и, следовательно, это один из сомножителей;
разделив, мы получаем второй сомножитель 14г2 — Ъх + 11.
Следует отметить, что в приведенном выше примере требо-
требовались некоторые усилия для определения истинных сомножите-
сомножителей, поскольку полином р(х) не был нормирован. К счастью,
для этого имеется простой способ, а именно, из разложения
р(х) = р\{х)р2{х) следует разложение 1ф(г)] -р(х) = p'^xty^x), где
lc[pi(i)] = 1с[р'2(г)] = 1ф(ж)]. («Я надеюсь, что Вы не будете воз-
возражать, если я домножу полином на его старший коэффициент
перед тем, как разложить его на множители».) Мы можем дейст-
действовать, как и прежде, но используя границу для коэффициентов
сомножителей полинома 1с[р(г)] • р(х), а не р(х).
428
Разложение на множители полиномов над целыми числами
Прежде чем мы перейдем ко второму алгоритму подъема, целе-
целесообразно сейчас просмотреть различные рассуждения, исполь-
используемые при попытке разложить на множители полином р(х) =
112х4 -(- 58х3 - 31х2 + 107* - 66 над целыми числами (см. также
разд. 6.1.2).
Прежде всего нам нужно убедиться, что над целыми чис-
числами р(х) свободен от квадратов, т.е. мы должны вычислить
gcd\p(x),p'(x)], где р'(х) = 448х3 + 174а;2 - 62* + 107. Величина
используемых коэффициентов нам известна, так что мы использу-
используем один из модулярных gcd-алгоритмов, описанных в разд. 5.1.2,
т.е. мы должны вычислить gcd[p(x),j/(x)] над различными полями
GF(pi), где р1,р2, • • • ,Рк, таковы, что рх ръ .. .рк > 2В, где В — мак-
максимальный по абсолютной величине коэффициент полиномов р(х)
и р'{х): а именно, мы попытаемся вычислить gcd\p^(x),p'^p\x)]
для р = 5,7,11. [Напомним, что р(р)(х) = р(х) (mod p).]
р = 5. В этом случае рE>(х) = 2х4 + За:3 + Ах2 + 1х + 4 (mod 5),
plE\x) = Зх3+4ж2 + Зх + 2 (mod 5) и gcd[pE)(x),p'E)(x)] =
4х + 4 (mod 5).
р=7. Это число не разрешается, поскольку 7|112.
р - 11. В этом случае р(и\х) = 2х4 + Зх3 + 2х2 + 8х (mod И),
р'A1)(х) = 8х3 -I- 9х2 + 4х + 8 (mod И) и gcd[pA1)(x),
p/(U)(x)] = 2 (mod 11).
Поскольку степень последнего gcd меньше степени полинома
gcd[pE)(x),p'( '(x)], мы приходим к выводу, что 5 — несчаст-
несчастливое простое число; кроме того, мы заключаем, что нам не
нужно испытывать еще какие-либо простые числа, поскольку
gcd[p(x),p'(x)] = 1 ир(х) свободен от квадратов над целыми числа-
числами. (Это также легко проверить, используя PSQFF.)
Убедившись, что полином р(х) свободен от квадратов, мы дол-
должны затем выбрать соответствующее простое число р для того,
чтобы применить алгоритм Верлекэмпа. Простое число р должно
быть таким, чтобы полином р(х) (mod p) оставался свободным от
квадратов и имел ту же степень, что и р(х). Сделаем следующие
замечания.
р = 2. Это простое число использовать нельзя, поскольку 2|112
и deg[pB)(x)] < 4.
Подъем (mod р)-разложения до разложения над TL
429
р = 3. Это простое число использовать нельзя, поскольку по-
полином рC)(г) не свободен от квадратов, т.е. р^{х) =
х4 + хбЗ + 2х2 + 2х = х(х + 2)(х + IJ.
р = 5. Это простое число использовать нельзя, поскольку по-
полином р(ъ\х) не свободен от квадратов, т.е. рE)(ж) =
2х4 + Зх3 + 4х2 + 2х -I- 4 = (х + 4)(х + 1JBх + 1).
р = 7. Это простое число использовать нельзя, поскольку 7|112
и deg[pG)(x)] < 4.
р = 11. Это простое число можно использовать для наших вы-
вычислений, поскольку полином р(п)(х) свободен от квад-
квадратов над CF(ll) (проверить) и разлагается на три
сомножителя, а именно рA1)(х) = х(х + 2)Bх2 + Юх + 4).
р = 13. Это простое число можно использовать для наших вы-
вычислений, поскольку полином рA3)(х) свободен от квад-
квадратов над CF\13) (проверить) и разлагается на два сом-
сомножителя, а именно р<13>(х) = (8х2+12х+10)(х2 + 9х-(-9).
Как мы уже видели, нам следует работать с разложением по мо-
модулю 13, поскольку оно дает наименьшее количество сомножителей
и их подъем потребует меньшей работы.
Ниже мы представим второй пример подъема разложения по
mod p до разложения по mod pi для некоторого j, пользуясь линей-
линейной конструкцией Гензеля; теперь используется симметрическая
система вычетов (Yun, 1973).
Пример [линейная конструкция Гензеля; р(х) — нормированный
полином]. Рассмотрим полином р(х) = х5 + 12х4 — 22х3 - 163х2 +
309х - 119 в Щх]. При р = 5 мы имеем
р(х) = 9\{x)hi{x) (mod 5),
где <7i(x) = хЗ-(- 2 и h\{x) = х7 +2х — 2. Мы собираемся выполнить
две итерации конструкции Гензеля, т.е. мы найдем дз(х), Лз(х),
такие, что р(х) = 5з(г)Лз(г) (m°d 53); в действительности в этом
случае р(х) = g3(x)h3(x) в Щх]. Как и прежде, для того чтобы луч-
лучше понять, как получаются коэффициенты полиномов дз(х), Ь.з(х),
мы приоткроем ответ, а именно
= х3 -
-I-17, h3{x) = x2+ 12х - 7.
Пользуясь алгоритмом 6.3.1, получаем полиномы а(х) = — х + 1 и
6(х) = х2 -I- 2х - 2 в GFE)[x], такие, что gi(x)a(x) + hi(x)b(x) = 1
430 Разложение на множители полиномов над целыми числами
в GFE). Затем из соотношения р(х) - gi(x)hi(x) = 5 ¦ с(х) (где
9i(x), hi(x) рассматриваются в кольце Щх\) получаем
= 10*4 - 20z3 - 165г2 + 305ж - 115,
откуда
Pix) ~ BiMhifx)
c(x)=
Заметим, что р • с(х) — разность между р(х) и gi{x)hi(x) в Ж^з)[х],
и нам нужно подкорректировать сомножители, т.е. прибавить к
<7i(z) и hx{x) то, чего им не хватает для того, чтобы разность
исчезла. Пользуясь алгоритмом 6.3.2, получаем полиномы
а'(х) = 2х - 1, Ь'(х) = 2х - 2,
такие, что gi(x)a'(x) + /ii(a:N'(z) = с(х) над GFE), а затем опреде-
определим
9ъ{х) = дг(х) +р- Ь'(х) — х3 + Юг - 8,
h2(x) = h^x) + р ¦ а'(х) = х2 + 12х - 7.
Теперь легко проверить, что р(х) ~ g2{x)h2(x) (mod p2); кроме
того, заметим, что h2(x) = 1ц(х) и д2(х) = gi(x) (mod p) и в
дополнение к этому (поскольку мы знаем окончательный ответ)
h2(x) = h3(x) и д2(х) = д3(х) (mod p2) [в действительности мы уже
имеем h2(x) = h3(x)].
Мы имеем теперь для второй итерации новый полином
и, как это было раньше, нам нужно найти новые полиномы а'(х) и
Ь'(х) в GF(p)[x], такие, что д2(х)а'(х) + /i2(xN'(x) = с(х) над GFE).
Пользуясь алгоритмом 6.3.2, получаем а'(х) = 0 и 6'(г) = -х + 1 в
GF(p)[:r], а затем определяем
ff3(a;) = д2(х) -(- р2 • Ь'(х) = х3 - 15ж + 17,
М*) = Лз(^) = а;2 + 12* - 7,
а это и есть искомые полиномы.
Подъем (mod р)-разложения до разложения над 7L 431
Мы видим, что если обозначить последовательные пары поли-
полиномов {а'(х),Ь'(х)} через {а'^(х),Ь'^(х)}, то имеют место следующие
соотношения:
9з(х) = gi(x) + р ¦ Ь[(х) + р2 ¦ Ъ'2(х),
h3(x) = h1(x)+p- а'г(х) +р2 ¦ а'2(х),
очевидно, означающие, что (/з(*) = ffi(«) и Лз(^) = ^i(^) (mod p).
Перейдем теперь ко второму алгоритму подъема, предложен-
предложенному Пассенхаузом в 1969 г.; это так называемый квадратичный
алгоритм подъема, поскольку он расширяет разложение «за один
шаг» от Zpj до Zp3j, т.е. разложение последовательно поднимается
rnodp2, р4, р8 и т.д. В приводимом ниже доказательстве мы при-
придерживаемся соглашения, что нижние индексы j, 2j обозначают
полином в Щх], коэффициенты которого однозначно определены
только modp', mod p2j соответственно.
Лемма 6.3.5 (Zassenhaus, 1969). Пусть р(х) — полином в 1^ъ[х],
такой, что \с\р(х)] ф 0 в GF(p), и пусть р(х) = gj(x)hj(x) (mod pi),
где для gj(x) и hj(x) в Zp,[x] существуют полиномы а;(х),6Дх),
такие, что gj{x)a,j(x) + hj(x)bj(x) = 1 над Zp>. Тогда мы можем
определить полиномы a2j(x),b2j(x),g2j(x),h2j(x) в Zpij[x], такие,
что р(х) = g2j(x)h2j(x) (mod p2'), g2j(x)a2j(x) + h2j(x)b2j(x) = 1 над
Zp*j и g2j(x) = gj(x) (mod p>), hv(x) = hj(x) (mod pi).
Доказательство. Пусть полиномы Cj(x) удовлетворяют соотноше-
соотношениям р(х) - gj(x)hj(x) = p> ¦ cj{x) над TLva. Пользуясь алгорит-
алгоритмом 6.3.2, вычислим а'](х),Ц(х) в Ер,[х], 'такие, что д^(х)а^(х) +
Ь,(хЩ(х) - с;{х) над Zpi. Положим g2j(x) = gj(x) + р> ¦ Ь'^х) и
h2j(x) = hj(x) + pi ¦ a'j(x) над Zp2,. Проверка того, что полиномы
g2j(x),h2j(x) удовлетворяют выписанному выше условию, теперь
тривиальна.
Лля доказательства второго утверждения леммы предположим,
что c'j(x) — такой полином в Zpj[x], что g2j(x)aj(x) + h2j(x)bj(x) —
1 + Р* • c'j(x) наД Zp2'- Найдем а'-(х),Ъ'!(х) в Ъ^[х\, такие, что
gj(x)a"(x) + hj(x)b'J(x) = c'j{x) над Zpj, а затем положим a2j(x) —
uj{x) - pi ¦ a'j(x) и b2j(x) = bj(x) - pi -Vj{x) над Zp2j. Тогда
g2j(x)a2j(x) + h2j(x)b2j(x) =g2j(x)[aj(x) - pi ¦ a'-(x)]
432 Разложение на множители полиномов над целыми числами
+ bj(x)h2j (х)
=1 над
?
Летали реализации алгоритма квадратичного подъема могут
быть найдены в литературе. Продемонстрировано, что квадра-
квадратичный алгоритм подъема существенно быстрее линейного [см.
работы (Lenstra, 1982b, p. 184-185; Miola et al., 1974; Yun, 1974;
Zassenhaus, 1978)].
6.3.2. Нахождение истинных сомножителей над целыми
числами
Чтобы разложить полиномр(х) из Щх\ на множители, мы должны
сделать следующее:
1. Выбрать подходящее простое число р и разлагать р(х) над
GF(p).
2. Выбрать минимальное значение к, такое, что
(Щ
щи
|2>
и поднять разложение р(х) над GF(p) до разложения над Zpk,
р(х) = 1с[р(л;)] • Ili^i^r ^i(x) (modp*). Значение к, определяемое
этим соотношением, получено из (М2), принимая во внимание
факт, что мы ищем делители полинома 1с[р(а;)] • р(х) (в соответст-
соответствии с механизмом восстановления старшего коэффициента, как мы
видели в рассуждениях разд. 6.3.1 после первого примера подъ-
подъема) и что мы можем ограничиться делителями степени ^ |_r*/2j.
После получения разложения полинома р(х) (mod pk), работая с
полиномами, которые не обязательно являются нормированными,
мы должны сделать следующий шаг 3.
3. Вычислить полином h(x) = 1с[р(г)] • П>е5 М*) наД %рк
для каждого подмножества S множества {1,...,г}, такого, что
deg[h(x) ^ Ln/2J> и проверить, является ли h(x) делителем поли-
полинома lc[p(z)] -p(x). Если да, то примитивная часть полинома h(x)
является сомножителем полинома р(х) над целыми числами.
В настоящее время в общем случае не существует способа уз-
узнать, какое подмножество неприводимых сомножителей по модулю
рк образует неприводимый сомножитель полинома р(х) над це-
целыми числами, и, таким образом, нам нужно проверить для всех
Упражнения 433
возможных комбинаций степени ^ |_n/2j. Дают ли они сомножитель
полинома р(х) над Ъ. Если р(ж) неприводим над Z, то ни одно из
этих пробных делений не будет успешным, и, как мы уже упоми-
упоминали, тест экспоненциально зависит от числа г сомножителей по
модулю рк. Однако можно значительно уменьшить число пробных
делений в Щх\, если A) сначала проверить делимость свободных
членов, а затем B) разложить р(х) по модулю нескольких простых
чисел. На шагах 2 и 3 в приведенном выше алгоритме надо
использовать простое число с наименьшим числом сомножите-
сомножителей и сочетать информацию о степенях сомножителей по модулю
различных простых чисел, чтобы уменьшить разноообразие воз-
возможностей для степеней сомножителей над Ъ. Как мы уже видели,
если р(х) разлагается по модулю р\ на 3 сомножителя степени 2 и
если р(х) разлагается по модулю рг на 2 сомножителя степени 3,
то полином р(х) неприводим над целыми числами.
Наконец, существуют два очевидных способа реализации шага
3. Первый — это процедура мощности, т.е. перебираем сочетания
по s сомножителей для s = 1,2,..., [r/2j. Второй подход — это
процедура степени, т.е. перебираем сочетания общей степени s
для s = 1,2,..., [r/2j. Обнаружено, что процедура мощности
предпочтительнее.
У пра жненил
Раздел 6.1.1
1. Пользуясь методом Шуберта-Кронекера, разложите на
множители следующие полиномы:
a. х4+х3+х2—х—2 (указание: сомножители суть х2+х+2,
х-1,х + 1);
b. х4-х2 + 1;
c. х6 + 1;
d. х4 + х3 + х2 + х + 1.
Раздел 6.2.1
2S-27I
1. Рассмотрим полином р(х) = 112г4 + 58ж3 - 31*2 + 107а: - 66
в Щх]. Свободен ли он от квадратов в Щ>[х], р — 3,5,11,13?
434 Разлоокение на множители полиномов над целыми числами
(Указание. Для ответа на эту часть упражнения пос-
посмотрите шаг 2 разд. 6.1.2, т.е. выполните вычисление
gcd.) Используйте алгоритм PSQFFF для нахождения
свободных от квадратов сомножителей полинома р(ж) в
ад, р = 3,5, и, 13.
2. Рассмотрим полином р(х) = ж5 + х + 1 в Щх]. Свободен ли
он от квадратов в Щ>[х], р = 3,5,7, И, 13? Используйте ал-
алгоритм PSQFFF для нахождения свободных от квадратов
сомножителей полинома р(х) в Zp[x], p = 3,5,7,11,13.
Раздел 6.2.2
1. Докажиту теорему 6.2.7 в обратном направлении, т.е. до-
докажите, что если функция F определена на натураль-
натуральных числах, а функция / определена равенством /(п) =
2. Вычислите i'3D) и найдите все неприводимые полиномы
степени 4 в 2з[я].
Раздел 6.2.3
1. Докажите лемму 6.2.11.
2. Используя методы, приведенные в этом разделе, разложите
на множители полиномы
a. х9 — х в 2з{ж];
b. х25 - х в Zs[x\;
c. хь+х4 + 1 вЖ2[х];
d. х6 + х 3 2
- 2[x].
Раздел 6.2.4
1. Покажите, что если 6i(z) и Ь2(х) — взаимно простые поли-
полиномы в кольце Ър\х\ (или над произвольным полем) и р(х)
принадлежит Zp[x], то
gcd[p(a;),b1(xN2(a:)] =
2. Докажите, что если V — векторное пространство размер-
размерности г над полем GF(p), то оно содержит рг элементов.
3. Пользуясь алгоритмом Берлекэмпа, разложите на множи-
множители полиномы
а. хь + х4 + 1 вЪ2\х]\
Упражнения 435
b. х12+х9 + х6 + х3+1в Z2[x];
c. х8 - х7 + х5 - х4 + х3 - х + 1 в Z2[x];
d. x9 - х в Z3[x];
e. ж25-а; в 25[ж];
f. 2х* + Зя* + 2х2 + 6 в Zn[x].
Раздел 6.3
1. Найдите границы для коэффициентов сомножителей в Щх]
полиномов
a. z5 + z4 + l;
b. хе + х5 + х3 + х2+х+1;
c. х6 + х5 + z4 + х3 + х2 + X + 1;
d. х9 — z;
e. г25 — х;
f. 2х4 + Зх3 + 2х2 + 8.
Раздел 6.3.1
1. Рассмотрим полиномы
a. г5 + х4 + 1;
b. х6 + х5 + х3 + х2 + х + 1;
c. хв + х5 + х4+х3 + х2 + х+1;
d. x9-x;
e. г25 - х;
f. 2х4 + Зх3 + 2х2 + 8.
В упражнениях разд. 6.2.4 мы просили разложить неко-
некоторые из этих полиномов на множители в %р[х] для выде-
выделенных значений р; кроме того, в упражнениях разд. 6.3
мы просили вычислить соответствующие границы для ко-
коэффициентов их сомножителей в Щх]. Возьмите полином
по своему выбору и выполните линейный подъем его раз-
разложения по модулю р до разложения над целыми числами.
2. Какова функция времени вычисления для алгоритма
HLLA?
3. Опишите основные шаги алгоритма HQLA (Hensel's Quad-
Quadratic-Lifting Algorithm).
436
Разложение на Множители полиномов над целнми числами
В следующих упражнениях мы применяем понятие подгема к
решению полиномиального сравнения f(x) = 0 (mod Pk).
4. Докажите, что произведение любых it последовательных
целых чисел делится на к\ (Указание. Воспользуйтесь тем,
что» согласно формуле бинома, коэффициент при xkyn~k
в разложении бинома (х + у)" является целым числом
n\/k\(n-k)\.)
5. С помощью упр. 3 докажите, что если х = а — решение
сравнения f(x) = О (mod р>), то решение по модулю р^+1
получается из линейного сравнения
tf'(a) = -f(a)/pi (modp),
где f'(x) — первая производная функции f(x). Заметим,
что это линейное сравнение может не иметь решений,
иметь одно решение или р решений. (Указание. Лля данно-
данного а решение по модулю р^+1 будет иметь вид a + tp*, где t
определяется с использованием разложения Тейлора.)
Упр. 5 используется в следующих упражнениях.
6. Решите сравнение х2 + х + 7 = 0 (mod З3).
7. Решите сравнение х3 + х + 57 = 0 (mod 53).
8. Решите сравнение х2 + х + 47 = 0 (mod 73).
9. (Подъем квадратного корня.) Пусть т = (pi)ei(p2)ea---(Pr)er
— нечетное целое число, и предположим, что gcd(a,m) =
1 и о — квадрат некоторого целого числа по модулю
т. Мы хотим найти х, такой, что х2 = a (mod m), в
предположении, что для каждого » нам известен невычет по
модулю pi, i = 1,2,... ,г (см. также упр. 22 и 23 разд. 3.3.1).
а. Для каждых фиксированных р := р% и е := е% вос-
воспользуйтесь алгоритмом упр. 23 к разд. 3.3.1, что-
чтобы определить некоторое хо, такое, что (xqJ = a
(mod p). Вычислив такое хо, найдите некоторое
2 1 2
X2P2 Н 1- Ze-i
, такое, что х2 = а
х = хо +
(mod pe).
Ъ. Опишите, как найти х, такой, что х2 = a (mod m).
Раздел 6.3.2
1. Можно ли разложить на множители полином р(х) = х3 —
1х + 7 над целыми числами?
2. Разложите на множители полиномы р(х) — ж5 + ж4 + 1 и
р(х) = хъ + х + 1 над целыми числами.
Исторические замечания и литература 437
Упражнения по программированию
Раздел 6.3.1
1. Разработайте процедуру, которая будет решать сравне-
сравнения по модулю некоторого целого числа, не обязательно
простого. (Воспользуйтесь системой компьютерной алгеб-
алгебры и пакетом для разложения полиномов над конечными
полями.)
Исторические замечания и литература
1. Существует также (представленная ниже) теорема Штикель-
бергера, позволяющая нам определить, четное или нечетное число
неприводимых сомножителей имеет данный полином в Щ,[х], если
р — нечетное простое число.
Теорема Штикельбергера. Пусть р — нечетное простое число,
р(х) — нормированный свободный от квадратов {так что его
дискриминант discr[p(x)] отличен от 0} полином степени п в 2р[х],
и пусть г — число неприводимых сомножителей Полинома р(х)
в Zp[x]. Тогда г = тг (mod 2) в том и только том случае, когда
дискриминант discr[p(x)] является квадратом в Щ,.
[Доказательство ее можно найти в (Childs, 1979).]
2. Мак-Элис (МсЕНесе, 1969) описывает простой для програм-
программирования алгоритм определения множества полиномов {В\(Х),
...,Ьг(х)}, которые разделяют сомножители полинома р(х); это
множество полиномов может быть вычислено без матричной ди-
агонализации, и каждый полином этого множества имеет вид
Ь(х) = х' + х'р + х'р Н Н х'р' [mod p(x)] для некоторых значений
i и s, так что [Ь(х)]р = b(x) [mod p(x)]. Недостаток*этого метода
состоит в том, что время его работы зависит от степеней сом-
сомножителей полинома р(х), в то время как алгоритм Берлекэмпа
зависит от n, p и числа сомножителей.
3. Следует заметить, что теорема 6.3.2 соответствует теореме 1
в статье Миньотта 1974 г. В действительности эта теорема впер-
впервые упоминалась Ландау в 1905 г., а затем Шпехтом в 1949 г. В
438
Разложение на множители полиномов над целыми числами
сочетании с хорошо известной теоремой 6.3.1 получается граница
для коэффициентов сомножителей полинома.
Панкратьев Е.В. Компьютерная алгебра. Факторизация много-
многочленов. — М.: Изд-во МГУ, 1988.
Bender E.A., Goldman J.R. On the application of Moebius inversion in
combinatorial analysis. American Mathematical Monthly 82, 789-802,
1975.
Berlekamp E.R. Factoring polynomials over finite fields. The Bell System
Technical Journal 46, 1853-1859, 1967.
Berlekamp E.R. Algebraic coding theory. McGraw-Hill, New York,
1968. [Имеется перевод: Берлекэмп Э. Алгебраическая теория
кодирования. — М.: Мир, 1974.]
Berlekamp E.R. Factoring polynomials over large finite fields. Mathe-
Mathematics of Computation 24, 713-735, 1970.
Butler M.C.R. On the reducibility of polynomials over a finite field. The
Quarterly Journal of Mathematics Oxford Second Series 5, 102-107,
1954.
Calmet J., Loos R. An improvement of Rabin's probabilistic algorithm
for generating irreducible polynomials over GF(p). Information
Processing Letters 11, 94-95, 1980.
Calmet J., Loos R. Deterministic versus probabilistic factorization of
integral polynomials. In Computer Algebra, EUROCAM 1982 Lecture
Notes in Computer Science, Springer-Verlag, New York, 1982, pp.
117-125.
Camion P. Un algorithm de construction des idempotents primitifs
d'ideaux d'algebressur Fq. Comptes Rendus des Seances de I'Academie
des Sciences 291, 479-482, 1980.
Cantor D.G., Zassenhaus H. A new algorithm for factoring polynomials
over finite fields. Mathematics of Computation 36, 587-592, 1981.
Cantor M. Geschichte der Mathematik, Vol. 4. Teubner Verlag, Leipzig,
1908.
Childs L. A concrete introduction to higher algebra. Springer Verlag,
New York, 1979.
Gunji H., Arnon D. On polynomial factorization over finite fields.
Mathematics of Computation 36, 281-287, 1981.
Hensel K. Theorie der algebraischen Zahlen. Teubner Verlag, Leipzig,
1908.
Исторические замечания и литература 439
Kaltofen E. Factorization of polynomials. Computing (Suppl. 4) 95-113,
1982.
Knuth D.E. The art of computer programming, Vol. 2, 2nd ed. Seminu-
merical Algorithms. Addison-Wesley, Reading, MA 1981. [Имеется
перевод первого издания: Кнут Д. Искусство программирова-
программирования для ЭВМ. Т. 2. — М.: Мир, 1977.]
Landau E. Sur quelques theoremes de M. Petrovitch relatifs aux zeros des
fonctions analytiques. Bulletin de la Societe Maihematique de France
33, 251-261, 1905.
Lauer M. Computing by homomorphic images. Computing (Suppl. 4),
139-168, 1982.
Lazard D. On polynomial factorization. In Computer Algebra, EURO-
CAM 1982 Lecture Notes in Computer Science, Springer-Verlag, New
York, 1982, pp. 126-134.
Lenstra A.K. Lattices and factorization of polynomials. Technical Report
190/81, Department of Computer Science, Mathematisch Centrum,
Amsterdam 1981.
Lenstra A.K. Factoring polynomials over algebraic number fields. Tech-
Technical Report 213/82, Department of Computer Science, Mathematisch
Centrum, Amsterdam, 1982a.
Lenstra A.K. Factorization of polynomials. In Computational methods in
number theory. H.W. Lenstra, Jr and R. Tydeman, eds. Mathematical
Centre Tracts, Vol. 154, Amsterdam, 1982b,j>p. 169^198.
Lenstra A.K., Lenstra H.W. Jr., Lovasz L. Factoring polynomials with
rational coefficients. Mathematische Annalen 261, 515-534, 1982.
Lidl R., Pilz G. Applied abstract algebra. Springer-Verlag, New York
1984.
McEliece R.J. Factorization of polynomials over finite fields. Mathematics
of Computation 23 861-867, 1969.
Mignotte M. An inequality about factors of polynomials. Mathematics of
Computation 28, 1153-1157, 1974.
Miola A., Yun D.Y.Y. Computational aspects of Hensel-type univariate
polynomial greatest common divisor algorithms. Proceedings of
EUROSAM '74, 46-54, 1974.
Moenck R.T. On the efficiency of algorithms for polynomial factoring.
Mathematics of Computation 31, 235-250, 1977.
Musser D.R. Algorithms for polynomial factorization. Ph.D. Thesis,
University of Wisconsin-Madison, Department of Computer Science
1971.
440 Разложение на множители полиномов над целыми числами
Musser D.R. Multivariate polynomial factorization. Journal of the
Association for Computing Machinery 22, 291-308, 1975.
Musser D.R. On the efficiency of a polynomial irreducibility test. Journal
of the Association for Computing Machinery 25, 271-282, 1978.
Petr K. Ueber die Reduzibilitaet eines Polynoms mit ganzzahligen Koef-
fizienten nach einem Primzahlmodul. Casopis pro Pestovani Matem-
aiiky a Fysiky 66, 85-94, 1936.
Rabin M.O. Probabilistic algorithms in finite fields. SIAM Journal of
Computing 9, 273-280, 1980.
Schwarz S. Sur le nombre des racines et des facteurs irreductibles d'une
congruence donne. Casopis pro Pestovani Matematiky a Fysiky 69,
128-145, 1939.
Schwarz S. On the reducibility of polynomials over a finite field. The
Quarterly Journal of Mathematics Oxford, Second Series 7, 110-124,
1956.
Sims C.C. Algebra, a computational approach. Wiley, New York, 1984.
Simmons G. On the number of irreducible polynomials of degree d over
GF(p). American Mathematical Monthly 77, 743-745, 1970.
Smith S. On the value of a certain arithmetical determinant. Proceedings
of the London Mathematical Society 7, 208-212, 1876.
Specht W. Abschaetzungen der Wurzeln algebraischer Gleichungen.
Mathematische Zeitschrift 52, 310-321, 1949.
Swinnerton-Dyer H.P.F. Cited in Berlekamp's article «Factoring poly-
polynomials over large finite fields». Mathematics of Computation 24,
733-734, 1970.
Wang P.S. An improved multivariate polynomial factoring algorithm.
Mathematics of Computation 32, 1215-1231, 1978.
Yun D.Y.Y. The Hensel lemma in algebraic manipulation. Ph.D. Thesis,
Department of Mathematics, M.I.T., 1973.
Zassenhaus H. On Hensel factorization. Journal of Number Theory 1,
291-311, 1969.
Zassenhaus H. A remark on the Hensel factorization method. Mathematics
of Computation 32, 287-292, 1978.
Глава 7
Отделение и аппроксимация вещественных
корней полиномиальных уравнений
Методы нахождения вещественных корней, или решений, поли-
полиномиальных уравнений в Щх] любой степени можно найти в любой
работе по численному анализу и теории уравнений. Наш подход
к рассматриваемому вопросу принципиально отличается в трех
главных пунктах:
1. Мы явно различаем отделение и аппроксимацию корней
(разд. 7.1), в то время как в большинстве работ аппроксимация
корней эквивалентна решению уравнений.
2. Мы даем точные формулировки теорем Бюдана и Фурье и
рассматриваем их взаимозависимость (см. также рис. 7.1.1);
следует отметить, что формулировку теоремы Бюдана нелег-
нелегко найти в литературе, в то время как теорема Фурье часто
приписывается Бюдану.
3. Мы представляем теорему Винсента 1836 г. и получающи-
получающиеся на ее основе два метода цепных дробей для отделения
вещественных корней уравнения; первый из этих методов при-
принадлежит Винсенту (Vincent, 1836) и имеет экспоненциальное
время вычислений, в то время как второй принадлежит ав-
автору (Akritas, 1978) и имеет, если справедлива некоторая
гипотеза, полиномиальное время счета (лучший из класси-
классических методов). Теорема Винсента была так хорошо забыта,
что даже такая фундаментальная работа, как Enzyclopaedie
der mathematischen Wissenschaften, игнорирует ее.
Исследуем прежде всего детально метод бисекций Штурма
1829 г. и метод цепных дробей 1978 г., являющийся самым быст-
быстрым из существующих методов. Это — два классических метода,
описанные в литературе, для отделения вещественных корней
полиномиального уравнения с целыми коэффициентами (см. ис-
историческое замечание 1 и рис. 7.1.1). Затем исследуем два
соответствующих метода аппроксимации этих (изолированных)
корней с любой желаемой степенью точности, а именно, метод
бисекций и метод, использующий цепные дроби.
442 Отделенье ь аппроксимация корней
эрема Фурье A820) <—
1
Теорема
Штурма A829)
I
Метод бисекций
Штурма A829)
Две экви-
валент.
теоремы
> Теорема Бюдана A807)
1
Теорема
Винсента A836)
1
Метем цепных дробей,
разработанный автором
в 1978 г.
Рис. 7.1.1.
Краткий обзор исторического развития двух класси-
классических методов отделения вещественных корней по-
полиномиального уравнения с целыми коэффициентами.
Метод цепных дробей Винсента 1836 г. не показан,
поскольку он экспоненциален (см. также историческое
замечание 7).
7.1
Введение и обоснования
Самые ранние из известных аналогов алгебраических уравне-
уравнений содержатся в папирусе Ринда и, очевидно, компилированы
из более ранних работ египтянином Амесом приблизительно в
1650 или 1700 г. до нашей эры. Мы находим, например, сле-
следующую задачу: «Количество и его седьмая часть, сложенные
вместе, дают 19. Чему равно количество?». Очевидно, задача
состоит в том, чтобы решить уравнение х + (l/7)z = 19, как мы
сказали бы сегодня. Из-за недостатка удобных алгебраических
обозначений египтяне пользовались громоздким методом, извест-
известным впоследствии как метод «ложного положения». Хотя иногда
утверждают, что греки умели решать уравнения второй степени,
в общем ни египтяне, ни греки не сделали сколько-нибудь замет-
заметного продвижения с современной точки зрения. Арабы достигли
большего, но только во времена Ренессанса, когда итальянские
математики пятнадцатого и шестнадцатого столетий (Тарталья,
Кардано и Феррари) преуспели в решении через радикалы общих
уравнений* третьей и четвертой степени, были выполнены работы,
Введение и обоснования 443
представляющие длительный интерес. [Интересующийся истори-
историей читатель может проследить по другим источникам за борьбой
за приоритет между Тартальей и Кардано (см., например, книгу
(Burnside, Panton, 1960, p. 271-274). Другие источники — (Dickson,
1922; Todhunter, 1882; Turnbull, 1957; Wehmer, 1938).)]
В семнадцатом и восемнадцатом столетиях предпринимались
многочисленные попытки решить общее уравнение пятой степени;
было также достигнуто более глубокое понимание природы корней
алгебраического уравнения (особенно после работы Лекарта), но,
несмотря на все это, никому не удалось решить в радикалах
уравнение пятой степени. Естественно, что математики задались
вопросом, возможно ли вообще такое решение. Ответ дал Руффини
(Ruffini, 1804), первым показавший невозможность алгебраического
решения уравнения пятой степени. Позднее Абель (Abel, 1826)
доказал, что невозможно в общем случае решать алгебраические
уравнения степени выше четвертой.
В начале девятнадцатого века внимание математиков уже сос-
сосредоточилось на численных методах решения общих полиномиаль-
полиномиальных уравнений с целыми коэффициентами. В этот период у Фурье
возникла идея разделить процесс на два шага, т.е. сначала отде-
отделить вещественные корни, а затем аппроксимировать их с любой
желаемой степенью точности. (В соответствии с хорошо извес-
известным в математике подходом: если проблема слишком трудна,
чтобы решить ее целиком, расщепляют ее на более простые.)
Отделение вещественных корней полиномиального уравнения —
это процесс нахождения вещественных непересекающихся интерва-
интервалов, таких, что каждый из них содержит точно один вещественный
корень и каждый вещественный корень содержится ровно в одном
интервале. Аппроксимация, с другой стороны, — это процесс,
когда изолирующие интервалы делаются как угодно малыми, при-
приближая, таким образом, корни с требуемой степенью точности.
Главной проблемой, привлекавшей внимание математиков, было
отделение.
Как только прояснились цели, последовали и успехи. В на-
начале девятнадцатого столетия Бюдан и Фурье представили две
различные (но эквивалентные) теоремы, позволяющие определять
максимум возможного числа вещественных корней уравнения с
вещественными коэффициентами на данным интервале. Теорема
Бюдана появилась в 1807 г. в работе «Nouvelle methode pour la
resolution des equations numeriques», а теорема Фурье была впервые
опубликована в 1820 г. в «Le bulletin des sciences par la societe
444 Отделение и аппроксимация корней
philomatique de Paris». В силу значимости этих двух теорем воз-
возникли большие разногласия относительно приоритетных прав. В
своей книге Biographies of distinguished scientific men, с. 383, Араго
(Arago, 1859) сообщает, что Фурье «счел необходимым получить
подтверждение бывших студентов Политехнической школы или
профессоров университета», чтобы доказать, что он преподавал
свою теорему в 1796, 1797 и 1803 гг.
Как мы увидим в разд. 7.2, основываясь на предложении Фурье,
Штурм представил в 1829 г. улучшенную теорему, применение ко-
которой дает точное число вещественных корней полиномиального
уравнения из Z[x] без кратных нулей на вещественном интерва-
интервале; таким образом, он решил проблему отделения вещественных
корней (Bocher, 1911-1912). С 1830 г. метод Штурма становится
единственным широко известным и используемым, и, следователь-
следовательно, теорема Бюдана предается забвению. По нашим сведениям,
теорему Бюдана можно найти только в статье Винсента и в рабо-
работах автора, в то время как предложение Фурье появляется почти
во всех текстах по теории уравнений. Теорема Бюдана заслужи-
заслуживает специального внимания, поскольку, как мы увидим в разд. 7.3,
она составляет основу теоремы Винсента 1836 г. которая, в свою
очередь, составляет основу метода цепных дробей 1978 г. (Akritas,
1980а, 1980b) отделения вещественных корней уравнения, метода,
превосходящего метод Штурма по эффективности. [См. также
рис. 7.1.1 и (Akritas, 1982).]
Теорема Фурье и метод бисекдий Штурма отделения вещес-
вещественных корней
Этот раздел мы начинаем теоремой Фурье, которая дает нам
возможность определять максимум возможного числа вещест-
вещественных корней уравнения с целыми коэффициентами на данном
интервале, а затем мы увидим, как Штурм модифицировал этот
метод для получения тонного числа вещественных корней на этом
интервале.
7.2.1. Теорема Фурье
Теорема Фурье, опубликованная впервые в 1820 г., также была
включена в книгу «Analyse des Equations*, опубликованную впос-
Теорема Фурье и метод Штурма отделения корней 445
ледствии Навье в 1831 г. Эту теорему, иногда под названием
теоремы Бюдана-Фурье или даже просто Бюдана, можно найти
почти во всех работах по теории уравнений. [Гурвиц (Hurwitz,
1912) представляет ее как частный случай более общей теоремы, а
Обрешкоф (Obreschkoff, 1963) обобщает ее на случай комплексных
корней.] Мы приведем ее после того, как докажем следующие две
леммы; хотя нас интересуют полиномы с целыми коэффициен-
коэффициентами, мы докажем эти леммы для общего случая вещественных
коэффициентов.
Лемма 7.2.1. Пусть р(х) = 0 — полиномиальное уравнение
степени г» > 0 с вещественным коэффициентами, и пусть а —
один из его вещественных корней (если такие существуют). Лля
достаточно малого с > 0 полиномы р(х) и р'(х) [производная от
полинома р(х)] имеют противоположные знаки в интервале (а—е, а)
и одинаковые знаки в интервале (а, а + е).
Доказательство. Лемма непосредственно следует из рассмотрения
формулы разложения Тейлора р(а ± х) = Ео^пЬ^ООЛО*1'. где
^'() '
Ео^пЬООЛО
р^'-'(а) есть t'-я производная. Предположим, что а имеет кратность
га ^ 1; тогда для р(а ± е) и р'(а ± е) мы имеем
и
откуда видно, что знаки этих выражений [которые для достаточно
малого с зависят от знака члена р(т\а)] противоположны на
(а - е, а) и совпадают на (а, а + е). ?
Применяя предыдущий результат к последовательным произ-
производным, получаем такой результат.
Лемма 7.2.2. Пусть р(х) =0 — полиномиальное уравнение с
вещественными коэффициентами степени г» > 0, и пусть а — один
из его вещественных корней кратности т. В последовательности т
функций р(х),рA\х),... ,р("»-1)(х) [где р('\х) есть »-я производная]
для достаточно малого е > 0 мы можем заменить х на а — е
так, чтобы знаки в получающейся числовой последовательности
чередовались, и мы можем заменять х на a+s так, чтобы все знаки в
получающейся числовой последовательности совпадали со знаком
р(т)(а), первой функции, для которой а не является корнем.
446 Отделение и аппроксимация корней
Доказательство. Доказательство мы оставляем читателю в ка-
качестве упражнения. П
Определение 7.2.3. Мы говорим, что между двумя ненулевыми
членами ср и с, (р< q) конечной или бесконечной последова-
последовательности вещественных чисел ci, с^, сз,.. • имеет место перемена
знаков, если выполнено одно из следующих условий:
i. Для q = р + 1 ср vi cq имеют противоположные знаки.
ii. Для q ^ р + 2 все числа ср+ь ..., c,_i равны нулю, а ср и с,
имеют противоположные знаки.
Пример. Рассмотрим полином р(х) = х3-7х + 7, коэффициенты ко-
которого образуют конечную последовательность чисел {1,0,-7,7}.
Ясно, что в этой последовательности имеются 2 перемены знаков.
Определение 7.2.4. Пусть р(х) = 0 — полиномиальное урав-
уравнение степени г» > 0 с вещественными коэффициентами. Тогда
последовательность г» + 1 функций
fseq(x) =
), • ¦ • ,Р(П)(*)},
где рО(ж) есть t'-я производная, называется последовательностью
Фурье.
Пример. Рассмотрим полиномиальное уравнение р(х) = ж3 — 7х +
7 = 0. Последовательность Фурье, соответствующая этому поли-
полиному, — это fseq(x) = {ж3 -7х + 7,3х2 - 7,6х,6}.
Мы готовы теперь сформулировать и доказать теорему Фурье.
Читатель должен тщательно изучить доказательство, потому что
оно полезно для понимания.
Верхняя грань числа вещественных корней уравнения в
открытом интервале.
Теорема 7.2.5 (Фурье 1820). Пусть р(х) = 0 — полиномиальное
уравнение с вещественными коэффициентами степени п > 0. Ес-
Если в последовательности Фурье fseq(x) = {р(х),р^\х),р^(х),...,
р(")(х)} мы заменим х любыми двумя вещественными числами p,q
(р < ?)> то для Двух получившихся числовых последовательностей
fseq(p) и feeq(g) выполняются такие условия:
i. feeq(p) не может иметь меньше перемен знаков, чем fseq(g).
ii. Число вещественных корней уравнения р(х) = 0, размещенных
между р и q, никогда не может быть больше, чем число перемен
Теорема Фурье и метод Штурма отделения корней 447
знаков, потерянных в fseq(x) при переходе от подстановки
х := р к подстановке х := q.
iii. Если число вещественных корней уравнения р(х) = 0, разме-
размещенных между р и q, меньше числа перемен знаков, потерян-
потерянных в fseq(x) при переходе от подстановки х := р к подстановке
х := q, то разность — четное число.
Доказательство. При изменении х число перемен знаков в после-
последовательности Фурье может измениться только тогда, когда х —
нуль полинома р(х) или какой-то из его производных. Эти два
случая мы будем исследовать раздельно.
Случай 1. Пусть а — нуль полинома р(х) кратности т. Пользуясь
леммой 7.2.2, мы видим, что при изменении ж в интервале
(а — е,а + е) для достаточно малого е > 0 мы имеем в первых
т + 1 членах его последовательности Фурье непосредственно
перед переходом через а т перемен знаков и нуль перемен
знаков немедленно после этого перехода. Знаки остальных
членов последовательности fseq(x) не меняются. Таким образом,
в fseq(a;) теряются т перемен знаков.
Случай 2. Пусть теперь а — нуль кратности т одной из производ-
производных, т.е. для некоторого i ф 0 и i ф п мы имеем р^~^{а) ф 0 и
pW(a) = 0. Рассмотрим последовательность
гдерA+тЦх) — первая функция, для которой а не является корнем.
Заметим, что при изменении х в (о—е,а+е) для достаточно малого
е > 0 знаки j/'-^x) и р('+т)(х) остаются неизменными, поскольку
эти полиномы не обращаются в нуль. Разбирая различные случаи,
когда знаки р^-1^(ж) и р(|+т)(а:) одинаковы или противоположны
и кратность m четная или нечетная, мы убеждаемся, что общее
число потерянных перемен знаков — четное число.
Таким образом, мы убедились, что при прохождении х данного
интервала число потерянных перемен знаков должно либо быть
равным числу корней полинома р(х) в этом интервале, либо
превосходить его на четное число. Q
Пример. Рассмотрим полином р(х) = х3 - 7ж + 7 = 0, после-
последовательностью Фурье которого, как мы уже видели, является
fseq(x) = {х3 - 7х + 7,3х2 - 7,6*,6}. Тогда, чтобы найти верх-
верхнюю границу числа вещественных корней в интервале @,2), мы
448 Отделение и аппроксимация корней
вычисляем значения последовательности Фурье в точках 0 и 2 и
получаем следующие числовые последовательности:
fseq(O) = {7,-7,0,6}, fseqB) = {1,5,12,6},
где fseq(O) имеет 2 перемены знаков, a fseqB) — ни одной. По
теореме Фурье полином р(х) или имеет два вещественных корня
в интервале @,2) или не имеет ни одного; это определяется
дальнейшими исследованиями.
Очевидно, теорема Фурье дает нам верхнюю границу числа
вещественных корней уравнения р(х) = 0 (с вещественными ко-
коэффициентами и степени п) внутри интервала (р,д); заметим,
что непосредственной подстановкой мы можем легко определять,
являются ли р и q корнями.
Теорема 7.2.5 может быть использована для простого доказа-
доказательства правила знаков Кар дано-Декарта.
Верхняя граница числа положительных корней уравне-
уравнения.
Теорема 7.2.6 (Кардано-Декарт). Пусть р{х) = спхп + Cn-i*" +
(. С\х + со = 0 — полиномиальное уравнение с вещественными
коэффициентами. Если v — число перемен знаков в последова-
последовательности коэффициентов cn,cn_b... ,с0 (нулевые коэффициенты
просто опускаются) и р — число положительных корней уравнения
р(х) = 0, то
2А
где А ^ 0 — целое число.
Доказательство. Мы ищем верхнюю границу числа корней урав-
уравнения р(х) = 0 в интервале @,оо). Последовательность Фурье в
этом случае имеет вид
с0,
= п(п - 1)с„х
"-2
B!)с2,
Применяя теорему Фурье, при ж = 0 мы получаем последователь-
последовательность
fseq(O) = {со,сьB!)с2)... ,(
Теорема Фурье и метод Штурма отделения корней 449
которая имеет v перемен знаков, в то время как последователь-
последовательность fseq(oo) не имеет ни одной перемены знаков (поскольку знаки
всех ее членов совпадают со знаком с„). Поэтому по теореме 7.2.5
где А ^ 0 — целое число, а это и есть правило знаков Кардано-
Декарта. ?
Пример. Рассмотрим полиномиальное уравнение р(х) = х3 — 7х +
7 = 0. Поскольку в последовательности его коэффициентов име-
имеются две перемены знаков, из правила знаков Кардано-Декарта
мы знаем, что р(х) либо имеет два положительных корня, либо не
имеет ни одного; это определяется дальнейшими исследованиями.
7.2.2. Теорема Штурма и метод бисекций Штурма отделения
вещественных корней
Напомним читателю, что двумя основными темами исследо-
исследований Фурье в течение всей его жизни были теория теплоты и
теория численного решения уравнений. Обе эти темы были раз-
развиты Штурмом, который имел личные и научные связи с Фурье.
8 1829 г. рукопись Фурье о численном решении уравнений бы-
была представлена нескольким специалистам, среди которых был и
Штурм, явно указывавший на большое влияние, оказанное на него
этой работой.
Заслуга Штурма состоит в том, что он заменил последователь-
последовательность Фурье последовательностью
sseq(x) = {р(х),рA\х),Г1(х),...,rk(x)},
(S)
которая называется последовательностью Штурма или цепью.
(Это — классическая последовательность Штурма; см. определе-
определение 7.2.7 для обобщения определения последовательности Штур-
Штурма.) Эта новая последовательность получается применением ал-
алгоритма Евклида к полиномам р(х) и р^\х), если взять в качестве
г<(ж), i = 1,2,..., к полиномы, противоположные к полиномиальным
остаткам, т.е. она определяется следующими соотношениями:
29—274
p(x)=pW(x)q1(x)-r1(x),
- rk(x).
(SI)
450
Отделение и аппроксимация корней
Преимущество последовательности Штурма состоит в том, что
мы можем теперь получить точное число вещественных корней
уравнения р(х) = 0 на данном интервале. Заметим, что если
п — степень полинома р(х), то обычно получается п дополнитель-
дополнительных функций ff-l\x),ri(x),... ,rk(x), потому что при вычислении
наибольшего общего делителя полиномов р{х) и р^\х) степень
каждого остатка обычно на единицу меньше степени предыдуще-
предыдущего остатка. Кроме того, если нет кратных корней, то гь(х) —
константа. [В гл. 5 мы подробно рассмотрим различные способы
построения последовательности (S) над целыми числами.]
Пример. Последовательность Штурма, соответствующая поли-
полиному р(х) = х3 - 7ж + 7 — это sseq(x) = {х3 - 7х + 7, Зж2 - 7,2х - 3,1}.
Мы имеем следующее
Определение 7.2.7 (определение обобщенной последовательности
Штурма). Пусть р(х) = 0 — полиномиальное уравнение с рацио-
рациональными коэффициентами без кратных корней. Тогда, начиная с
р(х), можно построить последовательность полиномов (как описано
ниже), называемую (обобщенной) последовательностью Штурма,
general-sseq(x) =
со следующими свойствами в интервале (p,q) (т.е. когда а;
возрастает от р до q):
i. В достаточно малой окрестности вещественного корня а
полинома р(х) знаки полиномов р(х) и pi(x) различны, если
ж < а, и одинаковы, если х > а.
п. Два последовательных члена последовательности Штурма
general-sseq(x) не могут одновременно обращаться в нуль.
Hi. Если одна из функций в последовательности Штурма general-
sseq(s) обращается в нуль при некотором значении хо, то
значения соседних функций этой последовательности, вычис-
вычисленные в той же точке, имеют противоположные знаки.
iv. Последняя функция pjt+i(x) не обращается в нуль, а следова-
следовательно, не меняет знак.
После теоремы 7.2.9 мы представим способ построения беско-
бесконечного числа наборов функций [отличных от последователь-
последовательности,
Теорема Фурье и метод Штурма отделения корней 451
задаваемой соотношениями (S1)], которые удовлетворяют услови-
условиям i—iv определения 7.2.7; кроме того, как мы убедимся при доказа-
доказательстве теоремы 7.2.8, последовательность sseq(x), определяемая
соотношениями (S1), также удовлетворяет этим условиям.
Хотя теоремы 7.2.8 и 7.2.9 верны для любой general-sseq(x), они
будут сформулированы и доказаны только для «классической»
последовательности Штурма sseq(x) (S).
Точное число вещественных корней уравнения в откры-
открытом интервале.
Теорема 7.2.8 (Штурм, 1829 г.). Рассмотрим полиномиальное
уравнение р(х) = 0 с целыми коэффициентами, имеющее только
простые корни. Тогда число его вещественных корней в интервале
(р,з) рарно разности v(p) — v(q), где v(?) обозначает число перемен
знаков в последовательности Штурма sseq(x) для ж = ?.
Доказательство. Доказательство основано на условиях i—iv опре-
определения 7.2.7, которые характеризуют функции последовательнос-
последовательности Штурма sseq(s), определенной соотношениями (S1).
a. В достаточно малой окрестности вещественного корня а
полиномар(х) знаки полиномов р(х) ир^(г) противоположны,
если х < а, и одинаковы, если х > а (см. лемму 7.2.1).
b. Два соседних элемента последовательности Штурма не мо-
могут одновременно обращаться в нуль. Чтобы в этом убе-
убедиться, предположим противное, т.е. пусть г,(жо) и г,-ц(жо) —
оба нули для некоторого значения ж0- Тогда из (S1) вид-
видно, что для того же самого значения z0 мы также имеем
r»+i(so) = ri+2(xo) = ••¦ = Г).(х0) = 0. Это, однако, противоре-
противоречит тому, что Гк(х) — ненулевая константа. [Очевидно, что
тот же самый результат имеет место также для р(х) и р^(х).]
c. Если одна из функций в последовательности Штурма об-
обращается в нуль при некотором значении хо, то в той же
точке соседние функции в этой последовательности имеют
противоположные знаки. Действительно, если Г{(х0) = 0, то
откуда следует, что
= — r,+i(x0). [Это применимо также к
Установив эти основные свойства, нам нужно теперь показать,
что при изменении х от р до q последовательность Штурма теряет
452 Отделение и аппроксимация корней
одну перемену знаков, если х проходит через корень а уравнения
р(ж) = 0, и что в отличие от последовательности Фурье, она не
теряет перемену знаков, если ж проходит через корень другого
элемента последовательности. Действительно, из свойства (а) мы
видим, что, когда х проходит через корень а уравнения р(х) = О,
мы теряем ровно одну перемену знаков. Предположим теперь, что
ж проходит через сч, корень уравнения г,(ж) = 0. Из свойств (Ь)
и (с) следует, что числа rt_i(a,) и rj+i(a,-) отличны от нуля и
имеют противоположные знаки. Мы можем тогда выбрать малую
окрестность (а< - е,а,- + е), е > 0, где эти две функции не меняют
знаков, и построить следующую таблицу:
X
Oti — ?
a,-
Oti+S
+
+
+
±
0
т(±)
—
-
-
-
-
-
±
0
=F(±)
+
+
+
[Отметим, что а,- не обязан быть простым корнем уравнения
г,(х) = 0.]
Из этой таблицы видно, что в группе трех функций г,_1(ж),
г,(ж), r,+ i(a;) нет потерь перемен знаков при прохождении х через
корень полинома г,(ж), и это завершает доказательство. ?
Пример. Рассмотрим полиномиальное уравнение р(ж) = ж3 - 7х +
7 = 0, последовательность Штурма которого равна sseq(r) =
{ж3—7ж+7, Ъх2—7,2ж—3,1}. Тогда, пользуясь теоремой 7.2.8, мы мо-
можем с уверенностью утверждать, что у р(х) есть два вещественных
корня в интервале @,2), поскольку, вычисляя значения последова-
последовательности Штурма при ж = 0, мы получаем sseq@) = {7, —7, -3,1}
с двумя переменами знаков, а вычисляя ее при х = 2, мы получаем
sseqB) = {1,5,1,1} без перемен знаков, и t;@) - v{2) = 2-0 = 2.
Сам Штурм утверждал, что теорема 7.2.8 была просто побоч-
побочным продуктом его интенсивных исследований в области линей-
линейных разностных уравнений второго порядка. Требование, чтобы
уравнение р(х) = 0 имело только простые корни, не является ог-
ограничением общности, поскольку мы можем сначала выполнить
разложение на свободные от квадратов множители (см. разд. 3.2.4),
а затем воспользоваться теоремой Штурма. Более того, всякий
раз, когда последовательность Штурма имеет п+1 элементов, где
n = deg[p^)], мы можем легко определять число пар комплексных
корней уравнения р(ж) = 0 следующим образом.
Теорема Фурье и метод Штурма отделения корней 453
Теорема 7.2.9 (Sturm 1835). Рассмотрим полиномиальное урав-
уравнение р(х) = 0 степени п с целыми коэффициентами без кратных
корней. Тогда р(х) имеет столько же пар комплексных корней,
сколько имеется перемен знаков в последовательности первых чле-
членов п функций р^>(х),ri(x),...,Гк(х) последовательности Штурма
Доказательство. Справедливость этого правила основана на том,
что одна из любых двух соседних функций последовательности
Штурма имеет четную степень, а другая — нечетную. Поэтому,
если эти две функции имеют один и тот же знак при ж = +оо, то
они будут иметь противоположные знаки при х = —оо, и наоборот.
Таким образом, если мы вычисляем последовательность Штурма
sseq^) в х = +оо и в ж = —с», то каждая перемена знакдв
в любой из этих последовательностей будет соответствовать
постоянству в другой, т.е. число постоянств в последовательности
Штурма, вычисленной в ж = —оо, равняется числу перемен знаков
в последовательности Штурма, вычисленной в ж = +оо.
Пусть i — число перемен знаков в sseq(+oo). Эти перемены
получены из знаков коэффициентов при самых высоких степенях
х в п дополнительных функциях рA)(ж),Г1(ж),..., rjt(x), где первые
члены полиномов р(ж) и р^\х) предполагаются положительными.
Однако мы видели, что sseq(-oo) будет содержать г постоянств
или, эквивалентно, п — i перемен знаков. [Здесь мы пользуемся
тем, что последовательность Штурма содержит п + 1 функций и
что в sseq(x) число перемен плюс число постоянств в сумме дают
гг.]
Пользуясь теоремой 7.2.8, мы видим, что число вещественных
корней уравнения р(х) = 0 между —оо и +оо равно числу пере-
перемен знаков в sseq(-oo) минус число перемен знаков в sseq(+oo).
Следовательно, уравнение р(х) имеет п — 2г вещественных корней,
а значит, 2г комплексных корней, которые появляются попарно.
Таким образом, мы имеем i пар комплексных корней. ?
Пример. Рассмотрим полином из последнего примера р(ж) =
ж3 — 7ж + 7, последовательность Штурма которого равна sseq(s) =
{ж3 - 7х + 7, Зж2 - 7,2ж - 3,1}. Ясно, что коэффициенты {1,3,2,1}
первых членов всех элементов последовательности sseq(x) поло-
положительны, и, поскольку перемен знаков нет, полином р(ж) не имеет
комплексных корней.
454 Отделение и аппроксимация корней
Для полноты мы представим сейчас другой способ построения
general-sseq(a:); таким образом, мы покажем, что существует бес-
бесконечное число наборов функций, которые могут использоваться,
чтобы отделить вещественные корни полиномиального уравнения.
Пусть pi(x) — производная полинома р(ж), deg[p(x)] = n; умно-
умножим pi (ж) на двучлен (pix+qi), гдер1 и qi — неизвестные, и вычтем
из произведения р(х). В результате получим полином степени п,
который разделим на полином а-\.х2 + Ь\х + ci, где а\,61, с\ — задан-
заданные числа, такие, что а\х2 + Ь^х + с\ остается положительным для
всех вещественных значений ж [или по крайней мере обращается
в нуль не более чем для одного значения ж, которое не является
корнем полинома pi(x), и остается положительным для всех дру-
других значений х]. Разделив Р\(х)(р\х + q\) — р(х) на охж2 + Ь±х + с\,
получаем частное p2(s), deg[p2(:c)] = п — 2, содержащее pi и qi в
первой степени во всех своих членах, и остаток первой степени
вида Кх + L, где коэффициенты К, L также содержат pi и q\ в
первой степени. Приравнивая эти коэффициенты К, L нулю, по-
получаем численные значения для р\ и q\; после подстановки этих
значений р\ и q\ в р2(х) последний полином становится полностью
определенным. Поэтому мы имеем соотношение
р1(аг)(р1аг + qi) - р(х) = Р2(х)((цх7 + b^x + ci),
или
р(х) =
Если коэффициент при хп 2 в полиноме р2(х) ненулевой, то мы
можем продолжать этот процесс и получить функцию рз(х), такую,
что
- рз{х){а2х2 + Ь2х + с2).
Однако, если deg[p2^)] = п — 3, то мы заменяем P2X + q2 трехчленом
2 + q2x + г2 и получаем соотношение
Р1(ж) =
+ q2x + г2) - рз(х)(а2ж2 + Ь2х + с2).
Бели р(ж) не содержит кратных корней, то в конце мы полу-
получаем функцию р*+1(ж), которая является числовой константой.
Читателю следует проверить, что эта новая последовательность
удовлетворяет условиям определения 7.2.7 и, следовательно, яв-
является последовательностью Штурма.
Теорема Фурье и метод Штурма отделения корней 455
Пример. Применим описанную процедуру к полиному р(х) =
ж3-7ж+7, где, очевидно,pi(x) = Зх3-7. ТогдаPi(x)(piX+qi)-p(x) =
Cpi — 1)ж3 + 3gix2 + G — 7pi)a: — 7qi — 7, и, разделив этот полином
на ж2 + х + 2, мы получим частное рг(ж) = Cpi — 1)х — 3pi + 3gi + 1
и остаток [— 10pi — 3gi + 8]x + [6pi - 13gi — 9]. Приравнивая остаток
нулю, получаем рх = 131/148 и qi = —21/74, а подставляя эти
значения в Рч{х), получаем р2(ж) = B45/148)ж — 371/148, т.е.
г3-7ж + 7 =
ш
Читателю в качестве упражнения предлагается вычислить сво-
свободный член и закончить пример.
Теорема Штурма может использоваться, чтобы отделить ве-
вещественные корни полиномиального уравнения р(х) = 0 с целыми
коэффициентами и без кратных корней. Наиболее эффективный
способ сделать это — сначала отделить положительные корни,
а затем — отрицательные (оригинальное предложение Штурма).
Этот процесс совсем простой и описан ниже; для анализа времени
вычисления этого алгоритма нам потребуется следующее
Определение 7.2.10. Пусть р(ж) — полином с целыми коэф-
коэффициентами от одной переменной, deg[p(a;)] = n ^ 1; более того,
предположим, чтор(ж) имеет к, к ^ п, различных корней Qi,...,Qk-
Если к ^ 2, то определим сепаратор Д > 0 полинома р(ж) формулой
Д= min \Qi — Qt\.
3
Если к = 1, то Д = оо.
Как мы увидим в разд. 7.2.4, при п > 2 нижняя граница сепара-
сепаратора Д дается формулой
(S2)
STURM. Метод бисекций Штурма отделения вещественных кор-
корней уравнения (Sturm's Bisection Method for Isolation of the Real
Roots of an Equation)
Вход: р(ж) = 0, полиномиальное уравнение с целыми коэффици-
коэффициентами и без кратных корней.
456 Отделение и аппроксимация корней
Выход: Изолирующие интервалы вещественных корней полино-
полинома р(х) или точные значения его корней.
1. [Инициализация] Положить pw(x) := р(х); если pw@) = О,
то вернуть замкнутый интервал [0,0] и положить pw(x) :=
pw(x)/x. Вычислить последовательность Штурма sseq(z) по
формуле (S1), соответствующую полиному pw{%) = 0, и поло-
положить pn-flag :— 0. (Когда pn-flag = 0, мы отделяем положи-
положительные корни, а когда pn-flag = 1, отделяем отрицательные.)
2. [Вычисление границы корней] Пользуясь правилом Коши,
описанным в разд. 7.2.3, вычислить верхнюю границу Ь значе-
значений положительных корней полинома pw{x), если pn-flag = 0,
или значений положительных корней полинома р№(—х), ес-
если pn-flag — 1, так что положительные или отрицательные
корни полинома ри,(ж) находятся в интервале @,Ь] или [—6,0)
соответственно. [В pw(—x) отрицательные корни полинома
Pw(x) становятся положительными; @,6] —замкнутый спра-
справа интервал, а [—6,0) — интервал, замкнутый слева.] Если
pn-flag = 0, то выполнять {если р«,F) = 0, то выдать замкну-
замкнутый интервал [6,6]; h := 0; rj := 6}, иначе выполнять {если
Pw(—Ь) = 0, то вернуть замкнутый интервал [—6, —6]; /i := —6;
ri := 0}. Положить / := 0, где I — список интервалов.
3. [Обновление интервала] Положить / := /i и г := г\.
4. [Основной цикл] Пользуясь теоремой 7.2.8, вычислить число
положительных корней в интервале (/, г). Если имеется только
один корень, то (/, г) — его изолирующий интервал, он
подается на выход. Если интервал содержит более одного
корня, то он делится на два подынтервала (/, (/ + г)/2) и
((/ + г)/2, г) равной длины, которые добавляются к списку I;
еслир„,[(/ + г)/2] = 0, то замкнутый интервал [(/+г)/2, (/ + г)/2]
подается на выход.
5. [Конец?] Если I ф 0, то удалить из этого списка первый
интервал (h,ri) и перейти к шагу 3; если / = 0 и pn-flag = 1,
то выход.
6. [Отделение отрицательных корней] Если pw(x) ф Pw(~x)<
то выполнять {положить pn-flag := 1; перейти к шагу 2},
иначе выход. (Если мы выходим здесь, то отрицательные
корни симметричны положительным, и мы уже знаем их
изолирующие интервалы. Конечно, в этом случае интервалы,
которые мы получаем для отрицательных корней, находятся
в положительной полуплоскости и должны отображаться на
Теорема Фурье и метод Штурма отделения корней 457
соответствующие интервалы в отрицательной полуплоскости,
а это тривиально.)
Анализ времени работы алгоритма STURM. Из описания алго-
алгоритма становится очевидно, что метод Штурма— это по существу
метод бисехций. Наша реализация метода, когда мы вычисляем
раздельно границы для положительных и отрицательных корней
И изолируем их отдельно, является очень эффективной, потому
что мы минимизируем число бисекций, которые должны быть вы-
выполнены. Более того, если р(ж) = р(—х), то нам ничего не нужно
делать, чтобы изолировать отрицательные корни, поскольку они
симметричны положительным.
На шаге 1 мы вычисляем последовательность Штурма sseq(x), a
в гл. 5 мы видели, что это выполняется за время 0{?2[|р(я)|<»]}'
На шаге 2 мы вычисляем верхнюю границу 6 значений поло-
положительных корней полинома р(х) [или р(—х)], и, как мы увидим
в разд. 7.2.3, это выполняется за время О{п2?[|р(ж)|то]}- Кроме
того, мы берем границу 6 в виде двоично-рационального числа,
т.е. его знаменатель — это степень 2, и, следовательно, на шаге 4
все рациональные числа, получающиеся при бисекциях исходного
интервала @,6) [или (—6,0)], будут также двоично-рациональными.
Вычислим теперь время, необходимое для выполнения шага 4.
Заметим, что, пользуясь теоремой Штурма, мы фактически не
должны вычислять значение каждого элемента последовательнос-
последовательности Штурма в данной рациональной точке, поскольку нам нужен
только знак значения полинома в этой точке. Отсюда легко
следует, что если р(х) = Х)о<»<г» с«х< и а№ — ненулевое рацио-
рациональное число, d > 0, то знак числа p(a/d) совпадает со знаком
Eo<«n c»ai^"~' (CM- также численный пример ниже). Поэтому мы
можем определить знак полинома в рациональной точке, пользуясь
только целочисленной арифметикой. Из разд. 3.1.2 легко вывести,
что время, необходимое для этого вычисления, равно
O{n42(e)L[\p(x)U}, (S3)
где е = max{|a|,d}. Мы берем худший возможный случай, а
именно что каждое значение полинома вычисляется с наибольшим
значением е, появляющимся в вычислениях; конечно, е зависит
от числа делений пополам, которые должны быть выполнены,
чтобы отделить корни. Чтобы вычислить границу для ?(е),
прологарифмируем (S2) и легко убедимся, что
L{e) ^ |?(Д-1)| = O{nL[\p{x)U] + nl(n)}.
458 Отделение и аппроксимация корней
Более того, п в большинстве представляющих интерес случаев
маленькое, L(n) = 1, и мы можем считать, что
1)! = O{nL(|p(*)|eo]},
что также ограничивает число делений пополам. Поэтому
L{e) = O
и, подставляя последнее выражение в (S3), видим что в худшем
случае каждое полиномиальное значение вычисляется за время
При условии, что мы имеем O-fnZdpfa;)!,»]} делений пополам
каждого из не более, чем г», интервалов, содержащих корни, и что
мы имеем не более, чем п + 1, полиномов в последовательности
Штурма, мы видим, что
TsturuW*)] = 0{n7L3[\p(x)\oo]}.
(См. также историческое замечание 3.)
Пример. Отделим корни уравнения р(х) = х3 — 7х + 7 = 0, где
р@) ф 0; в этом примере pw(x) = р(х). Мы уже знаем, что
sseq(x) = {х3 — 7ж + 7,3z2 — 7,2ж — 3,1}, и будем этим пользоваться,
чтобы отделить как положительные, так и отрицательные корни.
Отделение положительных корней. Пользуясь алгоритмом BPR
разд. 7.2.3, получаем Ь =ь 4 как верхнюю границу положитель-
положительных корней полинома р(ж) (см. также соответствующий пример
в разд. 7.2.3), т.е. они все находятся в интервале @,4), где
р@) /Ои рD) ф 0. Пользуясь теоремой Штурма, находим,
что в интервале @,4) есть два корня; а именно, в х — 0 мы
получаем sseq@) = {7,-7,-3,1} с двумя переменами знаков, а
в х = 4 мы получаем sseqD) = {43,4-1,5,1} без перемен знаков.
Разделив пополам интервал @,4), видим, что рB) ф 0 и что
sseqB) = {1,5,1,1} не имеет перемен знаков; поэтому оба корня
находятся в @,2) и интервал B,4) исключается из рассмот-
рассмотрения. Разделив пополам теперь интервал @,2), видим, что
рA) ф 0 и что sseq(l) = {1,-4,-1,1} также имеет две перемены
знаков. Поэтому оба корня находятся в A,2) и интервал @,1)
игнорируется. Затем делим пополам интервал A,2) и видим,
Теорема Фурье и метод Штурма отделения корней 459
что рC/2) ф 0 и sseqC/2) = {-1/8,-1/4,0,1} имеет одну пере-
перемену знаков; таким образом, изолирующие интервалы для двух
положительных корней суть A,3/2) и C/2,2). Заметим, что при
вычислении sseqC/2) нам не обязательно прибегать к арифмети-
арифметике рациональных чисел. Как мы установили при анализе времени
работы алгоритма Штурма, достаточно вычислить только зна-
знаки последовательности, а именно sseqC/2) = {—,—,0,+}, где,
например, первый знак соответствует знаку числителя числа
[З3 - 7 ¦ 3 • 22 + 7 • 23]/23 = C/2K - 7 • C/2) + 7, полученного с
использованием только целочисленной арифметики.
Отделение отрицательных корней. Мы заменяем ж на -ж в
р(х) = 0 и получаем р(—ж) = х3 — 7х — 7 ф р(ж). Мы сделаем
вид, будто не знаем, что имеется только один отрицательный
корень, и вычислим верхнюю границу значений положительных
корней полинома р(—х); на этот раз снова Ь = 4, и, поскольку
р(-4) ф 0, все отрицательные корни полинома р(ж) находятся в
интервале (—4,0). Пользуясь теоремой Штурма, находим, что
в (—4,0) имеется только один корень; а именно, в х = —4 мы
получаем sseq(—4) = {—29,41, —11,1} с тремя переменами знаков,
а в х = 0 мы получаем sseq@) = {7, —7, -3,1} с двумя переменами
знаков. Поэтому изолирующий интервал для отрицательного
корня полинома р(х) — это (—4,0).
Из приведенного примера становится очевидным, что мы долж-
должны сосредоточиться на том, как A) вычислять верхнюю границу
Ь значений положительных корней и B) определять число делений
пополам, необходимых, чтобы отделить корни. Как мы видели при
обсуждении времени вычислений метода Штурма, второй вопрос
связан с тем, насколько близко расположены корни, и имеет чрез-
чрезвычайно важное значение как для гарантии того, что процесс
завершается после конечного числа шагов, так и при вычислении
его теоретических временных оценок. Обе темы рассматриваются
ниже.
В разд. 7.2.3 мы представляем правило Коши, очень эффек-
эффективное средство для вычисления верхней границы Ь значений
положительных корней уравнения, а затем, в разд. 7.2.4, мы до-
доказываем соотношение (S2), результат, принадлежащий Малеру
(Mahler, 1964), который дает нам нижнюю границу сепаратора
корней; см. также (Rump, 1979).
460
Отделение и аппроксимация корней
7.2.3. Вычисление верхней (нижней) границы значений
положительных корней полиномиального уравнения
В этом разделе мы сформулируем и докажем правило Коши
вычисления верхней границы значений положительных корней
полиномиального уравнения с целыми коэффициентами. Затем
следует обсуждение того, как это правило лучше всего реали-
реализовать. Вычисляемая граница является рациональным числом,
знаменатель которого — степень 2 (см. историческое замечание
4).
Теорема 7.2.11 (правило Коши). Пустьр(х) = хп + сп-\хп~1-\ 1-
с\х + Со = 0 — нормированное полиномиальное уравнение степени
п > 0 с целыми коэффициентами, где с„_* < 0 по крайней мере
для одного it, 1 ^ к ^ п, и пусть А — число его отрицательных
коэффициентов. Тогда
Ь= max {lAc^jtl1/*} (С)
является верхней границей значений положительных корней урав-
уравнения р(ж) = 0.
Доказательство. Из определения Ь мы заключаем, что
bk 2 A|c_t|
для каждого к, такого, что с„-к < 0; для этих к последнее
неравенство можно переписать в виде
Суммируя по всем соответствующим к, получаем
ХЬп 2 А
ИЛИ
Из последнего неравенства мы заключаем, что если мы подставим
Ь вместо х в р(ж) = 0, то первый член, т.е. Ьп, будет не меньше суммы
абсолютных значений всех отрицательных слагаемых. Поэтому
р(х) ф 0 для всех х > Ь. О
Теорема Фурье и метод Штурма отделения корней 461
С первого взгляда может показаться, что теорема 7.2.11 тре-
требует большого количества вычислений, поскольку кажется, что
необходимо вычислять корни ifc-й степени. Однако это не так,
потому что для каждого к, такого, что cn_t < 0, мы вычисляем
наименьшее целое число ib', такое, что
Сп
Цк
а затем мы полагаем b = 2* +1, где ifc" — максимум из всех ifc'.
[Заметим, что мы рассматриваем общий случай, когда р(х) — не
обязательно нормированный полином и с„ > 0; см. (Akritas, 1981b).]
Вычисление каждого к' осуществляется следующим образом.
Пусть
Ь
с
— частное для некоторого к, 1 ^ к ^ п, и предположим, что
Тогда, очевидно,
Бели положить р ¦=¦ i — j — 1 и р + 2 = * — j + 1, то это неравенство
примет вид
2" < - < 2"+2.
с
Извлечение корня ifc-й степени из последнего выражения дает
Если р = q ¦ к + г, 0 ^ г < к, то, очевидно,
Более того,
2(p+2)/fc _
(С2)
поскольку (г+2)/2 ^ 2 и г ^ fc-1. Объединяя (С1) и (С2), получаем
jfc' = q + 2. Фактически мы можем получить меньшее значение для
ifc', если г ^ Jfc — 2. В этом случае (г + 2)/к ^ 1 и
2(р+«)/*
(СЗ)
462 Отделение и аппроксимация корней
так что k' = q + 1.
Из приведенного обсуждения мы заключаем, что главные опе-
операции в правиле Коши следующие:
1. Вычисление [log2 |i|J, наибольшего целого ^ log2 |»|, для лю-
любого целого i ф 0.
2. Вычисление 2* для неотрицательного целого числа к,.
3. Вычисление [|«|/2*] Для любых целых i и к, положительных
или отрицательных, где по определению
[х] = \_х], если х ^ 0, и [ж] = Гж], если х < 0.
Предполагая, что у нас есть эффективные алгоритмы для
этих операций (см. также упражнения по программированию
к этому разделу), мы имеем следующий алгоритм:
BPR. Верхняя граница значений положительных корней полино-
полиномиального уравнения (Upper Bound on Values of Positive Roots of a
Polynomial Equation)
Вход: Полиномиальное уравнение р(х) — cnxn + Cn-ix" + ...
+co = 0 с целыми коэффициентами.
Выход: Рациональное число 6, знаменатель которого — степень
2 F — наименьшая степень 2, такая, что IXcn-k/Cn]1^1 < 6
для 1 ^ к ^ п, и сп-к < 0). Если у р(х) нет отрицательных
коэффициентов, то 6=1.
1. [Инициализация] Если 1с[р(ж)] < 0, положить р(х) := (—1)р(ж),
положить А равным числу отрицательных коэффициентов
полинома р(х) и к" := 0. Если А = 0 или deg[p(x)] = 0, то
перейти к шагу 3; иначе {положить j := [log2(c,,)J; t := 0}.
2. [Обработка отрицательных членов] Для каждого члена Cjx"*,
с,- < 0, выполнять следующее: к := п — щ\ с'{ := |Ас,|; i :—
LloS2(ci)J ;P-=*-J~ 1; Ч ¦= QUO(p, k); r:=p- kq; если г < 0,
то выполнять {г := г + к; q := q - 1}; jfc' := q + 1; если r = Jb — 1,
то выполнять {c'n :— [с„/2~к *]; если cj > c'n, то к' := к' + 1};
если t = 0 или к' > к", то к" := к'; t := 1.
3. [Выход] Вернуть рациональное число 6 := 2к .
Анализ времени работы алгоритма BPR. Принимая во внимание
упражнение по программированию к этому разделу, мы видим
следующее:
Шаг 1 выполняется за время
Теорема Фурье и метод Штурма отделения корней 463
Одно выполнение шага 2, на котором вычисляется к', такое,
что |Acn_jfe/cn| ^ 2*', выполняется за время ~ с{к + ?[|р(ж)|оо)]}•
Поскольку шаг 2 выполняется самое большее п раз, мы легко
заключаем (суммируя по к = 1,...,п), что его время работы
j есть OinHMx)^]}.
' Шаг 3 выполняется за время 0(|Л"| 4-1). Поскольку к" — целое
число с одинарной точностью, мы видим, что время выполнения
шага 2 доминирует над временем выполнения всего алгоритма,
и, следовательно,
<bpr[p(*)] = O{
Пример. Воспользуемся правилом Коши, чтобы вычислить верх-
верхние границы положительных и отрицательных корней уравнения
р(х) = ж3 - 7х + 7 = 0.
Лля положительных корней мы используем полином р(ж), как
он есть. Применяя алгоритм BPR, мы получаем на первом шаге
А = 1, j = 0 и t = 0. Второй шаг выполняется только один раз, и
мы имеем к = 2, Cj,_2 = c'i = 7, » = 2, р = 1, q = 0, г = 1, к' = 1,
с'3 = 4, а поскольку dx > с'п, мы модифицируем к' := 2; в заключение
мы полагаем к" := 2 и из третьего шага получаем 6 = 4.
Для отрицательных корней мы заменяем ж на —х, так что
они становятся положительными. Мы тогда получаем полином
~х3 + 7х + 7 и снова применяем BPR. На этот раз на первом шаге
полином заменяется на ж3 — 7х — 7 и т.д. Подробности оставлены
читателю в качестве упражнения; ответ: 6 = 4.
Пока мы вычислили верхнюю границу Ь значений положитель-
положительных корней уравнения р(ж) = 0. Пользуясь той же самой про-
процедурой BPR, мы можем также вычислить нижнюю границу 6j0
значений положительных корней уравнения р(ж) = 0. Легко можно
проверить, что 6/0 = l/6/0_inv, где 6jo_inv — верхняя граница зна-
значений положительных корней уравнения рA/х) = 0. В разд. 7.3.2
мы будем обсуждать эффективный способ получения рA/ж).
7.2.4. Вычисление нижней границы расстояния мея^цу лю-
любыми двумя корнями полиномиального уравнения
Дается полиномиальное уравнение р(х) = 0; в этом разделе
мы будем вычислять выражение [в терминах степени и нормы
полинома р(ж)] для нижней границы расстояния между любыми
464 Отделение и аппроксимация корней
двумя корнями (сепаратор корней) уравнения р(ж) = 0 (см. также
определение 7.2.10). Этот результат выводится из более общей те-
оремы Малера и играет важную роль в анализе времени работы не
только метода Штурма, но вообще любого метода, используемого J
для отделения вещественных корней уравнения. [Представляет j
интерес работа (Mignotte et al., 1979).] '
Теорема 7.2.12 (Малер). Если р(ж) = 1^0<»<п сп-<г' — свободный,
от квадратов полином степени n ^ 2 от одной переменной с целыми
коэффициентами и А — сепаратор его корней, то
д ^ >/зп-("+2)/2|р(ж)|г(п-г).
(Ml)
Доказательство. Главные инструменты в атом доказательстве —
неравенство теоремы 6.3.2 и теорема Адамара об определителях,
которая может быть сформулирована следующим образом:
Если элементы d{j, i, j = 1,2,..., п, определителя
d=det
••• dnn .
являются произвольными комплексными числами, то
П
(M2)
и равенство имеет место, если и только если
dijdik = 0 для 1 < j < k ^ п,
где da обозначает комплексно-сопряженное к dj*. [Доказательство
теоремы Адамара можно найти в книге (Marcus, Mine, 1965), упр. 5,
с. 208.]
Лля доказательства теоремы пусть Q\,(&,. ¦ •,Qn — корни урав-
уравнения р(х) — 'Y^uCiCn cn-ix* 1 и ПОЛОЖИМ
Тогда из теоремы 6.3.2 работы (Specht, 1949) мы имеем неравенство
Теорема Фурье и метод Штурма отделения корней 465
где из определения 1.2.6 следует, что |р(г)|оо ^ \р(х)\2 < \p(x)\i <
Пусть теперь корни полинома р(х) пронумерованы так, что
\ei\2 Ы>---> 1елг|>1^ |елг.ц|>---^ \еп\, (М4)
и пусть
«[к*)]= П («-<»)= П
при условии, что v[p(x)] = 1 при п = 1. Хорошо известно, что
«[?(«)] = dv, где dw — определитель Вандермонда
dv = det
1 1
в1 в2
й-1
1 1
••• в„
Более того, положим t;"[p(x)] = (gie2-¦¦вы)~(-п~1^\р(х)]. Тогда
„"[р(*)] = С где
' = det
1
1
-(п-2)
i ••• еГ1-!
То есть d" получается из dv умножением г-го столбца матрицы,
соответствующей dv, на д^п~1\ 1 ^ i < N. Поскольку теперь
абсолютное значение каждого элемента в вышеупомянутом опре-
определителе ^ 1, из неравенства Адамара следует, что
(М5)
Равенство имеет место, если одновременно
и
Л 0—274
= °> для
(Мб)
466
Отделение и аппроксимация корней
Пусть i=l; тогда, принимая во внимание хорошо известное
соотношение между комплексными числами, мы видим, что (Мб)
принимает вид
а умножая это выражение на Qi^Qj — 1, получаем (ei16j)n = 1j|
откуда видно, что п частных Qj/qi, I ^ j ^ п — это п различных
корней уравнения ж" — 1 = 0. Однако
--¦= п (-г).
или
Таким образом, мы видим, что |«"[р(ж)]| = п"/2 только в случае
р(х) = сохп +с„, где |со| = |сп | > 0.
Теперь пусть г и s фиксированы, 1 ^ г < « ^ п. Мы намерены
получить границу для \d"/(gr — g,)\ методом, аналогичным тому,
который мы только что применяли к \d"\.
Сначала в матрице, соответствующей определителю Вандер-
монда dv, вычтем s-й столбец из г-го, так что новый г-й столбец
состоит из элементов
все они делятся на gr — g»- Затем разделим этот столбец на gr — gs
и получим в качестве новых элементов г-го столбца матрицы,
соответствующей К/(#г ~ в»)\> величины qo,qi,.. -,qn-i, где q0 = 0
и qt = U - g\)KQr ~ в.) = 0Г1 + rf"aft + • • • + QrQ\~2 + fii. » > 1-
Поэтому частное dv/(gr — g,) может теперь быть переписано
как определитель, в котором г-й столбец состоит из элементов
9o,qi,---,qn-i, а остальные п —1 столбцов — те же, что и в
исходном определителе dv. Разделив теперь снова 1-й, 2-й, ... ,
N-ft столбец матрицы, соответствующей новому определителю,
на множители р",^"*2'- •• itfjv соответственно, мы получаем
определитель со значением |<С/(&- ~ вг)\- За исключением г-го
столбца, этот определитель совпадает с определителем d". Его
г-Й столбец состоит из элементов
Л.Л-(»>-1) п. „-(»-!) „_ ,Л-(»-1).
Теорема Фурье ь метод Штурма отделенья корней 467
если г ^ N, и элементов
9o>9ii--->4»-ii
' если г > N. Поскольку
I < 1 для г > N,
абсолютные значения последовательных элементов г-го столбца
определителя не превосходят 0,1,2,..., п — 2, п — 1 соответственно.
Поэтому по неравенству Адамара мы имеем
Поскольку сумма в скобках равна п(п — 1)Bп — 1)/6, что < п3/3,
окончательный результат принимает вид
d"
I Qr - Q,
Решая (М7) относительно \gr — gs|2, получаем
<
_ п |2
(М7)
или
\er - g.\2
Из разд. 5.2.2 нам известно, что дискриминант discr[p(x)] полинома
р(х) равен
со" П
и, следовательно, мы можем также написать
Ift- - Q,? > Zn-W
или
Ift. -g,\2> 3n-{[()]}[p()]
Наконец, поскольку коэффициенты полинома р(х) — целые числа,
мы имеем |discr[p(x)]| ^ 1, так как discr[p(x)] не равен нулю.
Более того, выбирая г и s так, чтобы \дг — gt \ = А, и пользуясь
неравенством (МЗ), мы завершаем доказательство (Ml). D
Пример. Лля полинома р(х) = х3 — 1х + 7 мы получаем
Д > у/г ¦ З-5'2 • IS =
0.0005.
v/F-152 v/243-225 3510
Это означает, что наименьшее расстояние между любыми двумя
корнями полинома р(х) больше, чем 0.0005.
30*
468 Отделение и аппроксимация корней
7.3
Теорема Бюдана и два метода цепных дробей для отделения
вещественных корней
До сих пор мы рассматривали метод Штурма отделения вещее- •>,
твенных корней уравнения. Исторически это был первый метод,
подлежащий развитию, и он являлся весьма крупным достиже-
достижением. В этом разделе мы исследуем два метода цепных дробей,
описанные в литературе, для отделения вещественных корней
уравнения; первый из этих методов был разработан в 1836 г.
Винсентом (Vincent) и является экспоненциальным, в то время как
второй был разработан в 1978 г. автором (Akritas, 1978a, 1980а,
1980b) и существенно быстрее метода Штурма (и всех остальных).
Мы начнем с теоремы Бюдана, которая, как уже упоминалось,
эквивалентна теореме Фурье.
7.3.1. Теорема Бюдана
Хотя теорема Бюдана появилась гораздо раньше теоремы
Фурье, она не была замечена и почти не появлялась в стан-
стандартных текстах по теории уравнений. Однако она имеет очень
большое значение, потому что составляет основу теоремы Вин-
Винсента. Следующая формулировка этой теоремы взята из статьи
Винсента 1836 г.
Другая верхняя граница числа для вещественных корней
уравнения в открытом интервале.
Теорема 7.3.1 (Бюдан, 1807 г.). Если в уравнении р{х) = О
относительно х степени п > 0 мы сделаем две подстановки х := р+х'
и ж := q + х", где р и q — вещественные числа, такие, что р < q, то
будут справедливы следующие утверждения:
i. Преобразованное уравнение относительно ж' = ж — р не может
иметь меньше перемен знаков, чем преобразованное уравне-
уравнение относительно ж" = ж — q.
ii. Число вещественных корней уравнения р(х) = 0, расположен-
расположенных между р и з, не может быть больше числа перемен знаков,
потерянных в последовательности коэффициентов при пере-
переходе от преобразованного уравнения относительно х' = х — р
к преобразованному уравнению относительно х" = х — q.
Теорема Бюдана и методы цепных дробей отделения корней 469
iii. Если число вещественных корней уравнения р(х) = 0, лежа-
лежащих между р и q, меньше числа перемен знаков, потерянных
в последовательности коэффициентов при переходе от преоб-
преобразованного уравнения относительно х' = х — р к преобразо-
преобразованному уравнению относительно х" = х — q, то разность —
четное число.
Доказательство. Доказательство аналогично доказательству те-
теоремы 7.2.5. ?
Теоремы 7.2.5 и 7.3.1 эквивалентны. В этом легко убедиться, ес-
если в последовательности Фурье заменить * любым вещественным
числом а. Тогда п+1 получающихся чисел пропорциональны соот-
соответствующим коэффициентам преобразованного полиномиального
уравнения р(х + а) = ^20&?п№'Ча)/Щх'> полученным с помощью
формулы разложения Тейлора.
Теорема Бюдана так же, как теорема 7.2.5, дает нам верхнюю
границу для числа вещественных корней уравнения р(ж) = 0 внут-
внутри интервала (р, q). Однако она использует только подстановки
х := р + х' и ж := q + ж" и не зависит от какой-либо последова-
последовательности полиномов; эти подстановки называются подстановками
Мёбиуса или дробно-линейными подстановками и из-за их значи-
значимости ниже они исследуются по отдельности.
7.3.2. Подстановки Мёбиуса и их воздействие на корни
уравнения
Существеннейшую роль в обсуждении теоремы Винсента (в
разд. 7.3.3) играют подстановки вида а; := а+1/ж. Они принадлежат
классу дробно-линейных подстановок, или подстановок Мёбиуса,
названных в честь Августа Ф. Мёбиуса A790-1868), который
первым изучал соответствующие преобразования в проективной
геометрии.
Определение 7.3.2. Общая подстановка определяется выраже-
выражением
ж :=
(х) =
cx
где a,b,c,d — комплексные числа, такие, что их определитель
ad — be отличен от нуля; она называется также подстановкой
Мёбиуса и сокращенно обозначается х := M^),det(M) ф 0.
470 Отделение и аппроксимация корней
Для любого ж € С подстановка х := М(х) задается непосредст-
непосредственно выражением из определения 7.3.2 при условии, что cx+d ф 0;
в противном случае мы полагаем М(—d/c) = оо. Если с = 0, то
мы должны иметь ad ф 0, поскольку определитель коэффициентов
должен быть ненулевым, и выражение, определяющее подстановку,
принимает вид
Ь
более того, в этом случае М(оо) = оо, в то время как если с ф 0,
то М(оо) = а/с.
Легко видеть, что каждой подстановке Мёбиуса соответствует
квадратная матрица ее коэффициентов, и это полностью опреде-
определяет подстановку. Пусть
М — \ЪЛ(х), такая, что ж := М(х), М =
ТП21
det(M) ф 0, х € С'}
— множество всех подстановок Мёбиуса, где С = С U {оо} —
пополненная комплексная плоскость. В М вводится отношение
равенства условием, что две подстановки А(х),В(ж) € М совпа-
совпадают [другими словами А(х) = В(х) для всех ж € С], если и
только если существует элемент А € С, А ф 0, такой, что А = АВ
(последнее равенство — равенство матриц).
Теорема 7.3.3. Множество М подстановок Мёбиуса образует
группу, изоморфную группе квадратных матриц ранга 2.
Доказательство. Мы уже определили отношение равенства на М.
Теперь определим произведение двух подстановок А(ж), В(ж) ? М
как произведение соответствующих матриц. Так определенное
произведение также является подстановкой, потому что
+
+ 011^12 + «12^22
122&22
ГацЬц + О12&21 «11^12 + 012^221/ ч //krt\f \
= , , , , , (X) = (АВ)(ж).
[021011+022*21 O2iO!2 + 022022 J
Отметим, что подстановки применяются последовательно слева
направо.
Теорема Бюдана и методы цепных дробей отделения корней 471
В качестве единичного элемента в М возьмем тождественную
подстановку, х := х, матрица которой имеет вид
I =
о
Из нашего определения равенства видно, что AI, где А ф 0 и
А € С, совпадает с тождественной подстановкой. Для М(х) € М
обратная подстановка х := М(ж) — это х := M-1(a;), где
является обратной матрицей для М; очевидно, что det(M-1) ф 0.
[Отметим, что по определению равенства мы можем взять
М = [~т22 т12 1
L m2i -muj
что немедленно получается, если решить w = M(z) относительно
z). D
Группа М неабелева, поскольку в общем случае А(ж)В(а;) ф
В(х)А(х).
Определение 7.3.4. Следующие три подстановки Мёбиуса
называются порождающими подстановками группы М:
i. Сдвиг: х := а + х = „ - (ж).
и. Растяжение: ж := ах = ^ 1 (ж).
ш. Инверсия: х := 1/х = L . (х).
Если а — комплексное число, то растяжение называется враще-
вращением.
Следующая теорема проясняет значение порождающих подста-
подстановок.
Теорема 7.3.5. Каждая подстановка М(х) 6 М получается пе-
перемножением подходящих порождающих подстановок (умножения
выполняются последовательно слева направо). Таким образом,
каждая общая подстановка осуществляется последовательностью
порождающих подстановок.
472 Отделение и аппроксимация корней
Доказательство. Пусть
-til-
Чтобы доказать теорему, рассмотрим отдельно следующие два
случая:
Случай (i): с = 0. В этом случае мы легко убеждаемся, что
М = MiM2, где
^lo I
, М2
_[§ ol
-[о ij'
поскольку
Другими словами, при с = 0 подстановка М(х) эквивалентна
сдвигу Mi(x), сопровождаемому растяжением М2(х).
Случай (и): с ф 0. В этом случае подстановка М(х) эквивалентна
сдвигу Mj(a:), сопровождаемому инверсией Ы12(х), сопровож-
сопровождаемой другим сдвигом Мз(ж), за которым, наконец, следует
растяжение Ы.^{х), где
fl tl
0 lj'
:
М3 =
М2 =
Lo i
Ясно, что их произведение равно
Ч 1
0 11
1 Oj'
о ij
М1М2М3М4 =
\ J
M3M4
be -I
ЪТ^аЗ
с3 de
• be—ad be—ad J
U
Пример. Рассмотрим подстановку х := 1/A +ж), матрица которой
имеет вид
М
>[;!]•
Теорема Бюдана ь методы цепных дробей отделенья корней 473
Применяя теорему 7.3.5, получаем
М2(х) =
М3(х) =
М4(х) =
1
0
0
1
1
0
1
0
0
1
1'
0
1"
1
0'
1
(х), тождественная подстановка,
(ж), инверсия,
(х), сдвиг,
(ж), тождественная подстановка.
Поэтому подстановка ж := 1/A +х) эквивалентна инверсии Мг(ж),
сопровождаемой сдвигом Мз(х).
Из предыдущего примера и упр. 1 к этому разделу мы легко
получаем, что подстановка ж := 1 + Ж1,г1 := 1+хг,... ,xa-i '•— l + ^oi
за которой следует подстановка ха := 1/A + ж), эквивалентна
подстановке х := о + 1/ж, сопровождаемой подстановкой х := 1 + х.
Мы теперь подготовлены к исследованию действия подстано-
подстановок Мёбиуса, или, эквивалентно, порождающих подстановок, на
корнях полиномиального уравнения р{х). Пусть
р(х) = хп +с„_1ж"-1 + • • • + ах + с0 = (х-ахХх-а2)...(х-ап) = 0.
Когда имеет место сдвиг, мы заменяем ж на х + k для некоторого
вещественного к и получаем полином1)
р(ж + к) = pt(x) = (x + k-ai)...(x + k-an)
Таким образом, при сдвиге вещественная часть корней преобра-
преобразованного полиномиального уравнения будет увеличиваться или
уменьшаться в соответствии с тем, является к отрицательным или
положительным.
Когда выполняется растяжение, а; заменяется на кх для некото-
некоторого вещественного к, к ф 0. Следовательно,2)
р(кх) = р,(х) = к"хп + с-!*"-1*" + • • • + ei** + с0
= (кх - ai)(kx - а2)... (кх - а„)
="(~V) (-?)-(-*)=•¦
Где индекс t — от translation (сдвиг). — Прим. перев.
Где индекс s — от stratching (растяжение). — Прим. перев.
474 Отделение и аппроксимация корней
Разделив на кп, получаем
Поэтому после растяжения вида х := кх или ж := х/к (к ф
0) корни преобразованного полиномиального уравнения будут
соответственно разделены или умножены на к. [Заметим, что если
к = Ь> 0, где Ь — верхняя граница абсолютных значений корней
полинома р(х), то все корни полинома р(Ьх) = р,(х) = 0 будут
находиться внутри единичного круга.]
Наконец, если имеет место инверсия, то преобразованное поли-
полиномиальное уравнение имеет вид1)
A - хсц){1 - ха2)... A - ха„)
Умножая на хп, получаем
Хпр (-) = Со*" + С!!" + • • • + С„_1* + 1
(M2)
откуда видно, что с помощью инверсии мы получаем преобразован-
преобразованное полиномиальное уравнение, корни которого мультипликативно
обратны корням исходного полиномиального уравнения.
Рассмотрев, как действуют порождающие подстановки на кор-
корнях полиномиального уравнения от одной неизвестной, мы теперь
кратко обсудим, как эти подстановки фактически выполняются.
Сдвиг полиномиального уравнения представляет наибольший
интерес. Аналитически он может быть получен с помощью фор-
формулы разложения Тейлора р(а + х) = Ео^пЬ^И/*']**- Если
Где индекс f — от iversion (инверсия). — Прим. перев.
Теорема Бюдана и методы цепных дробей отделения корней 475
р(х) = спхп + Cn-ia;" -) \- с\х + со = 0 и вместо а; подставляется
а + х, то коэффициенты преобразованного полинома суть
и могут быть получены из формулы
Эти вычисления несколько упрощаются при а = 1, но даже в этом
случае требуемое количество вычислений легко может обескура-
обескуражить. К счастью, мы видели, что существует метод Руффини-
Горнера [см. разд. 3.1.2 и (Cajori, 1911)].
Инверсию очень просто реализовать. В силу (М2) легко видеть,
что для того, чтобы выполнить подстановку ж := 1/ж, достаточно
изменить на обратный порядок коэффициентов полинома.
Растяжение может достигаться [см. также (Ml)] масштабиро-
масштабированием коэффициентов степенями к, начиная с коэффициента,
соответствующего второй по старшинству степени.
7.3.3. Теорема Винсента: расширение и приложения
В этом разделе мы обсуждаем теорему Винсента 1836 г., ко-
которая является основой обоих методов цепных дробей отделения
вещественных корней уравнения.
Мы начинаем с тщательного исследования правила о знаках
Кардано-Декарта (теорема 7.2.6), утверждающего, что число р
положительных корней полиномиального уравнения р(х) = 0 не
может превосходить числа v перемен знаков в последовательности
его коэффициентов, и если п = v — р> 0, топ — четное число.
Более внимательное рассмотрение теоремы 7.2.6 показывает,
что это довольно слабое предложение; оно дает точное число по-
положительных корней полиномиального уравнения р(х) = 0 только
в следующих двух частных случаях [ниже, когда мы допускаем
терминологическую вольность и говорим «перемена знаков», мы
имеем в виду перемены знаков в последовательности коэффициен-
коэффициентов полинома р(ж)]:
i. Если нет перемен знаков, то нет и положительных корней.
ii. Если имеется одна перемена знаков, то имеется один положи-
положительный корень.
476 Отделение и аппроксимация корней
Как мы увидим впоследствии, эти два частных случая играют
важную роль. Более того, справедливо также утверждение,
обратное к i, поскольку имеет место следующая
Лемма 7.3.6 (Стодола). Бели полиномиальное уравнение
р{х) - coxd +
+ • • • + cd = 0 (со > 0)
с вещественными коэффициентами с,-, j = 0,1,2 d, имеет только
корни с отрицательными вещественными частями, то все его
коэффициенты положительны и, следовательно, не дают перемен
знаков.
Доказательство. Пусть — ап, п — 1,2,...,к, — вещественные, а
—ут ±г6т, т = 1,2,..., s, — комплексные корни уравнения р(х) = 0,
где по предположению ап и ут > О для всех пит. Полином р(х)
может быть выражен в виде произведения со, (х+а) и [(x+7mJ+^m]
для всех г» = 1,..., к и т = 1,..., s. Однако все коэффициенты этих
сомножителей положительны, и, следовательно, коэффициенты
произведения также будут все положительны, и, таким образом,
перемены знаков отсутствуют. ?
Относительно второго частного случая теоремы 7.2.6 (случай
ii, упомянутый выше) заметим, что его обращение в общем случае
неверно, в чем можно убедиться на примере полиномиального
уравнения х3 — ж2 — 1 = (х — l)(z — i)(x + i) = 0, у которого имеется
один положительный корень, но три перемены знаков. Одна-
Однако при более ограничительных условиях обратное также верно;
формально это выражается следующим образом:
Лемма 7.3.7 (Akritas-Danielopoulos, 1985). Пусть р(х) = О —
полиномиальное уравнение степени п > 1 с вещественными коэф-
коэффициентами без кратных корней, имеющее один положительный
корень ? ф 0 и п — 1 корней ?i,&,. • • Лп-i с отрицательными ве-
вещественными частями (комплексные корни появляются попарно
сопряженными) и такое, что его корни могут быть выражены в
виде
с |oj| <?„, где
-1-
Тогда р(х) в форме распределения по степеням содержит ровно
одну перемену знаков в последовательности своих коэффициентов.
Теорема Бюдана и методы цепных дробей отделения корней 477
Доказательство. С точностью до постоянного множителя полином
р(х) может быть записан в виде
(X -
(х -
. . . (X
+ с,*" +
+ cn-i
(ADI)
где
с* = Х^1 + «0A + «2> • • •
— сумма, состоящая из (nJl) членов (Л ^ п — 1). Ясно, что (AD1)
можно переписать в виде
Если с* > 0, к = 1,2,... ,п — 1, и отношение Ck/ck-i, где со = 1,
уменьшается с увеличением ifc, то очевидно, что р(х) имеет ровно
одну перемену знаков. Чтобы показать, что с* > 0, fc = 1,2,..., п— 1,
заметим, что для каждого из ("^1) членов мы имеем
а поскольку по предположению \otj \ < е„ для j = 1,2,..., п — 1, мы
получаем
Поэтому можно написать
(AD2)
где \6к | ^ 1/п и, следовательно ск > 0, к = 1,2,..., п — 1.
Затем нам нужно показать, что отношение ск/ск_\ уменьшается с
увеличением к, иными словами, cA/cjt_i > Cjb+i/cj., к = 1,2,...,п-1.
Однако это тривиально, поскольку, пользуясь (AD2), мы получаем
?*
478 Отделение и аппроксимация корней
и нам нужно теперь доказать, что
k(n-k-l)
(* + l)(n -k)
бк+1) ¦
Лействительно, это неравенство справедливо, поскольку, с одной
стороны,
к(п - к -1)
_
An (n-1J
1 (^ПJ-(^ТТJ
и, с другой стороны,
(l + l/llK ~ (n+lJ-
Таким образом, так как ск > 0, к = 1,2,... ,п - 1, и отношение
ct/ct-! уменьшается с увеличением *, мы доказали теорему. ?
Тщательно проанализировав два частных случая теоремы 7.2.6,
мы можем теперь сформулировать теорему Винсента, существенно
от них зависящую [см. также историческое замечание 5, (Akritas
et al., 1978; Lloyd, 1979; Poggendorff, 1863)].
Теорема 7.3.8 (Vincent, 1836). Если в полиномиальном уравнении
с рациональными коэффициентами и без кратных корней сделать
последовательно подстановки вида
х:=а1 + -, x':=a2 + _t *" := аз + _L;...
где аг — произвольное неотрицательное целое число, а а2, а3,... —
любые положительные целые числа, то получающееся в результате
уравнение либо не имеет перемен знаков, либо имеет одну пере-
перемену знаков. В последнем случае уравнение имеет единственный
положительный корень, представляемый цепной дробью
01
1
а3Н
в то время как в первом случае корней нет.
Теорема Бюдана и методы цепких дробей отделения корней 479
Доказательство. Доказательство этой теоремы можно найти в
оригинальной работе Винсента, и здесь оно опускается. Вместо
этого непосредственно ниже мы представляем доказательство
более общей теоремы. ?
Очевидно, что эта теорема обрабатывает только положитель-
положительные корни; отрицательные корни исследуют, заменяя х на — ж в
исходном полиномиальном уравнении. Общность этой теоремы
не ограничивается предположением, что не должно быть кратных
корней, потому что, как и в случае теоремы Штурма, мы можем
сначала применить разложение на свободные от квадратов мно-
множители. Сам Винсент говорил, что теорему 7.3.8 сформулировал
в 1827 г. Фурье, но он не дал какого-либо ее доказательства (или
если и дал, то оно никогда не было найдено); более того, Лагранж
использовал главную идею этой теоремы гораздо раньше.
Зависимость теоремы Винсента от теоремы Бюдана легко за-
заметить, если каждую подстановку вида х := а< + 1/х заменить
эквивалентной парой подстановок {х := ai + х, х := 1/ж}.
Интуитивно цель ряда последовательных подстановок вида
ж := at + 1/ж, применяемых к уравнению р(ж) = 0, состоит в
том, чтобы один из его положительных корней оказался внутри
интервала @,1), а все остальные — в A,оо), или наоборот, за
исключением, конечно, случая, когда 1 — корень. В первом
случае последующая подстановка ж := 1/A + х) даст в результате
уравнение с одним только корнем в @, со), в то время как во втором
случае тот же результат достигается с помощью подстановки
ж := 1 + х.
В теореме 7.3.8 естественно возникает вопрос относительно мак-
максимума числа подстановок вида х := а< + 1/х, необходимых, чтобы
получить полиномиальное уравнение с не более чем одной переме-
переменой знаков. Ответ дается следующей теоремой (см. историческое
замечание 6).
Теорема 7.3.9 (Винсент-Успенский-Акритас). Пусть р(х) = 0 —
полиномиальное уравнение степени п > 1 с рациональными коэф-
коэффициентами и без кратных корней, и пусть Д > 0 — наименьшее
расстояние между любыми двумя из его корней. Пусть т —
наименьший индекс, такой, что
Fm-iFmA>l+—,
en
(VI)
480
Отделение и аппроксимация корней
где Ft есть Jk-й элемент последовательности Фибоначчи 1, 1, 2, 3,
5,8, 13,21, ... и
/(i)
(И)
Пусть а,\ — произвольное неотрицательное целое число, и пусть
02,...,ат — произвольные положительные целые числа. Тогда
подстановка
*:=«! + Ц (V3)
1
(которая эквивалентна ряду последовательных подстановок вида
х := а,- + 1/?, « = 1,2,...,т) преобразует уравнение р(х) = 0 в
уравнение ри(?) = 0, которое имеет не более одной перемены
знаков.
Доказательство. Чтобы доказать теорему, достаточно показать,
что после последовательных подстановок вида х := а,- + 1/? вещес-
вещественные части всех комплексных корней, также как все вещест-
вещественные корни, за исключением, может быть, одного, становятся
отрицательными. (Чрезвычайно важно отметить, что корни пре-
преобразованного уравнения группируются вокруг —1.)
. Действительно,, пусть Pk/Чк есть к-я подходящая дробь для
цепной дроби
1
01 +
+
1
1
а3+ —
Из разд. 2.2.3 нам известно, что для Jk ^ 0, ро = 1, p-i = 0, go = 0 и
g_i = 1 мы имеем
Pk+i :=
Як+i -=
+Р*-ь
+ Чк-1-
Так как qx = 1 и д2 = «2 ^ 1, то, следовательно,
(V3) может быть выражено в виде
х =
+Pm-i
F*. Далее,
Теорема Бюдана и методы цепных дробей отделения корней 481
откуда следует, что
' Рт-1 ~9т-1«'
е _ _
(V4)
Ясно, что если «о — любой корень уравнения р(ж) = 0, то вели-
величина ?о, определяемая формулой (V4), является соответствующим
корнем преобразованного уравнения ри@ = 0.
а. Предположим, что «о — комплексный корень уравнения р(х) =
О, т.е. xq = а ± гЬ, Ь ф 0. В этом случае вещественная часть
соответствующего корня ?о равна
{Рт-\ — gm-l«)(Pm ~
Чт-\Чт1
(V5)
и обязательно отрицательна, если (pm_i — qm-\a)(Pm — 9т«) ^
0. Если, наоборот, (pm_i— Чт-\о){Рт— 9т«) < 0, то значение а,
очевидно, содержится между двумя последовательными под-
подходящими дробями Pm-i/flm-i и Рт/Чт, абсолютное значение
разности между которыми равно l/qm-iqm. Следовательно,
Pm-l
Чт-1
1
Чт-1Чт
И
Рт_
Чт
— а
1
Чт-1Чт
откуда следует, что
\(Рт-1 ~ Чт-\а){рт -
1
Чт-\Чт
(V6)
Из (V5) и (V6) мы заключаем, что значение гр(?о) отри-
отрицательно, если Чт-гЧтЬ2 > 1. Чтобы доказать, что это
так в нашем случае, прежде всего заметим, что, поскольку
А — минимальное расстояние между любыми двумя корнями
уравнения р(ж) = 0, мы имеем
откуда получаем |6| ^ А/2; более того, мы знаем, что
Чт ~2 Чт-\ ~2 Fm-\ и, согласно (VI), что Fm_iA/2 > 1. Тог-
Тогда, очевидно, Fm_i|6 > 1, откуда следует, что gm_i|6| > 1
и Чт Щ > 1- Из последних двух неравенств мы получаем
4m-i4mb2 > 1, доказав, таким образом, что гр(^0) < 0; это
.11 J74
482 Отделение и аппроксимация корней
очевидным образом верно для всех комплексных корней пре-
преобразованного уравнения ри(?) = 0.
Ь. Предположим теперь, что х0 — вещественный корень уравне-
уравнения р(х) = 0, и рассмотрим сначала случай, когда для всех
вещественных корней ж,-
(pro-i - qm-ixi)(pm - qmxi) > 0.
Из (V4) следует, что все вещественные корни преобразован-
преобразованного уравнения Pti(t) = 0 будут отрицательными; более того,
по предположению все комплексные корни уравненияр«(С) = 0
имеют отрицательные вещественные части. Следовательно,
по лемме 7.3.6 р»»(?) не имеет перемен знаков.
Предположим, теперь, что для некоторого вещественного
корня хо
(Рго-1 - </го-1*о)(Рт - ?т*о) < 0. (V7)
Тогда, очевидно, хо содержится между двумя последователь-
последовательными подходящими дробями Pm-ihm-i и pm/qm, и, следова-
тельно, \pm/qm - хо\ ^ l/9m-i9m- Пусть xk, k ф 0, — любой
другой корень, вещественный или комплексный, уравнения
р(х) = 0 и 6ь — соответствующий корень преобразованного
уравнения. Тогда, с учетом того, что
Pm9m-1 - Pm-X
из (V4) следует, что
t , 9m-l _
= (-1)"*,
qm
ИЛИ
где
qm-iqm
9m
(-1
Г-1
Теперь
-Xk
xk)'
>\x-xk\-
Pra
9m
1
9m-l9m
>0
Теорема Бюдана и методы цепных дробей отделения корней 483
и, следовательно,
qm-iqmA- 1
Д - 1'
Из последнего выражения и второго неравенства формулы
(VI) мы заключаем, что \ак\ < еп. Таким образом, корни
?i, Jb = 1,2,..., п — 1, преобразованного уравнения ри(?) = 0,
соответствующие корням z*, Jb = 1,2, ...,п — 1, уравнения
р(х) = 0, которые все отличны от Хо, имеют вид
9т
ak), \ak\<en,
(V8)
т.е. корни преобразованного уравнения имеют отрицательные
вещественные части и группируются вокруг — 1. Если сделать
подстановку
?:=-( ]«, €*:= - )ft, t = 0,l,...,n-l,
V 9m / V 9m /
где
то преобразованный полином ри(О может быть записан в
виде
Поскольку полином ри(и) удовлетворяет всем предположе-
предположениям леммы 7.3.7, он содержит в точности одну перемену
знаков, и, очевидно, то же верно для преобразованного поли-
полинома Ри(О-
Нам осталось рассмотреть теперь только случай, когда в (V7)
имеет место равенство, т.е.
(Рт-1 ~ 9m-lZo)(jPm ~
= 0.
Если pm-i — qm-iXo = 0, то из (V4) мы видим, что ?0 = 0, и,
очевидно, у преобразованного уравнения р«(?) = 0 нет перемен
знаков (лемма 7.3.6). В случае рт — qmxo — 0 мы имеем &> =
оо, и преобразованное уравнение редуцируется к степени п — 1.
Поскольку снова все корни имеют отрицательные вещественные
части, мы заключаем из леммы 7.3.6, что ри(?) = 0 не имеет перемен
знаков. Таким образом, мы полностью доказали теорему. ?
31*
484 Отделение и аппроксимация корней
Из теоремы 7.3.9 ясно видно, что m — желаемая граница числа
подстановок вида х := а< + 1/х, которые должны быть выполнены,
чтобы получить уравнение с не более чем одной переменой знаков
в последовательности его коэффициентов.
Следствие 7.3.10. В предположениях теоремы 7.3.9
m = O{nL[\p(x)\ex>) + nL(n)}.
Доказательство. По определению m — наименьший индекс, такой,
что одновременно выполняются оба неравенства (VI). Ясно, что
одно из этих неравенств (а возможно, оба) не будет выполняться,
если мы уменьшим т на единицу; предположим, что не выполняется
первое, так что
Fm-2- <k I- <V9)
Применяя соотношение Fk = фк/у/5 (с правой частью уравнения,
округленной до ближайшего целого), где ф = 1.618..., из (V9)
получаем, что фт~2 ^ 2л/5 ¦ A/Д), откуда заключаем, что
т ^ 2 + log^ 2 + A/2) log^ 5 - log^ Д.
(V10)
Более того, напомним, что из теоремы 7.2.12 (Mahler, 1964) мы
имеем
д> Узп-<п+2>/2|Р(*IГ(п~1)- (vii)
Если мы объединим (V10) и (VII) и примем во внимание тот
факт, что ?[|р(а:)|2] ~ Lflp^)!,»], то следствие будет доказано. [Тот
же результат получается, если предположить, что не выполнено
второе неравенство (VI).] О
В большинстве представляющих интерес случаев L(n) = 1, и,
таким образом, мы можем считать, что
(V12)
Теорема 7.3.9 может использоваться для отделения веществен-
вещественных корней полиномиального уравнения. Чтобы видеть, как она
применяется, заметим следующее (для ясности и лучшего понима-
понимания мы повторяем некоторые части доказательства теоремы 7.3.9,
где ? теперь заменяется на у):
Теорема Бюдана и методы, цепных дробей отделения корней 485
i. Подстановка цепной дроби (V3) может также быть записана
как
где Pk/qk есть к-я подходящая дробь для цепной дроби
1
и, как уже говорилось, для к
9-i = l мы имеем
Рк+1 :=
1
аз-\
0, ро = 1, р-\ = 0, ?о = 0 и
(V14)
ii. Расстояние между двумя последовательными подходящими
дробями равно \pm-i/qm-i - pm/qm\ = l/«m-i«ro- Ясно, что
наименьшее значение q{ встречается, когда а,- = 1 для всех
i. Тогда qm = Fm, т-е число Фибоначчи. Это объясня-
объясняет, почему существует связь между числами Фибоначчи и
расстоянием Д в теореме 7.3.9.
Hi. Пусть ри(у) = 0 — уравнение, полученное из р(х) = 0 после
подстановки вида (V13), соответствующей ряду сдвигов и ин-
инверсий. Заметим, что (V13) отображает интервал 0 < у < оо
на i-интервал, неупорядоченные концевые точки которого —
последовательные подходящие дроби pm-i/qm-i ирт/Ят- Ес-
Если длина этого я-интервала меньше, чем Д, то он содержит
не более одного корня уравнения р(х) = 0, а соответствующее
уравнение ри(у) = 0 имеет не более одного корня в интервале
@,оо).
iv. Если у' — этот положительный корень уравнения ри(у) = О,
то соответствующий корень х' уравнения р(х) = 0 может лег-
легко быть получен из (V13). Мы знаем только, что j/ находится
в интервале @,оо); поэтому, подставляя вместо у в (V13) один
раз 0, а другой оо, мы получаем для положительного корня
х изолирующий интервал, неупорядоченные концевые точки
которого — это Pm-i/qm-i ирт/?т. Каждому положительно-
положительному корню соответствует своя цепная дробь; нужно вычислить
не более т неполных частных для отделения любого поло-
положительного корня. (Как мы уже упоминали, отрицательные
корни могут быть отделены, если мы заменим х на — х в
исходном уравнении.)
486
Отделение и аппроксимация корней
7.3.4. Два метода цепных дробей отделения вещественных
корней
Из приведенного обсуждения очевидно, что вычисление непол-
неполных частных ai,a2,...,am для подстановок вида (V3), которые
приводят к уравнению ровно с одной переменой знаков, состав-
составляет процедуру отделения вещественного корня. [Из теоремы
Бюдана нам известно, что значение какого-то неполного част-
частного ai вычислено, если в последовательности коэффициентов
уравнения р(сц + х) = О больше перемен знаков, чем у уравнения
р(сц + 1 + х]) = 0.]
Имеются два метода цепных дробей: Винсента, 1836 г., и автора
1978 г., соответствующие двум различным способам вычисления
неполных частных а,- (см. историческое замечание 7). Как мы
увидим ниже, различие между этими двумя методами можно
рассматривать как аналог различия между интегралами Римана
и Лебега. То есть хорошо известно, что сумма 1 + 1 + 1 + 1 + 1
может вычисляться следующими двумя способами:
i. 1 + 1 = 2, 2+1 = 3, 3 + 1=4, 4+1 = 5 (Риман).
ii. 5-1=5 (Лебег).
В основе метода цепных дробей Винсента 1836 г. лежит вычисле-
вычисление какого-то неполного частного а,- с помощью серии единичных
приращений, а,- := а,{ + 1, с каждым из которых мы должны вы-
выполнить сдвиг ри(х) := pu(l + x) [для некоторого полиномиального
уравнения ри(х) = 0] и проверить изменение числа перемен знаков.
Этот подход «в лоб» приводит к методу с экспоненциальным по-
поведением, и, следовательно, его практическая ценность невелика.
Специального алгоритма для этого метода мы не приводим.
В качестве примера метода Винсента отделим корни полиноми-
полиномиального уравнения
р(х) = (х -«)(*-/?) = 0,
(А1)
а\\
где а = 5-109+еи/? = а + 1. Рассмотрим а\\ первое неполное
частное для а, которое равно 5 • 109. При использовании метода
Винсента мы первоначально полагаем а\а' := 1, ри(х) '¦= р(х) и
вычисляем ри(х) :— рцA + х). Поскольку число перемен знаков в
последовательности коэффициентов преобразованного полинома
Ри(х) не изменилось, мы даем приращение
( )
Oj := ar"'
:= ar
+ 1, вы-
вычисляем новый полином ри(х) := р(,A + х), снова проверяя число
перемен знаков. Этот процесс повторяется 5 • 109 раз, и на самой
Теорема Бюдана и методы цепных дробей отделения корней 487
быстрой ЭВМ это займет несколько лет. Однако метод Винсента
весьма эффективен, когда значения неполных частных маленькие.
Напротив, метод цепных дробей, разработанный автором в 1978
г., заключается в немедленном вычислении какого-либо неполного
частного а,- в качестве нижней границы 6 значений положитель-
положительных корней некоторого полинома ри(х), т.е., пользуясь прави-
правилом Коши (разд. 7.2.3), мы немедленно определяем b и полагаем
щ := Ь. [Напомним, что вычисление нижней границы 6j0 (от low-
lower bound — Перев.) значений положительных корней некоторого
полиномиального уравнения р(х) — 0 эквивалентно вычислению
верхней границы 6fo_inv значений положительных корней уравне-
уравнения рA/х) = 0 с последующим обращением, т.е. 6jo := 1/bjo-inv]
Положив a,- := b, b ^ 1, мы должны только выполнить для соот-
соответствующего полинома ри(х) подстановку х := b + x, для чего
потребуется приблизительно столько же времени, что и для под-
подстановки х := 1+х; поэтому, пользуясь этим методом, мы экономим
огромное количество машинного времени, и (А1) решается за не-
несколько секунд. Подробный алгоритм этого метода представлен
ниже.
Отметим, что для всех i мы имеем a; = [a,J > где а, — на-
наименьший положительный корень некоторого полиномиального
уравнения. Следовательно, очевидно, что в общем случае, что-
чтобы вычислить [а,\, правило Коши применяется несколько раз;
например, чтобы вычислить [5 • 109 + е] для полинома (А1), его
нужно применить 18 раз. Однако, поскольку число применений
правила Коши очень мало по сравнению со значением а,- и не
может быть предопределено, мы можем безопасно считать, что в
нашем обсуждении 6 = [a,J.
Эта интерпретация каждого а, как нижней границы значений
положительных корней полинома р(х) = 0 становится более по-
понятной, если мы примем во внимание, что наша цель — загнать
один из его положительных корней внутрь интервала @,1), а все
остальные — внутрь интервала A,оо) или наоборот. Следующие
леммы существенны для дальнейшего.
Лемма 7.3.11. Пусть р(х) = 0 — полиномиальное уравнение
степени d ^ 2 от одной неизвестной с целыми коэффициентами и
без кратных корней, имеющее р вещественных корней внутри ин-
интервала @,1), 2 ^ р ^ d, и пусть Др > 0 — наименьшее расстояние
между любыми двумя из этих корней. Тогда инверсия х := 1/х,
примененная к р{х) = 0, отображает эти р корней в интервал
488
Отделение и аппроксимация корней
A,оо), где теперь наименьшее расстояние между любыми двумя
корнями равно А'р > Ар.
Доказательство. Пусть 0 < e*i < ••• < сц < otj < ••• < ат <
ап < •¦¦ < ар < 1 суть р корней уравнения р\х) = 0 внутри
интервала @,1), и предположим, что Ар = otj — сц, в то время как
А'р = 1/ат - 1/а„. Поскольку А'р = (а„ - ат)/ата„ > а„ - ат ^
otj — а,- = Ар, лемма доказана. ?
Лемма 7.3.12. Пусть р(х) = О — полиномиальное уравнение
степени d ^ 2 от одной неизвестной с целыми коэффициентами и
без кратных корней, имеющее два комплексно-сопряженных корня
(*i и е*2 внутри круга с центром A/2,0) и радиусом 1/2; более
того, пусть 6р = |ari — аз|- Тогда инверсия х := 1/х, примененная
к уравнению р(х) = 0, отображает «i и <*2 в полуплоскость с
вещественной частью > 1, где теперь расстояние между ними
6'Р>6Р.
Доказательство аналогично предыдущему.
?
Ниже мы продолжаем уточнять различия между двумя методами
цепных дробей для отделения вещественных корней полиномиаль-
полиномиального уравнения.
Рассмотрим бесконечное двоичное дерево, с каждой вершиной
которого мы ассоциируем тройку вида {рм(я),М(х),т;м}, Г-Де по~
лином рм(я) получен из исходного полинома р(х) подстановкой
х :— М(х) = (а%х + ao)/(bix + Ьо) и им — число перемен знаков в
последовательности коэффициентов полинома рм(х). [Необходимо
ассоциировать с каждым преобразованным полиномом соответс-
соответствующую функцию М(х) так, чтобы в конце мы могли легко
получить изолирующие интервалы корней; см. также (V13).] Если
р(х) = 0 — исходное полиномиальное уравнение с t; переменами
знаков в последовательности коэффициентов, то корень дерева
соответствует тройке {рм(х) := Р(х)> М(х) :— х, v-u '¦— v].
Путь от каждой вершины к правому потомку соответствует
подстановке х := 1 + х, в то время как путь к левому потомку
соответствует подстановке х := 1/A4-х); отметим, что для любого
неполного частного щ ряд а,- последовательных подстановок вида
х := 1 + х, за которыми следует х := 1/A + х), эквивалентен под-
подстановке х := Oj + 1/я, за которой следует х := 1 + х. Все вершины,
принадлежащие какому-либо пути, конечному или бесконечному,
будут рассматриваться как элементы непересекающихся множеств
трех типов. Множество типа Vo, Vi или Vn содержит вершины,
Теорема Бюдана и методы цепных дробей отделения корней
489
соответствующие полиномам с нулем, одной или несколькими пе-
переменами знаков соответственно. Множества типов Vo или V\
называются терминальными множествами. В случае множеств,
принадлежащих одному и тому же пути, говорят, что множество
X предшествует множеству У, если и только если для всех х в
X и всех у в У длина пути(х)<длина пути(у). В терминальном
множестве вершина, связанная кратчайшим путем с корнем, будет
называться терминальной вершиной или терминальным узлом.
С учетом этих определений различие между двумя методами
цепных дробей для отделения вещественных корней полиномиаль-
полиномиального уравнения показано на рис. 7.3.1.
Р(*)-О
д;:=1+д;
х'—Ь+х
Vi — терминальный узел
Рис. 7.3.1.
Геометрическая интерпретация двух различных спо-
способов вычисления значения некоторого а; (длины вет-
ветви).
Гипотеза 7.3.13. Пусть р(х) = с„хп + •¦• + cix + с0 = 0 —
полиномиальное уравнение степени п > 1 с рациональными ко-
коэффициентами и без кратных корней, соответствующее корню
двоичного дерева. Предположим, кроме того, что подстановка
1
х :=
a2
У
где ai — произвольное неотрицательное целое число, а а^,... ,ан,
1 ^ h ^ т, — положительные целые элементы (где т определено
условием (VI) в теореме 7.3.9), преобразует уравнение р(х) = 0 в
490 Отделение и аппроксимация корней
новое уравнение, соответствующее терминальному узлу типа
или Vi. Тогда для всех к, 1 ^ к ^ Л, мы имеем
ак =
(А2)
Обсуждение. Экспоненциальность методов непрерывных дро-
дробей обусловлена одной или обеими из следующих двух причин:
(а) числом подстановок вида х <— х + 1, которые нужно выпол-
выполнить для вычисления неполного частного а,-, и (Ь) увеличением
размера целых коэффициентов полиномов, получающихся после
подстановок вида х *— х + а,-.
Метод непрерывных дробей Винсента 1836 г. экспоненциален
как по (а), так и по (Ь), в то время как метод непрерывных дробей
автора 1978 г. теоретически экспоненциален только из-за возрас-
возрастания размера целых коэффициентов, т.е., пользуясь правилом
Коши, автору удалось исключить экспоненциальность, обуслов-
обусловленную фактором (а). Однако по теореме Кузьмина (упоминаемой
в разд. 2.2.4) мы не можем теоретически ограничить размер непол-
неполных частных а,- и, следовательно, не можем контролировать рост
коэффициентов. Тем не менее, благодаря тому, что (для того,
чтобы изолировать корни) мы вычисляем очень мало неполных
частных а,-, снова пользуясь теоремой Кузьмина, мы видим, что
вероятность больших неполных частных практически равна нулю,
и, следовательно, наша гипотеза хорошо обоснована.
Суммируя сказанное выше, мы получаем следующий алгоритм,
который является единственным алгоритмом с полиномиальным
временем работы, использующим цепные дроби.
ACF1978. Метод цепных дробей 1978 г. для отделения вещест-
вещественных корней уравнения (Continued Fractions Method of 1978 for
Isolation of the Real Roots of an Equation)
Вход: p(z) = 0, полиномиальное уравнение с целыми коэффици-
коэффициентами и без кратных корней.
Выход: Изолирующие интервалы вещественных корней полино-
полинома р(х) или точные значения корней.
1. [Инициализация] Положить pw(x) := р(х); если р«,@) = 0, то
выдать замкнутый интервал [0,0] и положить pw (х) :— pw(x)/x;
pn-flag := 0; ti-flag := 0; Т := 0 и вычислить число v перемен
знаков в последовательности коэффициентов полинома pw(x).
[Т — множество определенных выше троек {рм(х)> М(ж), «м}>
Теорема Бюдана и методы цепных дробей отделения корней 491
где М(х) = (а\х + ао)/{Ь\х + bo). Если pn-flag = 0, то мы от-
отделяем положительные корни, а если pn-flag = 1, то отделяем
отрицательные; <i-flag — флаг сдвига-инверсии.]
2. [v = 0 или v = 1?] Если v = 0 или v = 1, то из правила знаков
Кардано-Декарта (теорема 7.2.6) мы знаем, что у pw(x) нет
положительных корней или есть ровно один положительный
корень соответственно; в последнем случае @,оо) — его
изолирующий интервал — подается на выход. В любом из
этих случаев подстановки не нужны; если pn-flag = 0, то
перейти к шагу 10, иначе выход.
2а. [v > 1] В этой точке нам известно, что v > 1, и pw(x)
требует дальнейшего исследования. Положить рм(х) :=
Ра,(ж), М(х) := х, 1>м := v и перейти к шагу 4.
3. [Проверка завершения] Если Т ф 0, то удалить первую
тройку {рм(я),М(ж),«м} и перейти к шагу 4; если Т = 0 и
pn-flag = 0, то перейти к шагу 1, иначе выход.
4. [Вычисление 6] Пользуясь правилом Коши (разд. 7.2.3) вы-
вычислить нижнюю границу 6 значений положительных корней
полинома рм(ж); если 6 < 1, то перейти к шагу 6.
5. [х := Ь+х, 6^1] Положитьрм(ж) := Рм(Ь+х); М(х) := Ы(Ь+х)
(«М не меняется). Если рм@) = 0, то мы нашли (рациональ-
(рациональный) корень исходного уравнения, в этом случае вывести
замкнутый интервал [ао/Ьо,ао/Ьо] [полученный из соответст-
соответствующего полинома М(г)] и положить рм(ж) := Рм(х)/х.
6. [х ~ 1 +х] Положить t/ := им; рш(х) := рмA +*); М1(х) :=
МA + х). Если pmi@) = 0, то мы нашли (рациональный)
корень исходного уравнения, в этом случае вывести замкну-
замкнутый интервал [ао/Ьо,ао/Ьо] [полученный из соответствующего
полинома М(ж)] и положить Pmi(x) '•= Pmi(x)/x- Перейти к
шагу 8.
7. [х := 1/A +-х)] Если t/ = i>mi, то выполнять {ti-flag := 0;
перейти к шагу 3}. В этой точке нам известно, что v' ф
vMb а это означает наличие корней уравнения рм(ж) = 0
в интервале @,1); положить р,(ж) := рмA/х), обеспечивая
условие 1с[р,-(ж)] > 0 [в случае необходимости умножить Pi(x)
на (-1)]; М,-(*) := M(l/*); pMi(*) := j*(l + *); М1(х) :=
М,-A + *).
8. [Изменить <»-flag] <i-flag := <i-flag + 1; вычислить t>mi> число
перемен знаков в последовательности коэффициентов поли-
полинома Pmi(x)- Как на шаге 2, если »mi = 0 или «mi = 1, то
492 Отделение и аппроксимация корней
из правила знаков Кардано-Декарта мы знаем, что у pmi(x)
или нет положительных корней, или есть один положительный
корень; в последнем случае вывести его изолирующий интер-
интервал, равный (i) @,оо/6о), если ai = 0 и 6i > 0, (ii) (ао/6о,оо),
если ai > 0 и 6i — О, и (iii) открытому интервалу с неупо-
неупорядоченными концевыми точками ao/bo, ai/6j в остальных
случаях [полученному, конечно, во всех случаях по соответс-
соответствующей функции М1(ж)]. Если «mi > 1, то добавить тройку
{Pmi(x),MI(x),vmi} к множеству Т.
9. [Возврат к циклу] Если <i-flag = 1, то перейти к шагу 7; иначе
выполнять {fo'-flag := 0; перейти к шагу 3}.
10. [Отделить отрицательные корни] Если р{х) ф р(—х), то вы-
выполнять { положить pn-flag := 1; tt-flag := 0; pw(x) := р(—х),
так что отрицательные корни становятся положительными;
Т := 0; вычислить число v вариаций знаков в последова-
последовательности коэффициентов полинома рш{х) и перейти к шагу
2}, иначе выход. (Если мы выходим здесь, то отрицательные
корни симметричны положительным и мы уже знаем их изо-
изолирующие интервалы. Конечно, в этом случае интервалы,
полученные нами для отрицательных корней, находятся в
положительной полуплоскости и должны быть отображены на
соответствующие интервалы в отрицательной полуплоскос-
полуплоскости — тривиальное действие.)
Анализ времени работы алгоритма ACFI978. Из разд. 3.1.2 нам
известно, что для данного полиномар(х), deg[p(x)] = n, подстановка
р(х) := р(а + х) выполняется за время
Из (V12) нам известно, что для каждого вещественного корня
уравнения р{х) = 0 мы должны выполнить не более т таких
подстановок, где
го = 0{п?[|р(*)|со]}.
Кроме того, из условия (А2) гипотезы 7.3.13 нам известно, что
для каждого вещественного корня полинома р(х) и для каждой
подстановки р(х) := р(а + х)
а = О[?(|р(*)|„о)].
Комбинируя эти три результата, мы получаем, что один вещест-
вещественный корень полинома р(х) может быть изолирован за время
Теорема Бюдана и методы цепных дробей отделения корней 493
Поскольку полином р(х) имеет не более п вещественных корней, то
«ACF19T.W*)] = 0{«5^Пр(*Iоо]}.
Теоретически и эмпирически продемонстрировано, что использу-
использующий точную целочисленную арифметику метод цепных дробей
1978 г. является самым быстрым методом отделения вещественных
корней полиномиального уравнения; см. также разд. 7.4.
Пример. Отделим вещественные корни уравнения р(х) = х3 — 7х +
7 = 0, где р@) ф 0. Применяя алгоритм ACF1978, получаем
следующие результаты:
Шаг 1. Здесь мы полагаем pw(x) := х3 — 7х + 7, pn-flag := 0,
li-flag := 0, Т := 0 и вычисляем значение v, равное 2. (Мы
сначала отделяем положительные корни.)
Шаг 2а. Поскольку v > 1, мы полагаем Ръл(х) := х3 — 7х + 7,
М(ж) := х, им := 2 и переходим к шагу 4.
Шаг 4. Чтобы использовать правило Коши, мы сначала полагаем
х := 1/х в рм(я) =0 и получаем 7х3 — 7х2 + 1 = 0; затем мы
применяем BPR к последнему уравнению и получаем 1/6 = 1.
Поэтому 6=1.
Шаг 5. На этом шаге мы модифицируем рм(я) := РмA + х) =
ж3 + Зх2-4х+1иМ(х) :=МA + х) = х + 1; очевидно, рм@) Ф 0.
Шаг 6. Полагаем v' — 2, модифицируем pmi(x) := РмA + х) =
х3-\-6х2 +5х+ 1 и М1(х) := МA + ж) = х + 2 и переходим к шагу
8.
Шаг 8. На этом шаге мы полагаем ti-flag := 1 и вычисляем dmi,
равное 0.
Шаг 9. Поскольку tt-flag = 1, мы переходим к шагу 7.
Шаг 7. v' ф vmi, и мы вычисляем новые значения pui{x) =
х3 - х2 -2х + 1 и М1(х) = (х + 2)/(х + 1). [Заметим, что
Pmi(x) := р,A+ж) и М1(х) := Mi(l+x), гдер,(х) = х3-4х2+Зх+1
и М* (ж) = (х + 1)/х мы получили, полагая х = 1/х в рм(я) и
М(х) соответственно.]
Шаг 8. На этом шаге мы устанавливаем <i-flag := 2 и вычисляем
значение dmi, которое оказывается равным 2. В этом случае
мы полагаем Т := {[х3 - х2 - 2х + 1, (х + 2)/(х + 1), 2]}.
Шаг 9. Поскольку ti-flag = 2, мы устанавливаем ti-flag := 0 и
переходим к шагу 3.
494 Отделение и аппроксимация корней
Шаг 3. Т ф 0, и мы удаляем из него первую тройку рм(я) =
х3 — х2 — 2х + 1,М(х) = (х + 2)/(х+1),г>м = 2 и переходим к шагу
4.
Шаг 4. Снова мы сначала полагаем х := 1/х в Рм(я) = 0 и получа-
получаем х3 + 2х2 — х + 1 = 0; затем мы применяем BPR к последнему
уравнению и получаем 1/6 = 4. Поэтому 6 = 1/4 < 1, и мы
переходим к шагу 6.
Шаг 6. Полагаем t/ := 2, модифицируем pvu(x) := РмA + х) =
ж3 + 2ж2-ж-1 hM1(i) := МA + ж) = (ж + 3)/(ж + 2) и переходим
к шагу 8.
Шаг 8. Здесь мы устанавливаем <i-flag := 1 и вычисляем значение
"мь которое оказывается равным 1. В этом случае мы выводим
первый изолирующий интервал A, 3/2), полученный из М1(ж) =
(ж + 3)/(х + 2).
Шаг 9. Поскольку tt'-flag = 1, мы переходим к шагу 7.
Шаг 7. v' ф т>М1> и мы вычисляем новые значения Pmi(x) =
ж3 + х2 - 2х - 1 и М1(х) = Bх + 3)/(х + 2).
Шаг 8. Здесь мы устанавливаем <i-flag := 2 и вычисляем значение
иц1, которое оказывается равным 1. В этом случае мы выводим
второй изолирующий интервал C/2,2), полученный из М1(х) =
Bх + 3)/(х + 2).
Шаг 9. Поскольку fi-flag = 2, мы устанавливаем ti-u&g := 0 и
переходим к шагу 3.
Шаг 3. Т = 0 и pn-flag = 0; поэтому мы переходим к шагу 10.
Шаг 10. Мы теперь отделяем отрицательные корни. Поскольку
р(ж) ф р(—х), мы полагаем pn-flag := 1, <i-flag := 0, рш(х) :=
р(—х) = х3 — 7х — 7, Т := 0, вычисляем значение v, которое
оказывается равным 1, и переходим к шагу 2.
Шаг 2. Здесь v = 1, откуда следует, что изолирующим интерва-
интервалом для отрицательного корня является (-оо,0), и, поскольку
pn-flag = 1, мы выходим. (Пользуясь правилом Коши, мы можем
получить для этого корня лучшую границу, чем —оо.)
Полностью процесс проиллюстрирован на рис. 7.3.2.
Сравнение двух мпподов отделения корней 495
(Ь := 1)
Vh—терминальный узел
— терминальный узел
V\ — терминальный узел
Рис. 7.3.2.
Двоичное дерево, полученное для отделения положи-
положительных корней уравнения х3 — 7х + 7 = 0.
7.4
Эмпирическое сравнение двух методов отделения веществен-
корней
В разд. 7.2 и 7.3 мы подробно обсуждали два классических спо-
способа, метод бисекций Штурма и метод цепных дробей 1978 г., отде-
отделения вещественных корней полиномиальных уравнений с целыми
коэффициентами. Ниже мы приводим две таблицы, показывающие
наблюденные времена вычислений для двух классов полиномов
при использовании этих методов. Все времена даны в секундах и
были получены с использованием системы компьютерной алгебры
sac-1 на IBM S/370, модель 165. Каждый из полиномов в табл. 7.4.1
был получен путем перемножения соответствующего числа линей-
линейных сомножителей. Все коэффициенты полиномов в табл. 7.4.2
были ненулевыми, каждый коэффициент состоял из 10 десятичных
цифр, коэффициенты были заданы случайным образом.
Полиномы в табл. 7.4.2 — те же, что были использованы Коллин-
Коллинзом [в (Rice, 1979)] и Коллинзом и Лоосом (Collins, Loos, 1976) для
тестирования метода Коллинза-Акритаса и методов, основанных
на дифференцировании; см. также исторические замечания 1 и
7. Поэтому нетрудно убедиться в преимуществе метода цепных
496
Отделение и аппроксимация корней
Таблица 7.4.1
Полиномы со случайно заданными в интервале @,1О3) корнями
Степень
5
10
15
20
Метод цепных
дробей 1978 г.
0.71
23.22
96.35
288.49
Метод бисекций
Штурма
0.73
22.50
151.42
>600
Таблица 7.4.2
Полиномы со случайно заданными коэффициентами
Степень
5
10
15
20
Метод цепных
дробей 1978 г.
0.26
0.46
0.94
2.36
Метод бисекций
Штурма
2.05
33.28
156.40
524.42
Таблица 7.4.3
Сравнение различных методов для полиномов из табл. 7-4-2
Степень
5
10
15
20
ACF1978/
Штурм
0.13
0.014
0.004
0.0045
Коллинз-
Акритас/
Штурм
0.28
0.10
0.05
0.03
Дифферен-
Дифференцирование/
Штурм
1.31
0.55
0.28
0.21
дробей 1978 г. (ACF1978) простым сравнением отношений времен
различных методов к соответствующим временам, полученным
Аппроксимация вещественных корней 497
при использовании метода Штурма. Мы приводим эти отношения
в табл. 7.4.3. [См. также (Mignotte, 1976).]
Аппроксимация вещественных корней полиномиального урав-
уравнения
В предыдущих разделах мы подробно исследовали два различ-
различных подхода к отделению вещественных корней полиномиального
уравнения с целыми коэффициентами, т.е. мы может теперь найти
вещественные непересекающиеся интервалы, такие, что каждый
интервал содержит ровно один вещественный корень и каждый
вещественный корень содержится в некотором интервале. Однако,
согласно Фурье, это только первый шаг (из двух) вычисления
вещественного корня полиномиального уравнения; второй шаг
состоит в аппроксимации этих корней с любой желаемой сте-
степенью точности е. Другими словами, этот второй шаг состоит из
уменьшения длин изолирующих интервалов, пока они не станут
меньше или равны е.
Ниже мы рассматриваем два метода аппроксимации, первый из
которых основан на бисекций, а второй использует цепные дроби
вместе с теоремой Винсента; см. (Akritas et al., 1983; Cajori, 1910;
Ng, 1980; Nordgaard, 1922; Verbaeten, 1975).
7.5.1. Аппроксимация вещественного корня с использованием
бисекций
В этом разделе мы аппроксимируем вещественный корень по-
полиномиального уравнения путем постоянного деления пополам
его (данного) изолирующего интервала до тех пор, пока расстоя-
расстояние между концевыми точками интервала не станет меньшим или
равным некоторому е.
Алгоритм бисекций. Дано свободное от квадратов по-
полиномиальное уравнение р(х) = 0 с целыми коэффициентами и
изолирующий интервал (а, Ь) корня, который мы хотим аппрокси-
аппроксимировать, где а,6 — рациональные числа.
Найдем знак полинома р(х) в точке (а+6)/2; если значение равно
нулю, то заменим (а,Ь) на [(а + 6)/2, (а + 6)/2] и завершим-работу.
Если р[(а + 6)/2] имеет тот же знак, что и рF), то корень находится
42-274
498 Отделецие и аппроксимация корней
в интервале [а, (а + Ъ)/2], в то время как если р[(а + Ь)/2] имеет тот
же знак, что и р(а), то корень находится в интервале [(а + Ь)/2,Ь].
Этот процесс повторяется, пока длина текущего интервала не
станет меньше или равной t.
Из разд. 3.1.2 и 7.2.2 мы можем легко увидеть, что метод
бисекций аппроксимирует корень с точностью е за время
где п — степень свободного от квадратов полинома р(х), h —
начальная длина изолирующего интервала, ? — точность (пре-
(предел аппроксимации) и с = max{|a!|, |a2|,fei,Ьг}. где (ai/6i,e2/62) —
исходный интервал. Эмпирические результаты показывают, что
деление пополам — очень медленный метод; его эффективность
значительно повышается, когда он комбинируется с методом
Ньютона (см. также табл. 7.6.1 и 7.6.2 разд. 7.6).
Пример. Лано уравнение р(х) = х3 — 7х 4- 7; аппроксимируем
с точностью ? = 0.01 его положительный корень, изолирующий
интервал которого — это A,3/2). Заметим, что рA) = 1, в то
время как рC/2) = —1/8. (Здесь нас фактически интересуют знаки
получающихся чисел, а не сами эти числа.)
Заметим прежде всего, что 3/2 — 1 = 0.5 > ?, так что вычисляем
знак р(х) в средней точке; а именно, получаем рE/4) = 13/64,
откуда следует, что меньший изолирующий интервал для этого
корня — E/4,3/2). Продолжая в том же духе, получаем следующую
таблицу:
Текущий
изоли-
изолирующий
интервал
E/4,3/2)
E/4,11/8)
B1/16,11/8)
D3/32,11/8)
D3/32,87/64)
A73/128,87/64)
Расстоя-
Расстояние между
концевыми
точками
0.25
0.125
0.0625
0.031
0.0156
0.0078 < е
Средняя
точка
11/8
21/16
43/32
87/64
173/128
Знак значения
р(х) в сред-
средней точке
-13/512
+301/4096
+659/32768
-953/262144
+16757/2097152
Следующий
изоли-
изолирующий
интервал
E/4,11/8)
B1/16,11/8)
D3/32,11/8)
D3/32,87/64)
A73/128,87/64)
и останавливаемся.
Выражая в десятичном виде концевые точки последнего те-
текущего изолирующего интервала, A73/128,87/64), мы получаем
173/128 = 1.3515625 и 87/64 = 1.359375. Поэтому с точностью
s = 0.01 приближенное значение корня равно 1.35.
Аппроксимация тщсственных корней 499
7.5.2. Аппроксимация вещественного корня с использованием
цепных дробей
Идея аппроксимировать вещеп ионные корни полиномиальных
уравнений, пользуясь цепными дробями, принадлежит Лагранжу,
который задался целью разработать процедуру, свободную от де-
дефектов, свойственных хорошо и.ин'стмому методу Ньютона. Идея
Лагранжа может быть сформулиронана следующим образом:
Предположим, что корень полиномиального уравнения р(х) — О
находится между последовательными целыми -числами а\ и aj + 1;
уменьшим корни уравнения на а\, т.е. выполним замену р(х) :=
p(ai + х), и возьмем возвратное уравнение, т.е. выполним под-
подстановку р(х) := рA/х). Найдем методом проб корень последнего
уравнения, лежащий между а? и а? + 1, уменьшим корни на а? и
возьмем возвратное уравнение. Продолжаем таким же образом.
Тогда цепная дробь
1
а2 +
1
аппроксимирует корень уравнения с требуемой точностью.
Ясно, что подход Лагранжа имеет определенные недостатки.
Отметим, что он четко направлен, если имеется один и только
один корень между последовательными целыми числами а,- и а, + 1;
однако процесс не работает, если в интервале (ai,ai + 1) имеется
два или несколько корней (см. историческое замечание 8). (В
этом случае Лагранж фактически использует неопубликованную
еще теорему Винсента, чтобы сначала отделить корни.) Более
того, так же, как в методе цепных дробей Винсента 1836 г., целая
часть корня вычисляется методом проб, т.е., чтобы определить,
где находится единственный корень > 1, он подставляет значения
1,2,3,... в полиномиальное уравнение, выполняя ряд подстановок
вида р(х) := рA + х), до тех пор, пока не наблюдается изменение
знака. Ясно, что это процедура экспоненциальной сложности.
Продолжая исследования в направлении, обозначенном в разд.
7.3, следует заметить, что теорема 7.3.9 может также использо-
использоваться для аппроксимации вещественных корней полиномиального
уравнения с любой требуемой точностью (см. историческое заме-
замечание 9).
32*
500
Отделение и аппроксимация корней
Ясно, что это легко можно достигнуть расширением (вычис-
(вычислением большего числа неполных частных) цепной дроби (V3),
что преобразует исходное полиномиальное уравнение в уравне-
уравнение с ровно одной переменой знаков в последовательности его
коэффициентов (см. историческое замечание 10).
Замечание. Заметим, что описываемый нами метод аппроксима-
аппроксимации в значительной степени зависит от процесса отделения, т.е.
он не может работать, если ему подаются просто изолирующие
интервалы корней и полином р(х) = 0.
Предположим, что предел аппроксимации равен е и что в про-
процессе аппроксимации вещественного корня q полиномиального
уравнения мы вычислили к неполных частных разложения корня
в цепную дробь. Тогда из рассуждений разд. 7.3 становится оче-
очевидным, что q находится между последовательными подходящими
дробями Pk-i/qk-i и Рк/Як, абсолютное значение разности которых
равно l/qk-iqk- Следовательно,
Як
и метод завершает работу, когда
1
??
(CF1)
для некоторого к.
Ниже мы описываем два способа вычисления цепной дроби (V3),
чтобы аппроксимировать с точностью е вещественный корень g
уравнения. Эти два метода имеют одну и ту же теоретичес-
теоретическую оценку времени вычислений, но различную эмпирическую
эффективность.
Первый способ вычисления цепной дроби (V3) состоит в вычис-
вычислении каждого дополнительного неполного частного с помощью
правила Коши, как описано в разд. 7.3.4. Однако, в основном
из-за правила Коши, этот подход неэффективен, в чем можно
убедиться, взглянув на табл. 7.6.2 в разд. 7.6. Фактически он да-
даже медленнее метода бисекций, метода, хорошо известного своей
неэффективностью.
Второй способ вычисления цепной дроби (V3) — воспользовать-
воспользоваться преимуществами специальных свойств полиномов, с которыми
Аппроксимация вещественные корней 501
мы имеем дело. Эти полиномы специфичны в том смысле, что
они имеют одну перемену знаков (и, следовательно, только один
положительный корень) и, значит пересекают ось х только один
раз. Поэтому целая часть положительного корня (являющаяся
следующим неполным частным а,) может быть вычислена последо-
последовательным делением пополам (и вычислением значения в средних
точках) интервала @,6), где 6 — легко вычислимая верхняя гра-
граница значения единственного корня; см. табл. 7.6.2 в разд. 7.6.
Вычислить эту верхнюю границу Ь нам поможет следующая
Теорема 7.5.1. Пусть р(х) = спхп + - ¦ - + cr+ixr+1-crxr с0 =
0 — полиномиальное уравнение степени п с только одной переменой
знаков в последовательности своих целых коэффициентов. Тогда
(CF2)
— верхняя граница значения его (единственного) положительного
корня.
Доказательство. Лля любой степени т переменной х мы имеем
*- = (*- IX*"-1 + хт~2 + ¦ ¦ ¦ + х + 1) + 1.
В выражении полинома р{х) мы подставляем это соотношение в
каждый член с положительным коэффициентом и получаем
р(х) = сп(х - I)*» + сп(х - 1)х"-2 +с„(х - 1) хп-3 + • ¦ • + с„
+сп_1{х - 1)хп-2+сп_1(а: - 1) хп~3 +... + Cn_x
-сгх' с0.
Рассмотрим последовательные вертикальные столбцы, в которых
нет отрицательных коэффициентов. Значение каждого такого
столбца положительно при условии, что х > 1. Чтобы гаранти-
гарантировать положительные значения последних столбцов, в которых
встречается отрицательный коэффициент, мы должны иметь
(<:„+<:„_! + • • • + Cr+i)(x - 1) > а
для 0 ^ j ^ г, и это доказывает теорему.
?
502
Отделение и аппроксимация корней
Реализация этой теоремы значительно проще, чем правила
Коши, и мы предлагаем читателю в качестве упражнения показать,
что вычисления могут быть выполнены за время
(CF3)
Ниже мы предполагаем существование процедуры А7.5.1, которая,
пользуясь теоремой 7.5.1 и методом бисекций, вычисляет целую
часть а,- единственного положительного корня уравнения р(х) = 0
за время
i[p(*)] = 0{n2L3[\P{x)U) {СТА)
(см. упражнения по программированию для этого раздела).
APPROX-CF. Аппроксимация вещественного корня уравнения
с использованием цепных дробей (Approximate a Real Root of an
Equation Using Continued Fractions)
Вход: Предел аппроксимации e, являющийся рациональным
числом, и уравнение рм(я) = 0 с полиномом М(х), из которо-
которого получаем изолирующий интервал для корня; рм(я) = 0 —
полиномиальное уравнение степени п с одной переменой зна-
знаков в последовательности его целых коэффициентов, полу-
полученное из исходного уравнения р{х) — 0 после подстановки
х := М(х) = {а\Х + ао)/(Ь\Х + bo) для некоторых определен-
определенных значений ао, а\, bo, Ь%. Мы хотим аппроксимировать с
точностью е корень уравнения р(х) = 0, расположенный в от-
открытом интервале с неупорядоченными концевыми точками
ai/bi и aQ/b0. Очевидно, что |«i/6i — ao/6o| ^ ?, потому что
иначе нам нечего делать.
Выход: Изолирующий интервал того корня уравнения р(х) =
0, который находится в открытом интервале с концевыми
точками ег и е2, где теперь \ег — е2| ^ ?, или точное значение
корня уравнения р(х) = 0; е\ и е2 — два рациональных числа.
1а. [Инициализация] Положить pw(x) := рм(х), Мш(я:) := М(х).
1Ь. [Уточнение цепной дроби] Пользуясь А7.5.1, вычислить а,- —
целую часть положительного корня уравнения pw{x) = 0.
Если а,- = 0, то перейти к шагу 5.
2. [х := а,- + х, а,- > 0] Модифицировать pw{x) := рш(а.- + х) и
Mw(x):=Mw(ai + x).
3. [Корень?] Если pw@) - 0, то положить е\ := с2 := ао/Ьо, где ао
и 6о получены из Mw(x), вернуть замкнутый интервал [ei,e2]
Аппроксимация вещественных корней
503
и закончить работу. (Положительный корень, который мы
пытались аппроксимировать, рациональное число.)
4. [Готово?] Если \а\/Ьх - ао/Ь0\ ^ е, то вернуть открытый ин-
интервал с неупорядоченными концевыми точками ег := ax/bi и
е2 := ао/Ьо, где ао, а\,Ьатл 6Х получены из М„,(х), и закончить
работу. [Этот интервал аппроксимирует корень полинома
р(х) с заданной точностью.]
5. [х := 1/х] Положить pw(x) := pw(l/x), Mw(x) := M№(l/i) и
перейти к шагу 1Ь.
Анализ времени работы алгоритма APPROX-CF. Отметим,
что время выполнения всего алгоритма доминируется временами
выполнения шагов 1 и 2.
Для первой итерации алгоритма мы имеем следующее:
Шаг 1 выполняется за время 0{rj2L3[|pM(i;)|0O]} (см. упражнения
по программированию для этого раздела).
Шаг 2 выполняется за время 0{п312(а{) + n2L(ai)L[\pu(x)\oo]},
что является временем выполнения подстановки pw(x) := pw(a{ + x)
[и включает в себя подстановку Mw(x) := Мш(а,+х)]. Комбинируя
это выражение с тем, что а< = О[|рм(*)|оо] Для всех t [см. (А2)],
мы получаем О{п312[|рм(х)|0О]}, что ограничивается величиной
О{п313[|рм(*)|оо]}.
(CF5)
Сравнивая время вычислений для правила Коши (разд. 7.2.3),
(CF3) и (CF4) с (CF5), мы видим, что (CF5) доминирует над
временем вычислений шагов 1 и 2.
Лля последующих итераций алгоритма (CF5) снова доминирует
над временем вычисления шагов 1 и 2, поскольку для любого
последующего pw(x) мы имеем \pw(x)|те ~ |рм(аг)|те (теорема7.3.13).
Чтобы найти число итераций »", необходимых для аппроксима-
аппроксимации корня с точностью е, воспользуемся соотношением (CF1), т.е.
соотношением 1/д? ^ е, и следующими фактами:
i. qi ^ Fi, где F{ есть t-й элемент последовательности Фибонач-
Фибоначчи.
ii. Fi = фг/у/Ъ (округленное до ближайшего целого), где ф =
1.618... .
Очевидно, из (CF1) следует Ь/ф* ^ е, откуда мы получаем
(CF6)
504 Отделение и аппроксимация корней
Перемножал (CF5) и (CF6), получаем
Upprox-cf[pm(*).M(*M = О
Пример. Аппроксимируем с точностью г = 0.01 положительный
корень уравнения р(х) = х3 - 7х + 7, изолирующий интервал ко-
которого есть A,3/2). Нам даны полином ри(х) = х3 + 2х2 — х — 1 и
рациональная функция М(х) = (х + 3)/(х + 2), с помощью которой
мы получили изолирующий интервал; как рм(х), т*к и М(х) были
вычислены в примере разд. 7.3.4.
Применяя APPROX-CF, получаем следующие результаты:
Шаг 1а. Полагаемpw(x) := х3+2х2 — х-1 и Mw(«) := (х+3)/(х+2).
Шаг lb. Применение алгоритма А7.5.1 дает а,- = 0, и мы
переходим к шагу 5.
Шаг 5. Здесь мы вычисляем новые полиномы pw (x) = х3+х2—2х —1
и lAw(x) = (Зх + 1)/Bх + 1) и переходим к шагу lb.
Шаг lb. Применяя А7.5.1, получаем а, = 1.
Шаг 2. На этом шаге мы модифицируем полиномы p«,(x) :=
pw(l + x) = х3+4х2+Зя-1 иМ„,(х) := М„,A+х) = (Зх+4)Bх+3).
Шаг 3. Очевидно, что p«/@) ф 0.
Шаг 4. |3/2 - 4/3| = 0.169.
Шаг 5. Здесь мы вычисляем новые значения pw (х) = х3—Зх2—4х —1
и М„, (ж) = Dх + 3)/Cх + 2) и переходим к шагу lb.
Шаг lb. Применяя А7.5.1, получаем ai = 4.
Шаг 2. На этом шаге мы модифицируем pw(x) — pwD + x) =
х3 + 9х2 + 20х - 1 и М„,(х) := М„,D + х) = Dх + 19)/(Зх + 14).
Шаг 3. Очевидно, что р«/@) ф 0.
Шаг 4. |19/14 - 4/3| = 0.0238.
Шаг 5. Здесь мы вычисляем новые значения pw(x) — х3 — 20г2 —
9ж — 1 и М„,(х) = A9х + 4)/A4х + 3) и переходим к шагу lb.
Шаг lb. Применяя А7.5.1, получаем а{ = 20.
Шаг 2. На этом шаге мы модифицируем pw(x) := р„,B0 + х) = х3 +
40х2 + 391х-181иМи)(х):=Ми)B0+х) = A
Шаг 3. Очевидно, что рш@) ф 0.
Шаг 4. |19/14 - 384/283| = 0.00025 < е,
и мы завершаем вычисления.
Сравненье двух методов аппроксимации корней 505
Выражая в десятичном виде концевые точки последнего изоли-
изолирующего интервала, мы получаем 384/283 = 1.3568904 и 19/14 =
1.3571428 (см. также упражнения по программированию для
разд. 7.5.1). Поэтому с точностью z = 0.01 приближенное зна-
значение корня равно 1.35.
Эмпирическое сравнение двух методов аппроксимации ве-
вещественных корней
В этом разделе мы даем несколько таблиц, сравнивающих ме-
методы бисекций и цепных дробей для аппроксимации вещественных
корней полиномиального уравнения. Мы сравниваем как теоре-
теоретические аспекты, так и фактические времена вычисления для
полиномов Чебышёва.
Таблица 7.6.1
Сравнение числа неполных частных
и бисекций, необходимых для
получения требуемой точности
т
1
5
10
15
20
25
30
35
40
Бисекций
1/2"»
0.5
0.03125
9.7 х 10~4
3.1 х 10~5
9.5 х Ю-7
1.9 х 10~8
9.3 х ИГ10
1.5x10-"
2.3 х 103
Цепные дроби
1
0
3.3 х Ю-4
2.7 х 10
2.2 х 10"8
1.7 х Ю-10
1.4 х 10~12
3.1 х 10~14
9.5 х 107
Прежде всего определим число бисекций и неполных частных
соответственно, необходимых для каждого рассматриваемого ме-
метода, чтобы аппроксимировать корень с заданной точностью. И
506
Отделение и аппроксимация корней
предположении, что исходный полином имеет только один поло-
положительный корень, мы можем взять @, оо) как исходный интервал
для метода бисекций. Кроме того, для метода цепных дробей мы
предполагаем худший из возможных случаев, т.е. каждое неполное
частное равно 1; в этом случае мы имеем qm = Fm, где Fm есть m-й
элемент последовательности Фибоначчи. Из табл. 7.6.1 видно, что
при сделанных предположениях для аппроксимации корня с одной
и той же точностью бисекций требуется больше, чем вычислений
неполных частных.
Таблица 7.6.2
Времена вычислений (в секундах) аппроксимации всех
вещественных корней полиномов Чебышёва (е = 10~15)
Сте-
Степень
2
3
4
5
6
7
8
9
10
Бисек-
Бисекций
17.2
17.9
42.3
45.8
83.1
90.9
146.3
170.6
243.2
Метод цепных дробей
Правило
Коши
11.5
10.3
38.7
40.0
99.8
105.1
277.8
257.6
524.3
Теорема 7.5.1
с бисекциями
6.7
4.9
15.7
16.4
46.2
44.6
93.0
106.2
202.8
Предоб-
Предобработка
5.4
3.8
10.3
10.8
29.2
27.0
50.2
60.2
116.2
В табл. 7.6.2 показаны времена вычислений, требующиеся для
аппроксимации (е = 10~15) вещественных корней полиномов Чебы-
Чебышёва с использованием методов бисекций и цепных дробей. Все
времена даны в секундах. Мы сравниваем три версии метода цеп-
цепных дробей: версии, которые используют A) правило Коши, B)
теорему 7.5.1 с бисекциями и C) предварительную обработку. В
версии C) мы предполагаем, что список неполных частных задает-
задается как входной. Таким образом, мы не тратим время на вычисление
функций floor. (Результаты версии 3 отражают оптимальное вре-
время аппроксимации вещественного корня с использованием метода
цепных дробей.) Различие между версиями, использующими тео-
Сравнение двух методов аппроксимации корней 507
Таблица 7.О
Аппроксимации вещественных корнгй полиномов Чебышёва
степеней 2 10 (с = 105)
Сте-
Степень
Список неполных частных для
отделения
г>
о
@;1,1)
@;2)
@; 1,1,1)
@;1,2)
@; 1,2,1)
@;1,3)
@;2)
@; 1,3,1)
@;1,4)
@;2)
@; 1,1,3,1)
@;1,1,4)
@; 1,1,1)
@;2)
аппроксимации
@;1,2, % 2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2)
@; 1,6,2,6,2,6,2, в, 2,6,
2,6,2,6,2)
A1,7,3,2,1,1,1,1,20,5,
3,11,1,7)
@,1,1,1,1,2,2,4,3,1,
19,6,8,3,2,9)
A,2,1,6,1,56,1,54,1,1,
1,10,1,16)
A7,2,3,6,5,1,1,1,3,2,
1,25,2,2,1,1)
A,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2)
B5,2,1,7,21,1,8,1,3,
10,1,2,3)
A,1,6,2,1,30,5,2,9,3,
1,10,5,5)
@,1,2,2,24,2,3,2,2,2,
2,2,8,1,8,1)
C4,1,7,1,2,3,1,1,2,3,
1,132,2,3)
@,3,3,1,1,3,1,29,1,3,
1,18,16,1,1,2)
@,14,14,17,1,1,10,2,
1,2,18,1)
D6,23,43,8,1,2,1,3,1,
15)
B,1,840,2,1,4,1,3,21,
1,17)
C,7,1,17,1,13,3,2,7,
1,1,8,1,1,1,40)
Изолирующие
интервалы
0.70710678118654683338
0.70710678118654764296
0.86602540378443847925
0.86602540378443865879
0.92387953251128634045
0.92387953251128676332
0.38268343236508971655
0.38268343236509064218
0.58778525229247311679
0.58778525229247338805
0.95105651629515309991
0.95105651629515359558
0.70710678118654683338
0.70710678118654764296
0.96592582628906811211
0.96592582628906894040
0.25881904510252075804
0.25881904510252080914
0.78183148246802977984
0.78183148246803000835
0.97492791218182315610
0.97492791218182365484
0.43388373911755805748
0.43388373911755880719
0.83146961230254518379
0.83146961230254537502
0.98078528040322959629
0.98078528040323045751
0.55557023301960177859
0.55557023301960224274
0.19509032201612826749
0.19509032201612828909
508 Отделение и аппроксимация корней
Таблица 7.6.3 (продолжение)
Сте-
Степень
10
Список неполных частных для
отделения
(ОН, 1,5,1}
@;1,1,6)
@; 1,1,1)
@;2)
@; 1,2,6,1,1)
@; 1,2,6,2)
@; 1,2,6,1)
@; 1,2,7)
@; 1,2,1)
аппроксимации
A,6,2,6,2,6,2,6,2767
2,6,2)
E7,1,4,1,1,1,6,1,1,
6,10,1,1,3,1,1,2,6)
Г0,3,1,72,1,1,2,3,1,
1,3,14,1,1,1,16,1)
@,1,12,8,17,1,1,2,1,
1,1,49,1,20,3)
C,1,14,13,1,1,10,1,
72,23,1)
C,2,1,1,4,1,2,2,1,
35,1,2,4,1,3,4,65)
D,1,2,1,1,3,1,12,5,
19,11,1,1)
G1,4,2,7,3,1,1,42,1,
12,18)
[1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2)
Изолирующие
интервалы
0.866025^ 7
0.86602540378443865879
0.98480775301220799222
0.98480775301220806644
0.64278760968653925445
0.64278760968653933737
0.34203014332566870745
0.34203014332566873472
0.45399049973954674160
0.45399049973954687273
0.15643446504023080945
0.15643446504023086913
0.89100652418836719434
0.89100652418836801487
0.98768834059513772582
0.98768834059513783641
0.70710678118654683338
0.70710678118654764296
рему 7.5.1 с бисекциями и предварительную обработку, отражает
время, затрачиваемое на вычисление функций floor. Мы напоми-
напоминаем читателю, что для того, чтобы получить функцию floor для
некоторого корня, нужно несколько раз применить правило Коши.
Эти результаты показывают, что версия, использующая теоре-
теорему 7.5.1 с бисекциями, существенно лучше версии, использующей
правило Коши. С другой стороны, сравнивая ее с результатами
версии, использующей предварительную обработку, мы замечаем,
что еще имеется место для усовершенствования.
В качестве иллюстрации алгоритма аппроксимации в табл. 7.6.3
мы приводим список неполных частных с аппроксимирующими
интервалами для каждого корня полиномов Чебышёва степеней
2-10 (с = 10~15). Поскольку полиномы Чебышёва симметричны,
мы рассматриваем только положительные корни. Лля полиномов
нечетной степени мы опускаем корень х = 0.
Упражнения 509
Отметим, что последняя цифра в списке отделений (неполных
частных) и первая цифра в списке аппроксимаций (неполных
частных) составляют одно и то же неполное частное.
Упражнения
Раздел 7.2.1
1. Покажите лемму 7.2.2.
2. Вычислите верхнюю границу числа вещественных корней
следующих полиномиальных уравнений в интервале (—2,4):
a. р(ж) = х3 - За: + 1 = 0;
b. р(х) = х4 - 4х3 + х1 + 6* + 2 = 0;
c. р(х) = 20z5 + 5х* - 20х2 - 10* + 2 = 0.
Раздел 7.2.2
1. Закончите пример, предшестнующий алгоритму STURM.
2. Пользуясь методом Штурма, отделите вещественные корни
полиномиальных уравнений и интервале (—2,4):
a. р{х) = х3 - Зх + 1 = 0;
b. р(х) = х4 - Ах3 + х1 + «* + 2 = 0;
c. р(х) = 20а;5 + 5х4 - 20ar'J - 10ж + 2 = 0.
Раздел 7.2.3
1. Закончите пример этого рп:<л<'ла.
2. Докажите, что верхняя граница абсолютных значений
корней уравненияр(х) = спхп+ сп„\хп~1-\ \-со = 0, с,- 6 Z,
равна
6 = 2 max IcVcl1/*. (C4)
3. Используя (С), (С4) и алгоритм BPR, вычислите и срав-
сравните верхние границы положительных, отрицательных и
абсолютных значений кормой полиномиальных уравнений:
a. р(х) = х3 - Зх + 1 = 0;
b. р(х) = х4-4х3 +х7 + «Л 2 = 0;
c. р(х) = 20х5 + Ьх* -
510 Отделение и аппроксимация корней
Раздел 7.2.4
1. Вычислите наименьшее расстояние между любыми двумя
корнями полиномиальных уравнений:
a. р(х) = х3 - Зх + 1 = 0;
b. р(х) = ж4 - 4х3 + х2 + 6х + 2 = 0;
c. р{х) = 20х5 + 5х4 - 20ж2 - Юх + 2 = 0.
Раздел 7.3.2
1. Покажите, что подстановка х := а + 1/х эквивалентна
обобщенному сдвигу длины а, сопровождаемому инверсией.
Раздел 7.3.4
1. Сможете ли вы объяснить на основании теоремы 7.3.9, по-
почему мы должны, использовать правило Коши? Что станет
с методом цепных дробей 1978 г., если мы будем использо-
использовать нижнюю границу абсолютных значений корней?
2. Что происходит с комплексными корнями полинома р(х),
когда мы применяем метод цепных дробей 1978 г.? Сфор-
Сформулируйте предложение, аналогичное лемме 7.3.11.
3. Пользуясь методом цепных дробей 1978 г., отделите вещес-
вещественные корни полиномиальных уравнений:
a. р(х) = х3 - Зх + 1 = 0;
b. р(х) = х4 - 4х3 + х2 + 6х + 2 = 0;
c. р(х) = 20х5 + 5х4 - 20х2 - Юх + 2 = 0.
4. Перепишите алгоритм ACF1978 в «структурном» виде на
языке программирования по своему выбору.
Раздел 7.5.1
1. Используя описанный выше метод бисекций, аппроксими-
аппроксимируйте с точностью z = 0.01 второй положительный корень
уравнения х3 —7х + 7 = 0, изолирующий интервал которого
есть C/2,2).
2. Используя описанный выше метод бисекций, аппроксими-
аппроксимируйте с точностью е = 0.01 вещественные корни следующих
полиномиальных уравнений (их изолирующие интервалы
были получены в упражнениях к разд. 7.2.2 и/или 7.3.4.):
a. р(х) = х3 - Зх + 1 = 0;
b. р(х) = х4 - 4х3 + х2 + 6х + 2 = 0;
c. р(х) = 20х5 + 5х4 - 20х2 - Юх + 2 = 0.
Упражнения по программированию 511
Раздел 7.5.2
1. Используя описанный выше метод цепных дробей, аппрок-
аппроксимируйте с точностью е = 0.01 второй положительный
корень уравнения х3 - 7х -I- 7 = 0, изолирующий интер-
интервал которого есть C/2,2). Как мы видели в примере к
разд. 7.3.4, этот изолирующий интервал был получен из
рм(х) = х3 + х2 - 2х - 1 и М(х) = Bх + 3)/(х + 2).
2. Используя описанный выше метод цепных дробей, ап-
аппроксимируйте с точностью е = 0.01 вещественные корни
следующих полиномиальных уравнений (их изолирующие
интервалы были получены в упражнениях к разд. 7.3.4.):
a. р(х) = х3 - Зх + 1 = 0;
b. р(х) = х4 - 4х3 + х2 + 6ж + 2 = 0;
c. р(х) = 20х5 + 5х4 - 20х2 - Юх + 2 = 0.
Упражнения по программированию
Раздел 7.2.3
1. Реализуйте процедуры для
a. вычисления [Iog2 |i|J для любого целого i ф 0 за время
О[Щ\)];
b. вычисления 2* для неотрицательного целого к за
время O(|Jfc| + 1);
c. вычисления [|»'|/2fc] для любых целых i и ifc, положи-
положительных или отрицательных, за время O[i(|t|) + |Jfc|].
Раздол 7.5.1
1. Реализуйте процедуру перевода рационального числа в
десятичное представление. Число цифр, которые требу-
требуется получить в десятичном представлении, должно быть
параметром; цифры должны получаться по одной. Эта
процедура может тогда использоваться, чтобы выражать
в десятичном виде рациональные концевые точки изолиру-
изолирующего интервала корня.
512 Отделение и аппроксимация корней
Раздел 7.5.2
!• а. Реализуйте процедуру для реализации теоремы 7.5.1
за время
b. Реализуйте процедуру А7.5.1, которая, пользуясь
теоремой 7.5.1 и делением пополам, вычисляет целую
часть единственного положительного корня уравнения
р(х) = 0 за время
Исторические замечания и литература
1а. Мы подробно рассмотрели только методы, разработанные
Штурмом и автором, потому что только они могут рассматривать-
рассматриваться как классические, поскольку базируются на двух очень старых
и связанных между собой теоремах. Существуют еще два метода
отделения вещественных корней: (i) при помощи дифференцирова-
дифференцирования, метод, основанный на теореме Ролля [см. статьи Коллинза и
Лооса (Collins, Loos, 1976, 1982)], и (ii) метод Коллинза-Акритаса,
который базируется на полной модификации теоремы Винсента.
Однако оба этих метода не представляют сколько-нибудь значи-
значительного интереса, поскольку они основаны на процедуре бисекции
(так же, как метод Штурма), теоретическая и практическая эффек-
эффективность которых ниже, чем у авторского метода цепных дробей
1978 г.
1Ь. Авторский метод цепных дробей 1978 г. получил первую
премию на конкурсе студенческих работ, когда он был впервые
представлен на 16-ю ежегодную юго-восточную региональную
конференцию АСМ в Атланте, Джорждия (апрель 1978).
1с. Метод Коллинза-Акритаса был разработан немедленно
после того, как Акритасом была обнаружена в 1975-1976 гг.
теорема Винсента, и описан в статьях Коллинза и Акритаса
(Collins, Akritas, 1976), Коллинза и Лооса (Collins, Loos, 1982) и
Коллинза [в (Шее, 1977)] под названием «модифицированный метод
Исторические замечания и литература 513
Успенского». Относительно втого пункта см. статью Акритаса
1986 г. и историческое замечание 7.
2. В книге (Obreschkoff, 1963), с. 61 87, имеются другие доказа-
доказательства теоремы Фурье, принадлежащие Гурвицу и Лагерру, а
также ее обобщение, принадлежащее Обрешкову.
3. Хайндель получил другую оценку для метода Штурма; а
именно, он показал, что еслир(х) = 0 —полиномиальное уравнение
с целыми коэффициентами от одной неизвестной степени п > 0 без
кратных корней, то время вычислений в методе Штурма — это
Кроме того, вместо отделения сначала положительных, а затем
отрицательных корней, как первоначально предложил Штурм,
Хайндель вычисляет верхнюю границу Ь абсолютных значений
корней, так что все они находятся в интервале (—Ь,Ь); этот
интервал затем делится на части.
4. Правило Коши, несмотря на ого значимость, не слишком
хорошо известно; мы нашли его формулировку только в книге
(Obreschkoff, 1963), с. 50-51. Кроме того, Ван дер Слюс (van der
Sluis) доказал теорему (теорема 2.7), из которой можно заключить,
что правило Коши — наилучшее.
5. Теорема Винсента не упоминалась какими-либо авторами,
за исключением Обрешкова (Obreschkoff, 1963) и Успенского (Us-
pensky, 1948). Автор обнаружил ее в 1975-1976 гг., пересматривая
методы отделения вещественных корней уравнений, представлен-
представленные Успенским. Имеется также следующее обобщение теоремы
Винсента [см. статью (Chen, 1987)]. Теорема Ванга A960 г.): Пусть
р(х) = 0 — полиномиальное уравнение с целыми коэффициентами
степени п ^ 3, и предположим, что оно имеет не менее двух перемен
знаков в последовательности своих коэффициентов; кроме того,
пусть Д > 0 — наименьшее расстояние между любыми двумя из
его корней. Пусть т' — наименьший положительный индекс, та-
такой, что F^li_1 > l/A, где Fk есть Jk-й элемент последовательности
Фибоначчи 1,1,2,3,5,8,13,21,..., и пусть т" — наименьшее поло-
положительное целое, такое, что т" > 1 + (log^n~|/2. Бели положить
33—27-1
514 Отделение и аппроксимация корней
т = т' + го", то произвольная подстановка цепной дроби
1
х := о: + ;
1
ат + -
с неотрицательным целым е^ и положительными целыми а2,..., ат
преобразует р(х) = 0 в уравнение ри(у) = 0, имеющее г перемен
знаков в последовательности своих коэффициентов. Если г = О,
то в интервале 1т с (неупорядоченными) концевыми точками
Рт/9т, Pm-\/<lm-i [полученном из (V13)] нет корней полинома
р(х). Если г > 0, то уравнение р(х) = 0 имеет единственный
положительный вещественный корень кратности г в интервале 1т.
Несмотря на теоретический интерес, эмпирические результаты
показывают, что реализация теоремы Ванта работает плохо, и,
следовательно, она не представляет практического интереса для
отделения кратных корней полиномиальных уравнений; вместо
этого следует пользоваться теоремой Винсента в комбинации с
разложением на свободные от квадратов множители.
6. Успенский (Uspensky, 1948, р. 298-304) расширил теорему
Винсента, чтобы получать верхнюю границу числа подстановок,
которые нужно выполнить. Его работа, однако, содержит опреде-
определенные ошибки в формулировке и доказательстве, которые были
исправлены автором (Akritas, 1978b). В этом тексте мы даем пра-
правильную версию расширения теоремы Винсента; для полноты мы
также добавляем ее доказательство, которое гораздо короче дока-
доказательства Успенского благодаря тому, что мы используем лемму
7.3.7; см. также статьи (Akritas, 1981a) и (Akritas, Danielopoulos,
1985).
7а. В статьях Коллинза и Акритаса (Collins, Akritas, 1976b),
Коллинза и Лооса (Collins, Loos, 1982) и Коллинза [в (Rice, 1977)]
(экспоненциальный) метод Винсента цепных дробей 1836 г. ошибоч-
ошибочно приписывался Успенскому, вследствие чего метод Коллинза-
Акритаса появился под названием «модифицированный1 метод Ус-
Успенского»; это случилось, вероятно, из-за утверждения Успенско-
Успенского (в предисловии к его книге), что он сам изобрел этот метод.
Однако, как было подчеркнуто в работах Акритаса (Akritas, 1978a,
р. 85-86, 1981а, и 1986), Успенский, собственно, взял метод Вин-
Винсента и удвоил его время вычислений, потому что не был знаком с
Исторические тмгнани» и литература 515
теоремой Бюдана; а именно, поел* нодп кнопки х := 1 + х, приме-
примененной к некоторому уравнению Ри(г) = 0, Успенский должен был
выполнять подстановку х := 1/A •+ *), чтобы удостовериться, что
Ри(х) = 0 не имеет корней в интернате @,1). (Винсент, естественно,
получает эту информацию, пользу но. теоремой Бюдана.)
Что можно рассматривать как иклпд Успенского — это только
то, что для выполнения подстановки иида х := а,- + х он исполь-
использовал метод Руффини-Горнера. Нинсент, напротив, пользовался
теоремой о разложении Тейлора.
7Ь. Теорема о разложении Тейлора довольно утомительна
для вычислений вручную, но она лапала доступную в то время
«технологию». Статья Горнера появились в 1819 г., но Винсент,
очевидно, не знал об этом; также и Гориер не сознавал того, что
его опередил Руффини в 1804 г. (Citjori, 1911). В любом случае
Акритас и Даниелопулос (Akritaa, Danielopoulos, 1980) показали,
что и теорема о разложении Тейлорп, и метод Руффини-Горнера
имеют примерно равные времена вычислений.
8. Штурм в своей статье 1835 г. представил решение проблемы,
связанной с методом Лагранжа, а именно, когда число корней
между двумя последовательными целыми числами больше одного.
Штурм фактически использует как последовательность Штурма,
так и теорему Винсента, чтобы отделить и аппроксимировать
корни с любой точностью. Подробное об этом написано на с.
292-297 и 299-305 статьи Штурма, 1К.'1Г> г.
9. Это находится в полном соотиетстпии с замечанием Винсента
в его статье 1836 г., с. 352-353: «I'otir approcher davantagc dc la
valeur de cette racine, nous pourrioiiN continuer le calcul en suivant
toujours la meme marche; et nous eerioim surs de n'avoir, dans tout.es les
transformees subsequentes, qu'une ecnlo variation, et par consequent une
seule racine positive, laquelle, de pi ни, wrait toujours necesearernent plus
grande que l'unite.» («Чтобы лучше аппроксимировать значение
этого корня, мы можем продолжать вычисления, придерживаясь
все время той же процедуры; и мы мижсм быть уверены, что по всех
последующих преобразованных уравнениях имеется только одна
перемена знаков, а следовательно, только один положительный
корень, который, более того, обн.чательно всегда будет больше
единицы».)
10. Сам Винсент не следует «тому подходу, потому что в своей
статье (с. 353) он утверждает: «la reduction en fraction continue
ne croissant que tres lentement, changeons maintenant iiotre marche»
33*
516 Отделение и аппроксимация корней
(«поскольку разложение в цепную дробь осуществляется очень
медленно, давайте изменим теперь нашу процедуру»).
Abel N.H. Beweis der Unmoeglichkeit algebraische Gleichungen von
hoeheren Graden als den vierten allgemein aufzuloesen. Journal fur
die reine und angewandte Mathematik 1, 65-84, 1826.
Akritas A.G. Vincent's theorem in algebraic manipulation. Ph.D.Thesis,
Operations Research Program, North Carolina State University,
Raleigh, North Carolina, 1978a.
Akritas A.G. A correction on a theorem by Uspensky. Bulletin of the
Gkeek Mathematical Society 19, 278-285, 1978b.
Akritas A.G. The fastest exact algorithms for the isolation of the real
roots of a polynomial equation. Computing 24, 219-313, 1980a.
Akritas A.G. An implementation of Vincent's theorem. Numerische
Mathematik 36, 53-62, 1980.
Akritas A.G. Vincent's forgotten theorem, its extension and applica-
application. International Journal of Computers and Mathematics with
Applications 7, 309-317, 1981.
Akritas A.G. Exact algorithms for the implementation of Cauchy's rule.
International Journal of Computer Mathematics 9, 323-333, 1981.
Akritas A.G. Reflections on a pair of theorems by Budan and Fourier.
Mathematics Magazine 55, 292-298, 1982.
Akritas A.G. There is no «Uspensky's method». Extended Abstract.
Proceedings of the 1986 Symposium on Symbolic and Algebraic
Computation, (Waterloo, Ontario, Canada), 1986, pp. 88-90.
Akritas A.G., Danielopoulos S.D. On the forgotten theorem of Mr.
Vincent. Historia Mathematica 5, 427-435, 1978.
Akritas A.G., Danielopoulos S.D. On the complexity of algorithms for
the translation of polynomials. Computing 24, 51-60, 1980.
Akritas A.G., Danielopoulos S.D. A converse rule of signs for polynomials.
Computing 34, 283-286, 1985.
Akritas A.G., Ng K.H. Exact algorithms for polynomial real root approx-
approximation using continued fractions. Computing 30, 63-76, 1983.
Bocher M. The published and unpublished work of Charles Sturm
on algebraic and differential equations. Bulletin of the American
Mathematical Society 18, 1-18, 1911-12.
Burnside W.S., Panton A.W. The theory of equations, Vol. 1, 2nd ed.,
Dover, New York, 1960.
Исторические ,тmi чинил и литература 517
Cajori F. Homer's method of approxliiiitlinn anticipated by Ruffini.
American Mathematical Society Hullrlm 17, 409-414, 1911.
Cajori F. A history of the arithmetic nl methods of approximation to
the roots of numerical equation* of one unknown quantity. Colorado
College Publications, General Srnr» No 51, Science Series Vol. XII,
No. 7, pp. 171-287, Colorado Spring*, Colorado, 1910.
Cantor D.G., Galyean P.H., Zimmer II <• Л continued fraction algorithm
for real algebraic numbers. Malhrvtnln и of Computation 26, 785-791,
1972.
Chen J. A new algorithm for the isolation of the real roots of polynomial
equations. Second International (.onfrrence on Computers and
Applications (Beijing, People's Republic of China), 714-719, 1987.
Collins G.E., Akritas A.G. Polynomial reiil root isolation using Descartes'
rule of signs. Proceedings of the 1976 ACM Symposium on Symbolic
and Algebraic Computation, Yorktown Heights, NY, 1976, pp. 272-
275.
Collins G.E., Loos R. Polynomial renl root isolation by differentiation.
Proceedings of the 1976 ACM Symposium on Symbolic and Algebraic
Computation, Yorktown Heights, NY, 1976, pp. 15-20.
Collins G.E., Loos R. Real zeros of polynomials. In Computer Algebra
symbolic and algebraic computation». I). Buchberger, G.E. Collins,
and R. Loos, eds, Springer Verlag, Nr-w York, Computing Supplement
4, 83-94, 1982.
Dickson L.E. First course in the thtory of equations. Wiley, New York,
1922.
Ileindel L.E. Integer arithmetic algorithms for polynomial real zero
determination. Journal of the ACM 18, 533-548, 1971.
Hurwitz A. Ueber den Satz von Budan-Fourier. Mathematische Annalen
71, 584-591, 1912.
Lagrange J.L. Traite de la resolution des equations numeriques. Paris,
(n.p.) 1798.
Lloyd E.K. On the forgotten Mr. Vincent. Historia Mathematica 6,
448-450, 1979.
Mahler K. An inequality for the discriminant of a polynomial. Michigan
Mathematical Journal 11, 257-262, 1964.
Marcus M., Mine H. Introduction to linear algebra. MacMillan, New
York, 1965.
518 Отделение и аппроксимация корней
Mignotte M. Sur la complexite de certains algorithms ou intervient la
separation des racines d'un polynome. Revue Francaise d'Automatique,
Informatique et Recherce Operationnelle (RAIRO) 10, 51-55, 1976.
Mignotte M., Payafar M. Distance entre les racines d'un polynome.
RAIRO-Analyse Numerique 13, 181-192, 1979.
Ng K.H. Polynomial real root approximation using continued fractions.
M.S. Research Report, University of Kansas, Department of Computer
Science, Lawrence, KS, 1980.
Nordgaard M.A. A historical survey of algebraic methods of approximating
the roots of numerical higher equations up to the year 1819. Teachers
College, Columbia University, New York, 1922.
Obreschkoff N. Verieilung und Berechnung der Nullstellen reeller Poly-
Polynome. VEB Deutscher Verlag der Wissenschaften, Berlin, 1963.
Poggendorff J.C. Biographisch-Literarisches Handwoerterbuch zur Ge-
schichte der exacten Wissenschaften. J.A. Barth, Leipzig, 1863.
Rice J. Mathematical software III. Academic Press, New York, 1977, pp.
35-68.
Ruffini P. Sopra la determinazione delle radici nelle equazioni numeriche
di qualunque grado.... Societa Italiana delle Scienze, 1804.
Rump S.M. Polynomial minimum root separation. Mathematics of
Computation 33, 327-336, 1979.
Specht W. Abschaetzungen der Wurzeln algebraischer Gleichungen.
Mathematische Zeitschrifl 52, 310-321, 1949.
Sturm C. Memoire sur la resolution des equations numeriques. Memoires
des Savants Eirangers 6, 271-318, 1835.
Todhunter I. Theory of equations. MacMillan, London, 1882.
Turnbull H.W. Theory of equations. 5th ed. Oliver & Boyd, Edinburgh
and London, 1957.
Uspensky J.V. Theory of equations. McGraw-Hill, New York, 1948.
van der Sluis A. Upperbounds for roots of polynomials. Numerische
Maihematik 15, 250-262, 1970.
van der Waerden B.L. Erwachende Wissenschaft. Birkhaeuser Verlag,
Basel and Stuttgart, 1956.
Verbaeten P. Computing real zeros of polynomials with SAC-1. ACM-
SIGSAM Bulletin 9, 8-10, 1975.
Vincent A.J.H. Sur la resolution des equations numeriques. Journal de
Mathematiques Pures et Appliquees 1, 341-372, 1836.
Weisner L. Introduction to the theory of equations. MacMillan, New
York, 1938.
ПРИЛОЖЕНИЕ
ЛИНЕЙНАЯ АЛГЕБРА
В этом разделе дан краткий пГмнр тех аспектов линейной
алгебры, которые существенны дли лампой книги. Ниже мы
считаем, что R — коммутативное кольцо типа Q, Ж, Ъ или Zm.
Матричное умножение
Вектор-строка, или просто вектор, это строка элементов из
кольца R, т.е. v = (ai,...,an). Влктор-столбец, или транспониро-
транспонированная вектор-строка, — это столЯгц илементов из R, т.е.
vT =
«I
Матрица А размера тх п — ито прямоугольный массив из тптг
элементов кольца R, где m — количество строк, а п — количество
столбцов, т.е.
А =
<Чп
a2i
.1ml
который можно представлять как набор вектор-строк, располо-
расположенных в столбец, или как набор вектор-столбцов, расположенных
в строку. Транспонированная га х га-матрица Ат — это п х тп-
матрица, полученная из исходной превращением строк в столбцы
(или столбцов в строки).
Данные вектор-строку из г» элементов (расположенную слева) и
вектор-столбец с таким же количеством элементов (расположенный
справа) можно перемножить и получить элемент из R, т.е.
Г*1
(«1 о»)
jiiu приложение
В качестве примера рассмотрим случай R = Z; тогда
A,2,3)
5 =
По данным т х n-матрице А (расположенной слева) и п-
элементному вектор-столбцу \Т (расположенному справа) можно
сформировать произведение AvT, рассматривая матрицу как на-
набор из m n-элементных вектор-строк и выполняя m умножений
вектор-строк матрицы А на vT. Результат, AvT, — это вектор из
m элементов. Например,
[1 2 3 4]|l]_rio]
[5 6 7 8j I -[26j
Если даны rn x га-матрица А (слева) ипх р-матрица В'(справа),
то мы можем перемножить их, рассматривая А как набор га-
элементных строк, а В — как набор га-элементных столбцов.
Результат — это m X р-матрица АВ, где элемент в i'-й строке и
j-м столбце получен перемножением »-й строки матрицы А и j-ro
столбца матрицы В. Например,
1 2
5 6
1
1
1
.1
1-
2
2
1.
3 4] И 2 _ Гю 151
Т 8J 1 2 ~ [26 39-J
Следует отметить, что порядок, в котором перемножаются
матрицы (т.е. которая из матриц стоит слева, а которая —
справа), очень важен. Существуют случаи, когда невозможно
перемножить две матрицы, если поменять их порядок (читателю
нужно построить пример); даже когда перемножение может быть
выполнено в любом порядке, результат может быть различным;
так, например,
[!]<»•')¦[? Я-
тогда как B
¦'>[!]=•¦
Если А — матрица произвольного размера (в частности, вектор-
строка или вектор-столбец) и s — элемент из кольца R, т.е. скаляр,
Линейная алгебра 521
то мы определяем матрицу «А как матрицу, в которой каждый
элемент матрицы А умножается на s. Например,
sA = s
В частности,
022
SO22
sa2n
lsam\
... san
a2
аз
Для двух данных векторов vx = (ai,...,an) и V2 = ((i,...,(n)
положим V! + V2 = (ai + 6i,... ,an + bn). Аналогично можно скла-
складывать две матрицы А и В одинакового размера, понимая их как
последовательность вектор-строк, т.е.
«21
Lami am2
" Ь
ц
"ml
bin
+6ц
«22 +
+
amn + bmn.
Отметим, что сумма А + В имеет смысл, только если А и В имеют
одинаковую «форму». В частности, сумма А + В определена, если
А,В — квадратные п х га-матрицы.
Пусть An(i?) — множество (квадратных) п х n-матриц с эле-
элементами из множества R. Пусть 0 есть п х n-матрица, полностью
состоящая из нулей. Тогда очевидно, что О + А = А + О=А для
любой п х га-матрицы А. Кроме того, пусть
1 =
1 О
О 1
О О
тогда AI = IA = А для любой га X n-матрицы А. Имеет место
следующая
522 Приложение
Теорема АЛ. Если R — коммутативное кольцо с единицей, то
А„ (К) — кольцо с единицей.
Доказательство. Доказательство заключается в проверке набора
аксиом и оставляется читателю в качестве упражнения. ?
Заметим, что кольцо А„(Я) имеет делители нуля при любых
п ^ 2. Например, при п = 2 рассмотрим
[!!][!!]¦[
о о]
о о ¦
Кроме того, как будет видно ниже, для любого п ^ 2 существуют
ненулевые п х n-матрицы, не имеющие обратных.
Линейные уравнения
Матрицы и векторы — это удобный способ описывать системы
линейных уравнений. Рассмотрим следующую систему из т
уравнений с п неизвестными:
а12х2
а21 х\ + а22х2
а\пхп = 6Ь
а2пхп = Ь2,
(ЛУ)
+ ат2х2 + ...+ атпх„ = Ьт.
Эта система уравнений называется однородной, если 6i = Ь2 — ¦ ¦ ¦ =
Ьт = 0, и неоднородной в противном случае.
Мы можем также рассматривать последнюю систему как ра-
равенство вектор-столбцов, так как два вектор-столбца равны в
точности тогда, когда равны их соответствующие компоненты.
Таким образом, мы можем переписать (ЛУ) любым из следующих
двух способов.
A) Используя определение сложения и умножения на скаляр
вектор-столбцов, (ЛУ) можно записывать как
¦ап
х2
+ •• • + хп
Lam2.
a in
Lamn.
от
Это означает, что решить первоначальную систему — то
же самое, что записать вектор Fi,..., Ьт)Т в виде линейной
Линейная алгебра МЛ
комбинации (т.е. суммы П|»>и чн-ш-ний на скаляр) вектором
(an,...,aml)r,...,(flin,,.(.i )'
B) Заметив, что левая ЧИ ifc (Л У) — это произведший г
матрицы А коэффициентом н< «одной системы на мкщр
(а?1,... ,х„)Т, (ЛУ) можно шиш ипать как Ахт = Ьт, где
х = (*!,..., *„), Ь = Fi,,. .,*,„) и
А =
fan в|»
a21 йца
Пример. Система уравнений
«In
«2n
может быть записана как
'1
2
^4
или как
Предположим теперь, что для |'и> кмы уравнений Ахт = Ь7 су-
существует п х m-матрица A~l, ofipn шин к А, такая, что А А = I
Если мы найдем такую матрицу А ', то А-1ЬТ = А Ах' -
1хг = хт будет решением системы урштений. Таким образом ре-
решение системы уравнений тесно ¦ ни in.no с нахождением обратной
матрицы. Например, матрицк
I
1 I
2 :» I
-1 о I
оказывается, имеет обратную
/17 -1/17 4/17
2/17 5/17 -3/17
12/17 -4/17 -1/17J
так что
\*i] Г 3/17 -1/17 4/17 I Гб
*» = 2/17 5/17 -3/17 5
L*sJ [ 12/17 -4/17 -1/17 J [l
Определители и обратные матрицы
Рассмотрим квадратную п х «-матрицу
А =
а12
а„2
air.
<»2п
где А — просто таблица чисел и как таковая не имеет численного
значения. Мы намерены присвоить матрице А численное значение
следующим образом:
A) Выберем какой-нибудь элемент в первой строке, какой-
нибудь элемент во второй строке, лежащий не в том же
столбце, какой-нибудь элемент в третьей строке в столбце,
отличном от первых двух, и так далее, пока не получим
п чисел, никакие два из которых не лежат в одной строке
или столбце; образуем все возможные такие группы чисел.
Например, для данной 3 х 3-матрицы ,
[a31
мы имеем следующие возможности:
Варианты Перестановки
. 022,133
013,021,032
«13,022,031
1 23
1 32
2 1 3
23 1
3 12
3 21
Перестановка указывает на порядок вторых индексов, ког-
когда первые индексы расположены в естественном порядке 1,
2,... .
Линейная алгебра 525
B) Вычислим количество инверсий для каждой перестановки,
т.е. вычислим количество перемен местами двух сосед-
соседних чисел, необходимых для приведения перестановки к
естественному порядку. Это может быть легко сделано
следующим образом: для каждой перестановки, двигаясь
слева направо, считаем, сколько чисел справа меньше, чем
рассматриваемое. Например, для перестановки 3 12 мы
имеем 2 + 0 + 0 = 2, потому что 3 имеет два меньших числа
справа, а 1, 2 таких не имеют. Таким образом, число
инверсий для 3 12 равно 2; аналогично для 3 2 1 оно равно
3 = 2 + 1+0.
C) Теперь численное значение, соответствующее А, — это
сумма
где суммирование ведется по всем i от 1 до п, каждое сла-
слагаемое в сумме есть произведение элементов, выбранных
выше на шаге 1, и т — число инверсий в соответствующей
перестановке. (Мы имеем п\ слагаемых.)
Пример. Дано a22<Ji3a3i- Найдем A,1*2,13, а также выясним,
прибавляется этот член или вычитается. Для нахождения i\, ij, 1*3
мы просто переставим элементы так, чтобы первые индексы были
расположены в естественном порядке: 013022031- Теперь ясно, что
i'i = 3, »2 = 2, ('з = 1. Член вычитается, потому что т = 3.
Определение А.2.
определитель — это
Дана квадратная п х тг-матрица А. Ее
det А =
и3 • • -в»*.
где суммирование ведется по всем перестановкам из п элементов,
am — число инверсий в соответствующей перестановке.
Иногда определитель также записывается как |А| или |а<;-|,
i,j— 1,..., п; кроме того, det(A) можно рассматривать как сумму
произведений элементов из одной строки или столбца матрицы А
на соответствующие алгебраические дополнения. Алгебраическое
дополнение элемента Щ] — это определитель матрицы, полученной
из А вычеркиванием i-й строки и j-ro столбца, умноженный на
(—1)'+J (см. также определение А.8). Для случая 3x3, который
иуилилссниь
рассматривался выше, мы имеем (см. также теорему А.9).
1оц ai2 aj3
021 a22 a23
031 О32 033 _
=011022033 + fll2O23a31
~ 011023032-
= аЦв22-
Для случая 2x2 мы имеем
= detfan
La21
La21 «22.
Если А — треугольная матрица, т.е. матрица вида
А =
аи О
а21 «22
О
О
О "
О
а„2 а„3
то det(A) = апв22...а„„.
Если А есть п х /г-матрица с элементами из кольца R, то
иногда она имеет обратную, п х n-матрицу А, такую, что
АА == А-1А = I. Хорошо известная теорема линейной алгебры
утверждает, что А существует тогда и только тогда, когда
det(A) — обратимый элемент кольца R. В частности, для 2x2-
матриц, если определитель А обратим, то обратная к А матрица
может быть найдена следующим образом. Если
и \ftad — Ьс) принадлежит R, то
1 Га1 -Ь
ad — be —с d
что легко проверяется. Лля матриц А порядка 3x3 или больше
формула для нахождения обратной к А матрицы через опреде-
определители слишком сложна, чтобы приводить ее здесь. Однако мы
можем найти обратную к п х тг-матрице А, если она существует,
используя операции над строками.
Линейная алгеЬра (Ш
Элементарные операции над строками
Метод исключения Гаусса — наиболее полезная техника, ког-
когда используются только элементарные операции над строками.
Существуют три такие операции:
A) Перестановка двух строк матрицы.
B) Умножение строки на обратимый скаляр.
C) Прибавление к строке другой строки, умноженной на ска-
скаляр.
Эти операции над строками соответствуют действиям, которые
можно выполнять над системой уравнений, не изменяя решений
этих уравнений. Если А есть m х тг-матрица с элементами из поля
R, то, используя операцию C), можно получить в матрице нулевые
элементы и преобразовать ее к ступенчатой форме по строкам.
Следующие примеры — это матрицы такого вида:
1
0
0
0
1
0
21
2
0
Г1
• °
о
0
1
0
0"
о ,
1
'0
0
0
0
0
0
1
0
0
0
1
0
12 0 0 4 0
0 0 1-10 0
0 0 0 0 0 1
Мы можем найти обратную к п х n-матрице Av если она сущес-
существует, решая относительно х3" уравнение
Ахт=ут = 1ут или (А,1)(хг,-уг)г=07',
где (АД) — это n x 2п-матрица, левая часть которой есть А, а
правая часть — единичная п х тг-матрица I, и где х, у — векторы
неизвестных. Если ступенчатая форма тг х 2п-матрицы (А,1)
имеет вид (I, В), т.е. п самых левых столбцов ступенчатой формы
п X 2п-матрицы (АД) образуют единичную n x /г-матрицу I, то
= 0'
хт = ВуГ
тогда и только тогда, когда В — матрица, обратная к А. Поэтому,
для того чтобы вычислить А, обратную к А матрицу, записы-
записываем рядом (АД) и производим операции над строками всей этой
матрицы, пытаясь преобразовать А в I. Если это удается, то теми
же операциями над строками матрица I переводится в А.
Пример. Вычислим матрицу, обратную к
Ч* ?]•
Конечно, у нас есть формула, чтобы получить А для этой
матрицы, но тот же результат получается применением операций
над строками
[12 10] [12 10]
[3 4 0 lj ~* [О -2 -3 1J ~*
12 1 0 ] [10-2 1 ]
0 1 3/2 -1/2J "" [о 1 3/2 -1/2 J '
т.е.
-2 1
3/2 -1/2
1 2
3 4
1_[1 0]
J - [О lj ¦
Далее мы приводим некоторые теоремы, иллюстрирующие дей-
действие операций над строками на определитель; их доказательства
мало познавательны, и мы их опускаем. (Их можно найти в
большинстве книг по линейной алгебре.)
Теорема А.З. Если любые две строки (или столбца) определи-
определителя поменять местами, то определитель поменяет знак.
Чтобы убедиться в справедливости этой теоремы, рассмотрим
Тогда |А| = ad — be и |В| = be — ad = —{ad — be). Сделайте то же
для столбцов.
Теорема А.4. Если все элементы строки (или столбца) опреде-
определителя умножить на к, то определитель умножится на к.
Сравните
и |B| = det[*; »].
Очевидно, что |А| = ad — be, принимая во внимание, что |В| =
kad—kbc = k(ad~ be) = fc|A|. Аналогично проводится проверка для
столбцов.
Линейная алгебра 529
Теорема А.5. Если две строки (или столбца) определителя
равны, определитель равен 0.
Рассмотрим
Теорема А.6. Если одну строку (или столбец), умноженную на
число, прибавить к другой строке (или столбцу) определителя, то
его значение не изменится.
Рассмотрим, например,
= det
а + кс b + kd
Тогда |А| = ad-бси |В| = (a + kc)d-(b + kd)c = ad + kcd-bc-kcd =
ad — bc= |A|. Повторите то же самое для столбцов.
Наконец, справедлива следующая
Теорема А.7 (перемена местами строк и столбцов). Если строки
определителя сделать столбцами, а столбцы — строками (в том
же порядке), то определитель не изменится.
(Другими словами, определитель матрицы, транспонированной
к А, равен определителю матрицы А.) То есть
s] ¦•'-'*¦
Разложение определителя по строке или столбцу
Из предыдущего примера видно, что мы можем легко вычислить
значение определителя 2 х 2-матрицы. Но что можно сказать об
определителе 3 х 3-матрицы или, в общем случае, п X п-матрицы?
Ниже мы дадим ответ на этот вопрос.
Определение А.8. Даны п х n-определитель |А| и его элемент
amjfc. Мы назовем минором элемента amjt определитель размера
(п — 1) х (п — 1), полученный вычеркиванием из матрицы А ш-й
строки и fc-ro столбца. Минор обозначается через |Amt|. Алгебра-
Алгебраическим дополнением элемента a,,,i ми назовем ( — 1)т+*|А„„ь],
44-274
530 Приложение
Сформулируем основной результат.
Теорема А.9. Если дан п х n-определитель |А|, то
Пример. Чтобы вычислить значение определителя
023 |
J
мы воспользуемся теоремой А.9 и, разлагая по первой строке,
получим
|A|=(-lJandet[a22 a23]+(-lK a12detfa21
L<*32 a33j v [a31
(-lLa13det
022
2
a2i
031
a23
«33.
«22
a32.
a33
откуда легко получить шесть слагаемых, которые мы видели ранее.
Мы можем также разложить определитель по столбцу.
Подпространства, базисы и размерность
Если V — поле, то мы обозначаем через Vn множество всех п-ок
(vi,...,vn), элементы которых лежат в V. Операции сложения и
скалярного умножения в Vn определяются следующим образом:
(«ь... ,ап)
, Ъ„) = (<ц + h,...,а„ + Ьп),
,vn) = (svi,...,svn)
для s из V. Эти операции превращают Vn в то, что называется
векторным пространством.
Подмножество S векторного пространства Vn называется под-
подпространством, если всякий раз, когда х,у принадлежат S, то
же верно и для их линейной комбинации, т.е. rx + sy для любых
г, в из поля V. В этой книге основные примеры пространств —
нуль-пространства и пространства строк т х п-матриц.
Пусть А есть m x n-матрица. Нуль-пространство матрицы
А — это множество S всех х из V,,, таких, что Ахт = 0т. Если
рассматривать А как матрицу коэффициентов системы однородных
Линейная алгебра 531
уравнений, то нуль-пространство матрицы А — это множество
решений соответствующих уравнений. Множество S является
подпространством пространства Vn, потому что, если х,у —
решения, то решением будет и любая их линейная комбинация:
если r,s — произвольные элементы поля V, то
А(гх
= г(Ахг)
i = rOT + sOT = O1
(Заметим, что множество векторов х, таких, что Ахг = Ът для
фиксированного Ь ф 0, не является подпространством, потому что
если Ахт = Ьт, то А(хт + хт) = 2ЬТ, а не Ьт.)
Базис векторного пространства S — это множество {xi,... ,хг}
векторов из S, такое, что любой вектор а из S может быть записан
в виде линейной комбинации векторов xi,...,xr, притом единст-
единственным способом. Существует эквивалентный способ определения
базиса: мы говорим, что пространство S натянуто на множество
{xi,...,xr} векторов из S, если любой вектор из S может быть
записан в виде линейной комбинации векторов xi,..., хг (не обяза-
обязательно однозначно), и мы говорим, что векторы xj,..., хг линейно
независимы, если единственным решением уравнения
+ с2х2 Н Ь сгхг = О
является решение с\ = 0, с2 = 0,..., сг =0. Тогда базис прост-
пространства S — это множество линейно независимых векторов, на
которые натянуто S.
Если S — нуль-пространство матрицы А, то, как мы видели в
разд. 6.2.4, базис пространства S находится путем приведения А
к ступенчатому виду (по строкам) с помощью алгоритма NS из
разд. 6.2.4.
В общем случае у пространства есть много различных базисов.
Однако хорошо известная теорема утверждает, что все базисы
пространства S содержат одно и то же число векторов. Размер-
Размерность пространства равна числу векторов в любом базисе этого
пространства. Так, размерность пространства V,, равна п.
Пространство строк т х n-матрицы А — это множество всех
п-ок, являющихся линейными комбинациями строк матрицы А.
Легко убедиться, что если мы выполним элементарную операцию
над строками матрицы А, то пространство строк новой матри-
матрицы совпадет с пространством строк матрицы А. Поскольку А„,
ступенчатая форма матрицы А, получается последовательностью
.14*
532 Приложение
элементарных операций над строками, пространство строк мат-
матрицы Ае совпадет с пространством строк матрицы А.
Легко проверяется, что ненулевые строки ступенчатой формы
матрицы А составляют базис пространства строк матрицы А.
Поэтому число ненулевых строк в ступенчатой форме матрицы
А равно размерности пространства строк матрицы А. Эта
размерность называется рангом (по строкам) матрицы А, и хорошо
известная теорема утверждает, что для m х n-матрицы А ее ранг
в сумме с размерностью ее нуль-пространства дает п, число
столбцов матрицы А.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
алгоритм Берлеквмпа (Berlekamji's
algorithm) 405, 412
— Габихта субрезультантных PRS
300, 327, 337
— греко-китайский (Greek-Chinese
remainder algorithm) 97, 98
— Доджсонл (Dodgson't algorithm)
340
— деления синтетический (syn-
(synthetic division) 149, 154
— Евклида (Euclidean algorithm) 52,
169
обобщенный (generalized ~ ~)
297
расширенный (extended ~ ~)
58, 172
— евклидов PRS (Euclidean PRS
~) 298
— подъема Гензеля линейный (Htn-
sel's linear-lifting ~) 426
Квадратичный (~ quad-
quadratic-lifting ~) 431
— полиномиальный по времени
(polynomial-time ~) 19
— примитивных PRS (primitive PRS
~) 299
— разложения на свободные от
квадратов множители (~ of
squarefree factorization) 184
сомножители разных сте-
степеней (~ of distinct degree ~)
399
— Сильвестра редуцированных
(субрезультантных) PRS 300
— экспоненциальный по времени
(exponential-time ~) 19
анализ криптографический (crypt-
analysis) 258
аппроксимация (approximation) 443
— вещественных корней (~ of real
roots) 497
арифметика модулярная или ос-
остатков (modular arithmetic) 79
база мультипликативная (factor
base) 107
базис векторного пространства
(basis of a space) 531
— нуль-пространства (~ ~ the
null-space) 410
биградиент (bigradient) 317
биекция (bijection) 41
бит четности (parity bit) 230
БЧХ-код (ВСН code) 241
вектор (vector) 198
— оснований (base ~) 114
— ошибок (error word (~)) 224
векторы ортогональные (orthogo-
(orthogonal vectors) 199
вершина терминальная (terminal
node) 489
вес Хзмминга (Hamming weight)
224
вращение (rotation) 471
вычет квадратичный (quadratic
residue) 215
вычеты упрощенные (simplified
residues) 347
гомоморфизм (homomorpnism) 40
граница верхняя значений поло-
положительных корней полинома
(upper bound on the values of
positive roots of polynomials) 462
Хзмминга числа кодовых слов
(Hamming's ~ ~ on the number
of codewords) 228
числа положительных кор-
корней уравнения (~ ~ on the num-
number of positive roots of equation)
448
— в среднем (average-case ~) 20
— для худшего случая (worst-case
~) 20
грань верхняя числа веществен-
вещественных корней в интервале (upper
bound on the number of real roots
in an interval) 446
группа (group) 45
— абелева (Abelian ~) 88
— аддитивная (additive ~) 45
534 Предметный указатель
— единиц кольца (~ of units) 88
— мультипликативная (multiplica-
(multiplicative ~) 45
— обратимых элементов (~ of
units) 88
— симметрическая (symmetric ~)
45
— циклическая (cyclic ~) 89
декодирование в ближайшее кодо-
кодовое слово (nearest-neighbor de-
decoding) 225
— по максимуму правдоподобия
(maximum-likelihood ~) 224
деление пробное (trial division) 209
делитель нуля (zero divisor) 47
дешифратор (decryption, decipher-
deciphering device) 259
дешифрование итерациями (de-
(decryption by iteration) 282
дискриминант полинома (discrimi-
(discriminant of a polynomial) 327
доминирование (dominance) 18
дополнение алгебраическое (cofac-
tor) 525, 529
дробь подходящая (convergent) 63
— цепная (continued fraction) 60
единица (unit) 295
задача подмножеств или рюкзака
(knapsack problem) 276
законы Де Моргана (DeMorgan's
laws) 119
звено (node) 16
идеал (ideal) 241
— главный (principal ~) 241
избыточность кодирования (re-
(redundancy) 223
изоморфизм (isomorphism) 41
инверсия (inversion) 471, 525
исключение гауссово (Gaussian elim-
elimination) 339
источник (source) 222
канал двоичный симметричный
(binary symmetric channel) 222
класс эквивалентности (equivalence
class) 38
кластер (claster) 223
ключ (key) 261
4— переменный (variable ~) 261
— фиксированный (fixed ~) 261
— шифровальный (encryption ~)
259
код (code) 224, 259
— двоичный (binary ~) 222
— дуальный (dual ~) 235, 246
— линейный (linear ~) 232
— с одной проверкой на четность
(single-parity-check ~) 230
повторением (repetition ~)
230
— секретный (secret ~) 260
— совершенный (perfect ~) 229
— упорядоченный (ordered ~) 235
— Хэмминга (Hamming ~) 229
— циклический (cyclic ~) 241
кодовое слово (codeword) 223
кодоминантность (codominance) 18
коды, исправляющие ошибки (error-
correcting codes) 221
— эквивалентные (equivalent ~)
233
кольцо (ring) 46
— коммутативное (commutative ~)
46
композиция функций (composition
of functions) 43
конгруэнция (congruence) 78
корень полинома (root of a polyno-
polynomial) 150
кратный (multiple root) 178
— простой (simple ~) 151, 178
— примитивный по модулю т
(primitive ~ modulo m) 89
n-й степени из единицы (prim-
(primitive nth ~ of unity) 215
коэффициент главный субрезуль-
тантный (principal subresultant
coefficient) 329
— полинома старший (leading ~ of
a polynomial) 147
кратность корня (multiplicity of a
root) 151
криптоанализ (cryptanalysis) 258
криптограмма (cryptogram) 259
криптография (cryptography) 258
криптология (cryptology) 221
криптосистема (cryptosystem) 259
— асимметричная (asymmetric ~)
259, 274
— единого ключа (single key ~)
259
Предметный указатель 535
— многоалфавитная (polyalphabet-
ic ~) 261
— одноалфавитная (monoalphabet-
ic ~) 261
— открытого ключа (public key ~)
259, 274
— рюкзака (knapsack ~) 276
— симметричная (symmetric ~) 259
— шифров-произведений (product-
cipher ~) 272
критерий неприводимости ЭНзен-
ште&на (EisensUin'sirreducibil-
ity criterion) 180
— Эйлера (Euler't ~) 130
лемма Гензеля (Hensel't Lemma)
425
лидер смежного класса (coset lead-
leader) 238
логарифм дискретный (discrete log-
logarithm) 217
матрица инволюции (involutory ma-
matrix) 268
— порождающая (generator ~ of a
code) 232
— проверочная (parity check ~)
231
— треугольная (triangular ~) 526
медианта (mediant) 122
метод бисекций Штурма (Sturm'»
bisection method) 455
— Горнера (Homer's ~) 152
— исключения Гаусса (Gaussian
elimination ~) 527
— Кронекера-Шуберта разложения
на множители (Schuberi-Krone-
cker factorization ~) 383
— матричной триангуляризации
субрезультантных PRS (matrix-
triangularization subresultant PRS
~) 301, 338
— Руффини-Горнера (Ruffini-Hor-
ntr ~) 152
— русский крестьянский (Russian
peasant ~) 85
— Сильвестра—Габихта псевдоде-
псевдоделения субрезультантных PRS
(Sylvester-Habicht pseudodivjsion
subresultant PRS ~) 300
— Успенского модифицированный
(modified Uspensky'i ~) 512
— Ферма разложения чисел (Fer-
mat's factorization ~) 136
минор (minor) 529
множества изоморфные (isomor-
phic sets) 41
множество вычетов (set of residues)
. 77
— индексов (index ~) 36
— представителей (~ of represen-
representatives) 37
— пустое (empty ~) 36
— терминальное (terminal ~) 489
набор стандартный остатков чис-
числа относительно данного век-
вектора оснований (standard residue
digits) 114
наибольший общий делитель по-
полиномов (greatest common di-
divisor (gcd) of polynomials) 168,
173
целых чисел (~ ~ ~ ~
integers) 50
наименьшее общее кратное целых
чисел (least common multiple of
integers) 52
невычет квадратичный (quadratic
nonresidue) 215
независимость линейная (linear in-
independence) 531
норма (norm) 224
— евклидова (Euclidean ~) 25
— максимальная (Max-norm) 25
— с нижним индексом со (sub-
infinity norm) 25
— суммарная (sum norm, sub-one
~) 25
нуль полинома (zero of a polynomi-
polynomial) 150
нуль-пространство (null space) 410,
530
обеспечение сохранности (integri-
(integrity) 258
область евклидова (Euclidean do-
domain) 168
— с однозначным разложением на
множители (unique factorization
~) 71
— целостности (integral ~) 47
образ (image) 40
образующий (generator) 241,244
— группы (generator of a group) 89
536 Предметный указатель
объединение множеств (union of
sets) 36
операция ассоциативная (associa-
(associative operation) 42
— коммутативная (commutative ~)
42
определитель (determinant) 525
— Вандермонда (Vandermonde ~)
465
остаток по модулю т (remainder
modulo n) 79
отделение вещественных корней
(isolation of real roots) 443
отношение бинарное (binary rela-
relation) 38
— инверсное (inverse ~) 38
— обратное (~ ~) 38
— сравнимости по модулю поли-
полинома (congruence ~) 158
— эквивалентности (equivalence ~)
38
отображение (map, mapping) 40
ошибка округления (round-off er-
error) 13
пакет (burst) 223
— (~ of errors) ошибок 254
парадокс Рассела (Russell's para-
paradox) 119
передатчик (sender) 222
перемена знаков (sign variation)
446
пересечение множеств (intersection
of sets) 36
перестановка (permutation) 524
подмножество (subset) 35
— собственное (proper ~) 36
подпространство (subspace) 530
— циклическое (cyclic ~) 241
подстановка дробно-линейная (lin-
(linear fractional substitution) 469
— Мёбиуса (Moehius ~) 469
— общая (general ~) 469
подстановки порождающие (gener-
(generating substitutions) 471
поле (field) 47
— Галуа (Galois ~) 48
— расщепления (splitting ~) 189
полином (polynomial) 146
— Гаусса (Gaussian ~) 207
— Лежандра (Legendrt ~) 206
— локаторов ошибок (error-locator
~) 257
— минимальный (minimal ~) 190
— неприводимый (irreducible ~)
161, 180
— нормированный (monic ~) 305
— порождающий (generator ~) 244
— примитивный (primitive ~) 197,
29S
— проверочный (parity check ~)
246
— простой (prime ~) 161
— свободный от квадратов (square-
free ~) 182
— Чебышёва (Chtbyshev ~) 206
— с-примитивный (o-primitive ~)
197
полиномы ассоциирование (asso-
(associate polynomials) 170
— взаимно простые (relatively prime
~) 170
порядок элемента группы (order
of a group element) 89
последовательность полиномиаль-
полиномиальных остатков (polynomial re-
remainder sequence) 170
неполная (incomplete PRS,
abnormal PRS) 298
полная (complete PRS, nor-
normal PRS) 298
— супервозрастающая (superincreas-
ing sequence) 277
— Фибоначчи (Fibonacci ~) 55
— Фурье (Fourier's ~) 446
— Штурма (Sturm's ~) 317, 449
обобщенная (generalized ~ ~)
450
постулат Бертрана (Bertrani'spos-
(Bertrani'spostulate) 126
правило знаков Кардано-Декарта
(Cardano-Descartes'rule of signs)
448
— Коши (Cauchy's rule) 460
предложение основное теории ис-
исключения (fundamental proposi-
proposition of elimination theory) 373
представитель класса эквивален-
эквивалентности (class representative) 38
представление целых чисел греко-
китайское (Greek-Chinese repre-
representation of integers) 95
с фиксированным основа-
основанием (fixed-radix ~ ~ ~) 117
Предметный указатель 537
со смешанными основани-
основаниями (mixed-radix ~ ~ ~) 117
принцип включения и исключе-
исключения (principle of inclusion and
exclusion) 119
— полной упорядоченности (well-
ordering ~) 48
проблемы неразрешимые (proven
solvable problems) 270
— доказуемо -грудные (provably
difficult ~) 270
— разрешимые (solvable ~) 270
проверка на четность/нечетность
(even/odd parity check) 230
программы общего назначения (spe-
(special-purpose programs) 28
— специального назначения (gene-
(general-purpose ~) 27
произведение множеств (product of
sets) 36
— декартово (Cartesian ~ ~ ~)
36
— скалярное (inner product) 199
прообраз (inverse image) 40
пространство векторное (vector
space) 199, 530
— строк (row ~) 531
процедура мощности (cardinality
procedure) 433
— степени (degree ~) 433
псевдоделение полиномов (pseudo-
division of polynomials) 296
псевдоостаток (pseudoremainder) 296
псевдочастное (pseudoquotient) 296
разбиение множества (partition of
a set) 37
разложение полиномов на свобод-
свободные от квадратов множители
(squarefree factorization of poly-
polynomials) 182, 183
— целых чисел на множители (~
of integers) 68
— числа в произведение степеней
простых чисел (prime-power de-
decomposition of integers) 71
размерность пространства (dimen-
(dimension of a space) 410, 531
разность множеств (difference of
sets) 36
симметрическая (symmetric
) 119
ранг матрицы (rank of a matrix)
532
расстояние кодовое (minimum dis-
distance of a code) 226
— Хэммижа (Hamming distance)
224
растяжение (stretching) 471
расширение поля (field extension)
164
простое (simple ~ ~) 164
результант (resultant) 312
решето Эрлтосфена (Eratosthenes'
sieve) 74
рюкзак мультипликативный (mul-
(multiplicative knapsack) 279
ряд Фарея (Farey series) 121,122
свойство делимости целых чисел
(division property of integers) 49
— евклидовости (Euclidean ~) 49
сдвиг (translation, shift) 287, 471
— обобщенный (general translation)
510
сепаратор (minimum root separa-
separation) 455
символ Лежандра (Legendre's sym-
symbol) 130
— Яхоби (Jacobi ~) 130
синглетон (singleton) 36
синдромом (syndrome) 237
система криптографическая (сгур-
tosystem) 259
полиграфовая (polygraphic ~)
267
— остатков наименьших по абсо-
абсолютной величине (least abso-
absolute value residue system) 79
неотрицательных (nonnega-
tive ~ ~) 79
полная (complete ~ ~) 79
простая (prime ~ ~) 83
симметричная (symmetric ~
~) 79, 114
— уравнений неоднородная (non-
homogeneous system of equations)
522
однородная (homogeneous ^
~ ~) 522
— числовая наименьшая неотри-
неотрицательная (least nonnegative num-
number system) 114
по абсолютной величине
(least absolute value ~ ~) 114
538 Предметный указатель
скорость передачи информации
(information rate) 223
след (trace polynomial) 404
сложность алгоритмов (complexity
of algorithms) 18
— вычислений временная (time ~
~ ~) 18
содержание полинома (content of
polynomial) 295
сомножители распределенные (al-
lotrious factors) 308
сомножитель кратный (multiple fac-
factor) 178
— свободный от квадратов (square-
free ~) 183
сообщение (message) 222
список (list) 14
— свободного места (available space
~) 17
степень полинома (degree of a poly-
polynomial) 146
субрезультант (subresultant) 315
схема дешифровки (decryption, de-
deciphering device) 259
— шифровальная (encryption, enci-
enciphering ~) 259
текст открытый (plaintext) 259
— шифрованный (ciphertext) 259
теорема Бюдана (Budan's theorem)
468
— Ванга (Wang's ~) 513
— Вильсона (Wilson's ~) 87
— Винсента (Vincent's ~) 475, 478
— Габчхта (Habichi's ~) 332, 333
— греко-китайская об остатках
для целых чисел (Greek-Chinese
remainder «-< for integers) 93
полиномов (~ ~ ~ ~
polynomials) 405
— Дирихле (Dirichlcl's ~) 213
— Евклида (Euclid's ~) 72
— Ламе (Lame's ~) 55
— Лукаса (Lucas' ~) 123
— Малера (Mahler's ~) 464
— о примитивном корне (primitive
root ~) 188
— о разложении на простые мно-
множители для полиномов (prime
factorization ~ for polynomials)
177
— основная алгебры (fundamental
~ of algebra) 175
арифметики (~ ~ ~ arith-
arithmetic) 70
— Сильвестра (Sylvester's ~) 308
— Ферма малая (Fcrmat's "little"
~) 83
— Фурье (Fourier's ~) 446
— Штикельбергера (Stickelberger's
~) 437
— Штурма (Sturm's ~) 449, 451,
453
— Эйлера (Euler's ~) 83
тест на простоту (primality testing)
69
— псевдопростоты (pseudoprimali-
ty test) 103
узел терминальный (terminal node)
489
уравнения проверочные (parity check
equations) 231
установление полномочий (authen-
(authentication) 258
фактормножество (factor set, quo-
quotient set) 38
форма матрицы ступенчатая (row
echelon form of a matrix) 527
— полинома вложенная (nested form
of a polynomial) 153
формула Лагранока интерполяци-
интерполяционная (Lagrange interpolation)
156
— обращения Мёбиуса (Moebius in-
inversion formula) 396
функции кодоминантные (codomi-
nant functions) 18
— равные (equal ~) 42
функция (function) 40
функция биективная (bijective ~)
41
— взаимно однозначная (one-to-
one ~) 41
— времени вычислений (compu-
(computing-time ~) 19
— инъективная (injective ~) 41
— Мёбиуса (Moebius ~) 395
— мультипликативная (multiplica-
(multiplicative ~) 395
— обратная (inverse ~) 43
— односторонняя (one-way ~) 276
«ловушка» (trapdoor ~) 276
Предметный указатель 539
— следования succ (successor ~) 42
— сюр-ьективная (surjective ~) 41
— тождественная (identity ~) 43
— Эйлера (Euler's phi ~, totient ~)
73
характеристика (characteristic) 46
— (~ of a field) поля 79
цепь (chain) 449
цифры информационные (informa-
(information digits) 223
— проверочные (check ~) 223
частное неполное (partial quotient)
61
— пробное (trial ~) 22
часть вещественного числа целая
(integer part of a real number) 61
— полинома примитивная (primi-
(primitive ~ of a polynomial) 295
числа взаимно простые (relatively
prime integers) 51
— целые по модулю т (integers
modulo m) 77
число абсолютно псевдопростое
(absolute pseudoprime) 104
— алгебраическое (algebraic num-
number) 190
— иррациональное (irrational ~)
63
— кармайклово (Carmichael ~) 87,
104
— квадратичное иррациональное
(quadratic irrational ~) 63
—L Мерсенна (Mersenne ~) 108
— неразложимое (irreducible inte-
integer) 69
— простое (prime ~) 70
несчастливое (unlucky prime)
304
— псевдопростое (pseudoprime) 87
Эйлера (Euler ~) 134
— разложимое (reducible integer)
69
— с плавающей точкой (floating
point number) 12
нормализованное (nor-
(normalized ~ ~ ~) 12
— свободное от квадратов (square-
free integer) 95
— сильно псевдопростое (strong
pseudoprime) 105
— составное (composite integer) 69
— трансцендентное (transendental
number) 190
— Ферма (Fermat ~) 108
— целое гауссово (Gaussian inte-
integer) 124
длинное (long ~) 15
короткое (small ~) 15
кратной точности (long ~)
15
одинарной точности (small
~) 15
шифр (cipher) 259
— бегущего ключа Виженера (run-
(running key Vigenere ~) 265
— блочный (block ~) 261
— Виженера (Vigenere ^) 263
— изгороди (rail fence ~) 261
— модулярный (modular ~) 262
— одноразового блокнота (one-time
pads ~) 266
— перестановки (permutation ~)
260
— подстановки (substitution) 260
— потоковый (stream cipher) 261
— с автоматическим выбором клю-
ключа (auto key ~) 265
— транспозиции (transposition) 260
— Хилла (Hill cipher) 268
— Цезаря (Caesar's ~) 262
шифры-произведений (product-ci-
(product-cipher) 272
элемент нулевой (zero element) 46
— обратимый (invertible ~) 47
алиминант (eliminant) 346
ячейка, (cell) 16
gcd-алгоритм модулярный (modu-
(modular GCD algorithm) 303
(п,/с)-код ((n, fc)-code) 223
JVP-полные проблемы (jVP-com-
plete problems) 270
JVP-проблемы (недетерминисти-
(недетерминистические полиномиальные) (NP-
problems) 270
Р-проблемы (P-problems) 270
RSA-криптосистема (RSA crypto-
system) 275
/3-длина целого числа (/3-length of
an integer) 18
(/«-функция (phi function) 73
ОГЛАВЛЕНИЕ
От переводчика 5
Предисловие к русскому изданию 6
Предисловие 7
Часть I. ВВЕДЕНИЕ 10
1. Что такое компьютерная алгебра? 11
1.1. Компьютерная алгебра и численный анализ 12
1.2. Компьютерная алгебра: точная целочисленная и
полиномиальная арифметики 14
1.3. Системы компьютерной алгебры 27
Упражнения 29
Упражнения по программированию 31
Литература 33
Часть II. МАТЕМАТИЧЕСКИЕ ОСНОВАНИЯ
И ОСНОВНЫЕ АЛГОРИТМЫ 34
2. Целые числа 35
2.1. Основные понятия 35
2.1.1. Множества 35
2.1.2. Отношения эквивалентности 38
2.1.3. Функции и алгебраические системы 40
2.2. Наибольшие общие делители целых чисел 48
2.2.1. Лелимость целых чисел 48
2.2.2. Алгоритм Евклида и теорема Ламе 53
2.2.3. Расширенный алгоритм Евклида 58
2.2.4. Алгоритм Евклида и цепные дроби 60
2.3. Разложение целых чисел на множители 68
2.3.1. Простые числа и решето Эратосфена 69
2.3.2. Целые числа по модулю т и алгоритм в
греко-китайской теореме об остатках 77
2.3.3. Тесты простоты 100
2.3.4. Разложение на множители больших целых чи-
чисел 106
2.4. Точные вычисления, использующие модулярную
арифметику 108
Упражнения 118
Упражнения по программированию 137
Исторические замечания и литература 141
Оглавление 541
3. Полиномы 146
3.1. Основные понятия 146
3.1.1. Основные сведения о полиномах 146
3.1.2. Метод Руффини-Горнера 152
3.1.3. Интерполяция над полем 156
3.1.4. Вычисления, использующие схему: (вычисле-
(вычисление значений)-интерполяция 161
3.2. Наибольшие общие делители полиномов над полем . 168
3.2.1. Делимость полиномов 168
3.2.2. Алгоритм Евклида для полиномов над полем 171
3.2.3. Неприводимые сомножители полиномов 175
3.2.4. Разложение полиномов на свободные от квад-
квадратов множители 182
3.3. Поля Галуа GF(pr) 186
3.3.1. Основные факты о конечных полях 186
3.3.2. Построение полей Галуа GF(f) 196
3.3.3. Схемы для полиномиальной арифметики в
GF{2r) 199
Упражнения 205
Упражнения по программированию 218
Литература 219
Часть III. ПРИЛОЖЕНИЯ И СОВРЕМЕННЫЕ
МЕТОДЫ 220
4. Коды, исправляющие ошибки, и криптография 221
4.1. Коды, исправляющие ошибки, — основные понятия . 221
4.1.1. Коды Хэмминга 229
4.1.2. БЧХ-коды 241
4.2. Криптография — общие понятия 258
4.2.1. Симметричные криптосистемы (единого клю-
ключа) 260
4.2.2. Асимметричные криптосистемы (открытого
ключа) 274
Упражнения 283
Упражнения по программированию 290
Литература 291
5. Наибольшие общие делители полиномов над целы-
целыми числами и последовательности полиномиальных
остатков 294
5.1. Введение и обоснование 295
5.1.1. Общий обзо^ классических алгоритмов PRS . 296
542 Оглавление
5.1.2. Неклассический подход: модулярный алго-
алгоритм для наибольшего общего делителя 303
5.2. Метод Сильвестра-Габихта псевдоделения субре-
зультантных PRS 307
5.2.1. Алгоритм Сильвестра редуцированных (суб-
результантных) PRS 308
5.2.2. Результант двух полиномов 312
5.2.3. Алгоритм Габихта субрезультантных PRS ... 327
5.3. Метод матричной триангуляризации субрезультан-
субрезультантных PRS 338
5.3.1. Гауссово исключение и полиномиальное де-
деление 339
5.3.2. Гауссово исключение и результанты в фор-
формах Брюно и Труди 342
5.3.3. Гауссово исключение •+- результант в форме
Сильвестра = метод матричной триангуля-
триангуляризации субрезультантных PRS 346
5.4. Эмпирическое сравнение двух методов субрезуль-
субрезультантных PRS 355
Упражнения 371
Упражнения по программированию 377
Исторические замечания и литература 378
6. Разложение на множители полиномов над целыми
числами 382
6.1. Введение и обоснования 382
6.1.1. Метод Кронекера-Шуберта разложения на
множители над целыми числами 383
6.1.2. Общая схема «окольного» метода разложения
над кольцом целых чисел 385
6.2. Разложение на множители полиномов над конечным
полем 390
6.2.1. Разложение на свободные от квадратов мно-
множители над конечными полями 391
6.2.2. Вычисление числа неприводимых полиномов
над конечными полями 394
6.2.3. Разложение полиномов на множители разных
степеней (частичное) над конечными полями . 398
6.2.4. Алгоритм Берлекэмпа разложения на множи-
множители над конечными полями 405
Оглавление 543
6.3. Подъем (mod р)-разложения до разложения над це-
целыми числами 419
6.3.1. Линейный и квадратичный подъем 423
6.3.2. Нахождение истинных сомножителей над це-
целыми числами 432
Упражнения 433
Упражнения по программированию 437
Исторические замечания и литература 437
7. Отделение и аппроксимация вещественных корней
полиномиальных уравнений 441
7.1. Введение и обоснования 442
7.2. Теорема Фурье и метод бисекций Штурма отделения
вещественных корней 444
7.2.1. Теорема Фурье 444
7.2.2. Теорема Штурма и метод бисекций Штурма
отделения вещественных корней 449
7.2.3. Вычисление верхней (нижней) границы значе-
значений положительных корней полиномиального
уравнения 460
7.2.4. Вычисление нижней границы расстояния меж-
между любыми двумя корнями полиномиального
уравнения 463
7.3. Теорема Бюдана и два метода цепных дробей для
отделения вещественных корней 468
7.3.1. Теорема Бюдана 468
7.3.2. Подстановки Мёбиуса и их воздействие на
корни уравнения 469
7.3.3. Теорема Винсента: расширение и приложе-
приложения 475
7.3.4. Два метода цепных дробей отделения вещес-
вещественных корней 486
7.4. Эмпирическое сравнение двух методов отделения
вещественных корней 495
7.5. Аппроксимация вещественных корней полиномиаль-
полиномиального уравнения 497
7.5.1. Аппроксимация вещественного корня с ис-
использованием бисекций 497
7.5.2. Аппроксимация вещественного корня с ис-
использованием цепных дробей 499
7.6. Эмпирическое сравнение двух методов аппроксима-
аппроксимации вещественных корней 505
Упражнения 509
Упражнения по программированию 511
Исторические замечания и литература 512
Приложение: Линейная алгебра 519
Предметный указатель 533
Научное издание
Алкивиадис Г. Акритас
ОСНОВЫ КОМПЬЮТЕРНОЙ АЛГЕБРЫ С
ПРИЛОЖЕНИЯМИ
Заведующий редакцией академик В.И. Арнольд
Зам. зав. редакцией А.С. Попов
Ведущий редактор Г.М. Цукерман
Художник О.С. Василькова
Художественный редактор В.И. Шаповалов
Технический редактор И.И. Володина
Корректор Н.А. Мистрюкова
ИБ № 7613
Лицензия Л.Р № 010174 от 22.01.92 г.
Оригинал-макет подготовлен в издательской системе Tf}X
с использованием программного обеспечения,
разработанного в Лаборатории вычислительных методов
механико-математического факультета МГУ.
Подписано к печати 16.05.94. Формат 60 х 88/16.
Бумага офсетная. Объем 17,00 бум.л.
Усл.-печ. л. 33,24. Усл.-кр. отт. 33,24. Уч.-изд. л. 31,92.
Изд. № 1/7966. Тираж 3000 экз. Заказ 274 . С 035
Издательство «Мир»
Комитета Российской Федерации по печати.
129820, Москва, 1-й Рижский пер., 2.
Московская типография № 11
Комитета Российской Федерации по печати
113105, Москва, ул. Нагатинская, 1.