В математике , в частности, в вычислительной алгебре , алгоритм Берлекэмпа — это хорошо известный метод факторизации многочленов над конечными полями (также известными как поля Галуа ). Алгоритм в основном состоит из редукции матриц и вычисления НОД полиномов . Он был изобретен Элвином Берлекэмпом в 1967 году. Он был доминирующим алгоритмом для решения задачи до алгоритма Кантора–Цассенхауза 1981 года. В настоящее время он реализован во многих известных системах компьютерной алгебры .
Алгоритм Берлекэмпа принимает в качестве входных данных бесквадратный многочлен (т.е. многочлен без повторяющихся множителей) степени с коэффициентами в конечном поле и дает в качестве выходных данных многочлен с коэффициентами в том же поле, такой что делит . Затем алгоритм можно применять рекурсивно к этим и последующим делителям, пока мы не найдем разложение на степени неприводимых многочленов (напоминая, что кольцо многочленов над конечным полем является уникальной областью факторизации ).
Все возможные факторы содержатся внутри факторного кольца
Алгоритм фокусируется на многочленах , которые удовлетворяют условию сравнения:
Эти многочлены образуют подалгебру R (которую можно рассматривать как -мерное векторное пространство над ), называемую подалгеброй Берлекэмпа . Подалгебра Берлекэмпа представляет интерес, поскольку содержащиеся в ней многочлены удовлетворяют
В общем случае не каждый НОД в приведенном выше произведении будет нетривиальным множителем , но некоторые из них являются таковыми, обеспечивая искомые нами множители.
Алгоритм Берлекэмпа находит многочлены, подходящие для использования с указанным выше результатом, вычисляя базис для подалгебры Берлекэмпа. Это достигается посредством наблюдения, что подалгебра Берлекэмпа на самом деле является ядром некоторой матрицы над , которая выводится из так называемой матрицы Берлекэмпа многочлена, обозначаемой . Если то — коэффициент при -ом степенном члене в сокращении по модулю , т.е.:
Скажем, с определенным многочленом :
мы можем связать вектор-строку:
Сравнительно просто увидеть, что вектор-строка соответствует, таким же образом, сокращению по модулю . Следовательно, полином находится в подалгебре Берлекэмпа тогда и только тогда, когда (где — единичная матрица ), т.е. тогда и только тогда, когда он находится в нулевом пространстве .
Вычислив матрицу и приведя ее к форме сокращенного ступенчатого ряда , а затем легко считывая базис для нулевого пространства, мы можем найти базис для подалгебры Берлекэмпа и, следовательно, построить в нем многочлены. Затем нам нужно последовательно вычислить НОД приведенной выше формы, пока мы не найдем нетривиальный множитель. Поскольку кольцо многочленов над полем является евклидовой областью , мы можем вычислить эти НОД, используя евклидов алгоритм .
С некоторой абстрактной алгеброй идея алгоритма Берлекэмпа становится концептуально ясной. Мы представляем конечное поле , где для некоторого простого числа , как . Мы можем предположить, что оно свободно от квадратов, взяв все возможные корни p-й степени и затем вычислив gcd с его производной.
Теперь предположим, что это разложение на неприводимые. Тогда у нас есть изоморфизм колец, , заданный китайской теоремой об остатках. Ключевое наблюдение состоит в том, что автоморфизм Фробениуса коммутирует с , так что если мы обозначим , то ограничивается изоморфизмом . Согласно теории конечных полей, всегда является простым подполем этого расширения поля. Таким образом, имеет элементы тогда и только тогда, когда является неприводимым.
Более того, мы можем использовать тот факт, что автоморфизм Фробениуса является -линейным для вычисления фиксированного множества. То есть, мы замечаем, что является -подпространством, и явный базис для него может быть вычислен в кольце полиномов путем вычисления и установления линейных уравнений на коэффициенты полиномов, которые выполняются тогда и только тогда, когда он фиксирован Фробениусом. Мы замечаем, что на этом этапе у нас есть эффективно вычислимый критерий неприводимости, и оставшийся анализ показывает, как использовать его для нахождения факторов.
Алгоритм теперь распадается на два случая:
Более подробную информацию можно получить здесь. [1]
Одним из важных приложений алгоритма Берлекэмпа является вычисление дискретных логарифмов над конечными полями , где является простым числом и . Вычисление дискретных логарифмов является важной проблемой в криптографии с открытым ключом и кодировании с контролем ошибок . Для конечного поля самым быстрым известным методом является метод исчисления индексов , который включает факторизацию элементов поля. Если мы представим поле обычным способом — то есть как многочлены над базовым полем , приведенные по модулю неприводимого многочлена степени — то это просто факторизация многочлена, как это предусмотрено алгоритмом Берлекэмпа.
Доступ к алгоритму Берлекэмпа можно получить в пакете PARI/GP с помощью команды factormod и на веб-сайте WolframAlpha [1].