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

Материал из testwiki
Версия от 19:48, 30 декабря 2024; imported>РобоСтася (top: шаблон после пунктуации, replaced: {{Переход|#Проверка неприводимости}}. → .{{переход|#Проверка неприводимости})
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

xiqj=0n1bijxj(modf(x))i=0,n1.

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

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

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

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

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

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

  1. Вычисление матрицы BШаблон:Sfn.
  2. Поиск базиса e1,,ek подпространства решений системы линейных уравненийШаблон:Sfn:
    (BEn)T𝐱=𝟎,
    при этом удаётся выбрать вектор e1=(1,0,....,0), так как он всегда будет присутствоватьШаблон:Sfn в базисе пространства решений ввиду того, что xiq1(modf(x)) при i=0.
  3. Найденное число k есть число неприводимых делителейШаблон:Sfn f(x).
    • Шаблон:ЯкорьЕсли k=1, то многочлен является неприводимым.
    • Если k>1, то векторы el имеют вид (hl,0,,hl,n1). По этим числам строятся f-разлагающие многочлены:
      hl(x)=i=0n1hl,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,k1.

Общий случай

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

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

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)e1fk(x)ek, где ei=1,i=1,k.

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

h(x)𝔽q[x],

такой что:

h(x)ci(modfi(x)),i=1,k,degh(x)<degf(x).

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

h(x)ciciqh(x)q(modfi(x)),i=1,k,

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

h(x)qh(x)(modf(x)),degh(x)<degf(x).

Из условия:

h(x)qh(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++an1xn1𝔽q

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

h(x)qh(x)(modf(x)),

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

i=0n1aixiqi=0n1aixi(modf(x)).

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

i=0n1aij=0n1bijxj=i=0n1aixi,

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

i=0n1aibij=aj,j=0,n1.

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

(a0,a1,...,an1)B=(a0,a1,...,an1)

или:

(a0,a1,...,an1)(BEn)=𝟎Шаблон: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((nlogn+logq)n(logn)log(logn)) арифметических операций. Алгоритм Калтофена — Лобо был реализован на компьютере, и оказался эффективным для многочленов высокой степени, например, для многочленов степени 10001 над полем /127 он работает около 102,5 часов на компьютере Sun-4.

Применение

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

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

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

Примечания

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

Литература