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

Материал из testwiki
Перейти к навигации Перейти к поиску

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

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

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

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

Алгоритм был впервые изложен в статье «Factoring Polynomials Over Finite Fields»Шаблон:Sfn и позже воспроизведён в книге «Algebraic Coding Theory»Шаблон:Sfn. В этой работе 1967 года Шаблон:Sfn Берлекэмп пишет, что проблема факторизации возникает в трудах Голомба[1]. Однако, возможность использования матрицы B для определения числа нормированных сомножителей многочлена f(x) была впервые замечена в статье Шаблон:Нп3[2]. В статье Батлера[3] было установлено, что ранг матрицы B−E равен n−k, другое доказательство этого факта было дано Шварцем[4].

Алгоритм Берлекэмпа упоминался во множестве работШаблон:Sfn и являлся основным алгоритмом решения проблемы факторизации до появления в 1981 году Шаблон:Нп3[5]. Была разработана техника[6] позволяющая разложить многочлен на множители за O(n(ω+1)/2+o(1)+n1+o(1)log⁡q), где ω — показатель в оценке сложности перемножения квадратных матрицШаблон:Sfn.

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

Рассматривается задача факторизации многочлена f(x) степени n (n≥2) над конечным полем 𝔽q (q=pm, p — простое число)Шаблон:Sfn на различные неприводимые унитарные многочлены f(x)=f1(x)e1⋯fk(x)ek.

Для использования в алгоритме строится матрица B=(bij)i=0,j=0n−1,n−1 согласно следующим условиям:

xiq≡∑j=0n−1bijxj(modf(x))i=0,n−1‾.

Многочлен h(x)∈𝔽q[x] такой, что 1⩽deg⁡h(x)<n,h(x)q≡h(x)(modf(x)), называется f-разлагающим многочленомШаблон:Sfn.

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

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

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

f(x)=f1(x)⋯fk(x)

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

  1. Вычисление матрицы BШаблон:Sfn.
  2. Поиск базиса e1‾,…,ek‾ подпространства решений системы линейных уравненийШаблон:Sfn:
    (B−En)T𝐱=𝟎,
    при этом удаётся выбрать вектор e1‾=(1,0,....,0), так как он всегда будет присутствоватьШаблон:Sfn в базисе пространства решений ввиду того, что xiq≡1(modf(x)) при i=0.
  3. Найденное число k есть число неприводимых делителейШаблон:Sfn f(x).
    • Шаблон:ЯкорьЕсли k=1, то многочлен является неприводимым.
    • Если k>1, то векторы el‾ имеют вид (hl,0,…,hl,n−1). По этим числам строятся f-разлагающие многочлены:
      hl(x)=∑i=0n−1hl,ixi,l=2,k‾,h1(x)=1..
  4. Поиск разложенияШаблон:Sfn:
    f(x)=∏c∈𝔽q,gcd⁡(f(x),h2(x)−c)
    в виде:
    f(x)=∏mgm,2(x),
    где gm,s(x),s=2,k‾ в общем случае не являются неприводимыми. Функции gm,s(x) факторизуются таким же способомШаблон:Sfn, то есть:
    gm,s(x)=∏c∈𝔽q,gcd⁡(gm,s(x),hs+1(x)−c),s=2,k−1‾.

Общий случай

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

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

d(x)=gcd⁡(f(x),f'(x))

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

  • Если d(x)=1, то многочлен не содержит кратных корней, так как кратный корень одновременно является и корнем производнойШаблон:Sfn.
  • Если d(x)=f(x), то f'(x)=0, и значит f(x)=g(x)p,g(x)∈𝔽q[x]. Если g'(x)=0, то для g(x) необходимо проделать описанную процедуру до тех пор пока не будет получено разложение f(x)=h(x)ps,h'(x)≠0. Многочлен h(x) удовлетворяет требованиям основного случаяШаблон:Sfn.
  • Иначе, многочлен d(x) является нетривиальным делителем многочлена f(x). В свою очередь, многочлен f(x)d(x) не имеет кратных неприводимых сомножителейШаблон:Sfn. Если d(x) содержит кратные сомножители, то к нему также применяется описанная процедура. Зная эти разложения, легко получить разложение f(x).

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

Обоснование

Пусть:

f(x)=f1(x)e1⋯fk(x)ek, где ei=1,i=1,k‾.

Согласно китайской теореме об остатках существует единственный многочлен для любого набора (c1,...,ck) элементов поля 𝔽qШаблон:Sfn:

h(x)∈𝔽q[x],

такой что:

h(x)≡ci(modfi(x)),i=1,k‾,deg⁡h(x)<deg⁡f(x).

Многочлен h(x) удовлетворяет условиюШаблон:Sfn:

h(x)≡ci≡ciq≡h(x)q(modfi(x)),i=1,k‾,

и поэтомуШаблон:Sfn:

h(x)q≡h(x)(modf(x)),deg⁡h(x)<degf(x).

Из условия:

h(x)q−h(x)=∏c∈𝔽q(h(x)−c)≡0(modf(x)),

и из взаимной простоты сомножителей в правой части следует, что каждый неприводимый делитель многочлена f(x) делит один, и только один из многочленов h(x)−c. Таким образом, доказана справедливость и единственность разложенияШаблон:Sfn:

f(x)=∏c∈𝔽qgcd⁡(f(x),h(x)−c).

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

h(x)=a0+a1x1+…+an−1xn−1∈𝔽q

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

h(x)q≡h(x)(modf(x)),

которое равносильно условиюШаблон:Sfn:

∑i=0n−1aixiq≡∑i=0n−1aixi(modf(x)).

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

∑i=0n−1ai∑j=0n−1bijxj=∑i=0n−1aixi,

поэтомуШаблон:Sfn:

∑i=0n−1aibij=aj,j=0,n−1‾.

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

(a0,a1,...,an−1)B=(a0,a1,...,an−1)

или:

(a0,a1,...,an−1)(B−En)=𝟎Шаблон:Sfn.

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

Сложность алгоритма составляет O(n3+qkn) математических операцийШаблон:Sfn. Алгоритм будет эффективен только для небольших полей. Это связано с необходимостью перебора всех c∈𝔽q.

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

  • В случае простого поля, если значение p велико, то перебор значений c∈ℤ/pℤ займёт много времени. Однако, возможно определить множество M, состоящее из c, для которых gcd⁡(f(x),h(x)−c) нетривиаленШаблон:Sfn. Для этого необходимо найти корни результантаШаблон:Sfn R(c), которые и будут составлять множество M.
  • Ещё один метод разложения унитарного многочлена f(x)∈GF(q)[x], не имеющего кратных неприводимых множителей, основан на приведении некоторой эффективно вычислимой с помощью алгоритма Берлекэмпа матрицы A к диагональному видуШаблон:Sfn. Однако сам процесс диагонализации довольно сложен.
  • В работе Калтофена и Лобо[7] была предложена вероятностная версия алгоритма Берлекэмпа, позволяющая разложить на множители многочлен f(x)∈GF(q)[x] степени n за O((nlog⁡n+log⁡q)⋅n(log⁡n)log⁡(log⁡n)) арифметических операций. Алгоритм Калтофена — Лобо был реализован на компьютере, и оказался эффективным для многочленов высокой степени, например, для многочленов степени 10001 над полем ℤ/127ℤ он работает около 102,5 часов на компьютере Sun-4.

Применение

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

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

В системе компьютерной алгебры Шаблон:Iw алгоритм Берлекэмпа может быть использован посредством команды factormod[8].

Примечания

Шаблон:Примечания

Литература