Алгоритм Берлекэмпа

Алгоритм Берлекэмпа — алгоритм, предназначенный для факторизации унитарных многочленов над конечным полем. Разработан Элвином Берлекэмпом в 1967 году. Может использоваться также для проверки неприводимости многочленов над конечными полями. Основная идея алгоритма заключается в возможности представления исходного многочлена в виде произведения наибольших общих делителей самого многочлена и некоторых многочленов, которые с точностью до свободного члена являются -разлагающими.

Алгоритм Берлекэмпа имеет большую вычислительную сложность, поэтому был разработан ряд дополнительных методов, позволяющих сократить количество необходимых математических операций. Однако, несмотря на свою сложность, алгоритм Берлекэмпа был реализован в системах компьютерной алгебры. Алгоритм нашёл широкое применение в теории кодирования и в изучении линейных рекуррентных соотношений в конечных полях. Имеется много вычислительных задач в алгебре и в теории чисел, которые так или иначе связаны с разложением многочленов над конечными полями, например, разложение на множители многочленов над кольцом целых чисел, отыскание разложения простого рационального числа в поле алгебраических чисел, вычисление группы Галуа некоторого уравнения над полем рациональных чисел и построение расширений полей.

История создания

Американский математик, профессор Калифорнийского университета Берлекэмп занимался изучением циклических кодов обнаружения и исправления ошибок, в том числе кода Боуза — Чоудхури — Хоквингема, свойства которых зависят от делителей порождающих многочленов. Технические достижения Берлекэмпа в области декодирования этих кодов сделали их более привлекательными с практической точки зрения[1].

Алгоритм был впервые изложен в статье «Factoring Polynomials Over Finite Fields»[2] и позже воспроизведён в книге «Algebraic Coding Theory»[2]. В этой работе 1967 года [3] Берлекэмп пишет, что проблема факторизации возникает в трудах[4] Голомба. Однако, возможность использования матрицы для определения числа нормированных сомножителей многочлена была впервые замечена в статье Карела Петра[5]. В статье Батлера[6] было установлено, что ранг матрицы равен , другое доказательство этого факта было дано Шварцем[7].

Алгоритм Берлекэмпа упоминался во множестве работ[8] и являлся основным алгоритмом решения проблемы факторизации до появления в 1981 году алгоритма Кантора — Цассенхауза[9]. Была разработана техника[10] позволяющая разложить многочлен на множители за где  — показатель в оценке сложности перемножения квадратных матриц[11].

Постановка и определения

Рассматривается задача факторизации многочлена степени () над конечным полем (,  — простое число)[12] на различные неприводимые унитарные многочлены .

Для использования в алгоритме строится матрица согласно следующим условиям:

.

Многочлен такой, что , называется -разлагающим многочленом[13].

Основной случай

Блок-схема для алгоритма Берлекэмпа — основной случай

Алгоритм факторизации над конечным полем многочлена вида:

состоит из следующих шагов:

  1. Вычисление матрицы [14].
  2. Поиск базиса подпространства решений системы линейных уравнений[15]:
    ,
    при этом удаётся выбрать вектор , так как он всегда будет присутствовать[15] в базисе пространства решений ввиду того, что при .
  3. Найденное число есть число неприводимых делителей[14] .
    • Если , то многочлен является неприводимым.
    • Если , то векторы имеют вид . По этим числам строятся -разлагающие многочлены:
      .
  4. Поиск разложения[15]:
    в виде:
    ,
    где в общем случае не являются неприводимыми. Функции факторизуются таким же способом[15], то есть:
    .

Общий случай

Блок-схема для алгоритма Берлекэмпа — сведение к основному случаю

Задача факторизации произвольного унитарного многочлена сводится к рассмотрению основного случая. Для этого вычисляется многочлен

с применением алгоритма Евклида.

  • Если то многочлен не содержит кратных корней, так как кратный корень одновременно является и корнем производной[16].
  • Если то и значит Если то для необходимо проделать описанную процедуру до тех пор пока не будет получено разложение Многочлен удовлетворяет требованиям основного случая[16].
  • Иначе, многочлен является нетривиальным делителем многочлена . В свою очередь, многочлен не имеет кратных неприводимых сомножителей[16]. Если содержит кратные сомножители, то к нему также применяется описанная процедура. Зная эти разложения, легко получить разложение .

Таким образом, задача разложения произвольного унитарного многочлена над конечным полем сводится к разложению на множители конечного числа многочленов, которые не имеют кратных неприводимых сомножителей, то есть к основному случаю[16].

Обоснование

Пусть:

, где .

Согласно китайской теореме об остатках существует единственный многочлен для любого набора элементов поля [17]:

такой что:

.

Многочлен удовлетворяет условию[17]:

,

и поэтому[18]:

.

Из условия:

,

и из взаимной простоты сомножителей в правой части следует, что каждый неприводимый делитель многочлена делит один, и только один из многочленов . Таким образом, доказана справедливость и единственность разложения[18]:

Для нахождения многочлена:

рассмотрим сравнение:

,

которое равносильно условию[17]:

.

По определению матрицы получим:

,

поэтому[17]:

.

Полученная система уравнений определяет коэффициенты -разлагающих многочленов и может быть записана в виде:

или:

[17].

Сложность алгоритма

Сложность алгоритма составляет математических операций[19]. Алгоритм будет эффективен только для небольших полей. Это связанно с необходимостью перебора всех .

Усовершенствования

  • В случае простого поля, если значение велико, то перебор значений займёт много времени. Однако, возможно определить множество , состоящее из , для которых нетривиален[20]. Для этого необходимо найти корни результанта[21] , которые и будут составлять множество .
  • Ещё один метод разложения унитарного многочлена , не имеющего кратных неприводимых множителей, основан на приведении некоторой эффективно вычислимой с помощью алгоритма Берлекэмпа матрицы A к диагональному виду[22]. Однако сам процесс диагонализации довольно сложен.
  • В работе Калтофена и Лобо[23] была предложена вероятностная версия алгоритма Берлекэмпа, позволяющая разложить на множители многочлен степени за арифметических операций. Алгоритм Калтофена — Лобо был реализован на компьютере, и оказался эффективным для многочленов высокой степени, например, для многочленов степени 10001 над полем он работает около 102,5 часов на компьютере Sun-4.

Применение

Алгоритмы факторизации многочленов важны для теории кодирования и для изучения линейных рекуррентных соотношений в конечных полях. Также алгоритм Берлекэмпа используется для вычисления группы Галуа уравнения над полем рациональных чисел и построения решений полей, разложения многочленов над кольцом целых чисел, для отыскания разложения простого рационального числа в поле алгебраических чисел, и для некоторых других вычислительных задач[24]. Алгоритмы с факторными базами используют алгоритмы факторизации многочленов для решения задачи отыскания дискретного логарифма[25], на вычислительной сложности которой, построена схема Эль-Гамаля.

Реализации в системах компьютерной алгебры

В системе компьютерной алгебры PARI/GP алгоритм Берлекэмпа может быть использован посредством команды factormod[26].

Примечания

  1. Berlekamp, 1967, с. 1854: «О циклических кодах».
  2. Berlekamp, 1967.
  3. Berlekamp, 1967, с. 1853.
  4. Голомб, Соломон Вольф. Shift Register Sequences. — Aegean Park Pr; Revised edition, 1981. — 274 с. — ISBN 978-0894120480.
  5. PETR K. Uber die Reduzibilitat eines Polynoms mit ganzzahligen Koeffi-zienten nach einem Primzahlmodul. — Casopis Pest Mat. Fys, 1937. С. 85—94.
  6. Butler, M. C. R. On the reducibility of polynomials over a finite field. — The Quarterly Journal of Mathematics Oxford Second Series 5, 1954. С. 102—107.
  7. Schwarz, St. On the reducibility of polynomials over a finite field. — Quart. J. Math. Oxford Ser.(2) 7, 1956. С. 110—124.
  8. Лидл, 1988, Исторические комментарии, с. 223-224.
  9. Cantor D.G., Zassenhaus H. A new algorithm for factoring polynomials over finite fields. — Math. Comp., 1981. — Vol. 36. — P. 587—592.
  10. von zur Gathen J., Shoup V. Computing Frobenius maps and factoring polynomials. — Comput. Complexity, 1992. Т. 2. С. 187—224.
  11. Василенко, 2003, с. 185: «Сложность алгоритма Кантора—Цассенхауза».
  12. Лидл, 1988, Постановка задачи, с. 187.
  13. Василенко, 2003, Определения, с. 172.
  14. Василенко, 2003, Описание алгоритма, с. 173.
  15. Лидл, 1988, Описание алгоритма.
  16. Лидл, 1988, Сведение к основному случаю, с. 188.
  17. Лидл, 1988, Обоснование корректности алгоритма, с. 189-190.
  18. Василенко, 2003, с. 174.
  19. Василенко, 2003, с. 174: «Сложность алгоритма».
  20. Лидл, 1988, Подробнее о методе, с. 201.
  21. Ван дер Варден, 1976, О результанте, с. 124.
  22. Лидл, 1988, Подробнее о методе, с. 206.
  23. Kaltofen E, Lobo A. Factoring high-degree polynomials by the black box Berlekamp algorithm (англ.) // Proceedings of the international symposium on Symbolic and algebraic computation (ISSAC ’94). N. Y.: ACM Press, 1994. P. 90—98. ISBN 0-89791-638-7. doi:10.1145/190347.190371.
  24. Лидл, 1988, Применение алгоритма, с. 187.
  25. Василенко, 2003, Об использовании алгоритмов с факторными базами для решения задачи дискретного логарифмирования, с. 137.
  26. Catalogue of GP/PARI Functions: Arithmetic functions Архивировано 11 марта 2007 года.

Литература

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.