Алгоритм Берлекэмпа
Шаблон:Не путать Алгоритм Берлекэмпа — алгоритм, предназначенный для факторизации унитарных многочленов над конечным полем. Разработан Элвином Берлекэмпом в 1967 году. Может использоваться также для проверки неприводимости многочленов над конечными полями.Шаблон:Переход Основная идея алгоритма заключается в возможности представления исходного многочлена в виде произведения наибольших общих делителей самого многочлена и некоторых многочленов, которые с точностью до свободного члена являются -разлагающими.
Алгоритм Берлекэмпа имеет большую вычислительную сложность, поэтому был разработан ряд дополнительных методов, позволяющих сократить количество необходимых математических операций. Однако, несмотря на свою сложность, алгоритм Берлекэмпа был реализован в системах компьютерной алгебры. Алгоритм нашёл широкое применение в теории кодирования и в изучении линейных рекуррентных соотношений в конечных полях. Имеется много вычислительных задач в алгебре и в теории чисел, которые так или иначе связаны с разложением многочленов над конечными полями, например, разложение на множители многочленов над кольцом целых чисел, отыскание разложения простого рационального числа в поле алгебраических чисел, вычисление группы Галуа некоторого уравнения над полем рациональных чисел и построение расширений полей.
История создания
Американский математик, профессор Калифорнийского университета Берлекэмп занимался изучением циклических кодов обнаружения и исправления ошибок, в том числе кода Боуза — Чоудхури — Хоквингема, свойства которых зависят от делителей порождающих многочленов. Технические достижения Берлекэмпа в области декодирования этих кодов сделали их более привлекательными с практической точки зренияШаблон:Sfn.
Алгоритм был впервые изложен в статье «Factoring Polynomials Over Finite Fields»Шаблон:Sfn и позже воспроизведён в книге «Algebraic Coding Theory»Шаблон:Sfn. В этой работе 1967 года Шаблон:Sfn Берлекэмп пишет, что проблема факторизации возникает в трудах Голомба[1]. Однако, возможность использования матрицы для определения числа нормированных сомножителей многочлена была впервые замечена в статье Шаблон:Нп3[2]. В статье Батлера[3] было установлено, что ранг матрицы равен , другое доказательство этого факта было дано Шварцем[4].
Алгоритм Берлекэмпа упоминался во множестве работШаблон:Sfn и являлся основным алгоритмом решения проблемы факторизации до появления в 1981 году Шаблон:Нп3[5]. Была разработана техника[6] позволяющая разложить многочлен на множители за где — показатель в оценке сложности перемножения квадратных матрицШаблон:Sfn.
Постановка и определения
Рассматривается задача факторизации многочлена степени () над конечным полем (, — простое число)Шаблон:Sfn на различные неприводимые унитарные многочлены .
Для использования в алгоритме строится матрица согласно следующим условиям:
- .
Многочлен такой, что , называется -разлагающим многочленомШаблон:Sfn.
Основной случай

Алгоритм факторизации над конечным полем многочлена вида:
состоит из следующих шагов:
- Вычисление матрицы Шаблон:Sfn.
- Поиск базиса подпространства решений системы линейных уравненийШаблон:Sfn:
- ,
- при этом удаётся выбрать вектор , так как он всегда будет присутствоватьШаблон:Sfn в базисе пространства решений ввиду того, что при .
- Найденное число есть число неприводимых делителейШаблон:Sfn .
- Шаблон:ЯкорьЕсли , то многочлен является неприводимым.
- Если , то векторы имеют вид . По этим числам строятся -разлагающие многочлены:
- .
- Поиск разложенияШаблон:Sfn:
- в виде:
- ,
- где в общем случае не являются неприводимыми. Функции факторизуются таким же способомШаблон:Sfn, то есть:
- .
Общий случай

Задача факторизации произвольного унитарного многочлена сводится к рассмотрению основного случая. Для этого вычисляется многочлен
с применением алгоритма Евклида.
- Если то многочлен не содержит кратных корней, так как кратный корень одновременно является и корнем производнойШаблон:Sfn.
- Если то и значит Если то для необходимо проделать описанную процедуру до тех пор пока не будет получено разложение Многочлен удовлетворяет требованиям основного случаяШаблон:Sfn.
- Иначе, многочлен является нетривиальным делителем многочлена . В свою очередь, многочлен не имеет кратных неприводимых сомножителейШаблон:Sfn. Если содержит кратные сомножители, то к нему также применяется описанная процедура. Зная эти разложения, легко получить разложение .
Таким образом, задача разложения произвольного унитарного многочлена над конечным полем сводится к разложению на множители конечного числа многочленов, которые не имеют кратных неприводимых сомножителей, то есть к основному случаюШаблон:Sfn.
Обоснование
Пусть:
- , где .
Согласно китайской теореме об остатках существует единственный многочлен для любого набора элементов поля Шаблон:Sfn:
такой что:
- .
Многочлен удовлетворяет условиюШаблон:Sfn:
- ,
и поэтомуШаблон:Sfn:
- .
Из условия:
- ,
и из взаимной простоты сомножителей в правой части следует, что каждый неприводимый делитель многочлена делит один, и только один из многочленов . Таким образом, доказана справедливость и единственность разложенияШаблон:Sfn:
Для нахождения многочлена:
рассмотрим сравнение:
- ,
которое равносильно условиюШаблон:Sfn:
- .
По определению матрицы получим:
- ,
поэтомуШаблон:Sfn:
- .
Полученная система уравнений определяет коэффициенты -разлагающих многочленов и может быть записана в виде:
или:
Сложность алгоритма
Сложность алгоритма составляет математических операцийШаблон:Sfn. Алгоритм будет эффективен только для небольших полей. Это связано с необходимостью перебора всех .
Усовершенствования
- В случае простого поля, если значение велико, то перебор значений займёт много времени. Однако, возможно определить множество , состоящее из , для которых нетривиаленШаблон:Sfn. Для этого необходимо найти корни результантаШаблон:Sfn , которые и будут составлять множество .
- Ещё один метод разложения унитарного многочлена , не имеющего кратных неприводимых множителей, основан на приведении некоторой эффективно вычислимой с помощью алгоритма Берлекэмпа матрицы A к диагональному видуШаблон:Sfn. Однако сам процесс диагонализации довольно сложен.
- В работе Калтофена и Лобо[7] была предложена вероятностная версия алгоритма Берлекэмпа, позволяющая разложить на множители многочлен степени за арифметических операций. Алгоритм Калтофена — Лобо был реализован на компьютере, и оказался эффективным для многочленов высокой степени, например, для многочленов степени 10001 над полем он работает около 102,5 часов на компьютере Sun-4.
Применение
Алгоритмы факторизации многочленов важны для теории кодирования и для изучения линейных рекуррентных соотношений в конечных полях. Также алгоритм Берлекэмпа используется для вычисления группы Галуа уравнения над полем рациональных чисел и построения решений полей, разложения многочленов над кольцом целых чисел, для отыскания разложения простого рационального числа в поле алгебраических чисел, и для некоторых других вычислительных задачШаблон:Sfn. Алгоритм исчисления порядка использует алгоритмы факторизации многочленов для решения задачи отыскания дискретного логарифмаШаблон:Sfn, на вычислительной сложности которой построена схема Эль-Гамаля.
Реализации в системах компьютерной алгебры
В системе компьютерной алгебры Шаблон:Iw алгоритм Берлекэмпа может быть использован посредством команды factormod[8].
Примечания
Литература
- Шаблон:Статья BSTJ Later republished in: Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга Шаблон:Wayback