Interested Article - Алгоритм Берлекэмпа — Рабина

Элвин Берлекэмп

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

История

Михаэль Ошер Рабин

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

В алгоритме Берлекэмпа многочлен сперва представляется в виде произведения , где — произведение многочленов степени . Затем факторизация каждого такого многочлена степени сводится к поиску корней нового многочлена степени . В статье, вводящей алгоритм факторизации, было также предложено три метода для поиска корней многочлена в поле Галуа . Первые два сводят нахождение корней в поле к поиску корней в поле . Третий метод, являющийся предметом данной статьи, решает задачу поиска корней в поле , что вместе с двумя другими решает задачу факторизации .

Версия алгоритма факторизации, предложенная Берлекэмпом в его первой работе в 1967 г. , работала за , где — количество неприводимых сомножителей многочлена. Таким образом, алгоритм являлся неполиномиальным и был непрактичным в случае, когда простое число было достаточно большим. В 1969 г. эта проблема была решена , показавшим, как свести узкое место алгоритма к задаче поиска корней некоторого многочлена . В 1970 г. статья Берлекэмпа была переиздана уже с учётом решений Цассенхауза .

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

В первом издании второго тома « Искусства программирования » про получисленные алгоритмы Дональд Кнут пишет, что аналогичные процедуры факторизации были известны к 1960 г., однако редко встречались в открытом доступе . Один из первых опубликованных примеров использования метода можно обнаружить в работе Голомба , и от 1959 года о факторизации трёхчленов над , где рассматривался частный случай .

Алгоритм

Постановка задачи

Пусть — нечётное простое число. Рассмотрим многочлен над полем остатков по модулю . Необходимо найти все числа такие что для всех возможных .

Рандомизация

Пусть . Нахождение всех корней такого многочлена равносильно его разбиению на линейные множители. Чтобы найти такое разбиение, достаточно научиться разбивать многочлен на любые два множителя, а затем запускаться в них рекурсивно. Для этого вводится в рассмотрение многочлен , где — случайное число из . Если такой многочлен можно представить в виде произведения , то в терминах исходного многочлена это значит, что , что даёт разбиение на множители исходного многочлена .

Классификация элементов

По критерию Эйлера для любого монома выполнено ровно одно из следующих свойств :

  1. Одночлен равен , если ,
  2. Одночлен делит , если квадратичный вычет по модулю ,
  3. Одночлен делит , если — квадратичный невычет по этому модулю.

Таким образом, если не делится на , что можно проверить отдельно, то равно произведению наибольших общих делителей и .

Метод Берлекэмпа

Написанное выше приводит к следующему алгоритму :

  1. В явном виде вычисляются коэффициенты многочлена ,
  2. Вычисляются остатки от деления на последовательным возведением в квадрат и взятием остатка от ,
  3. Двоичным возведением в степень вычисляется остаток от деления на с использованием посчитанных на прошлом шаге многочленов,
  4. Если , то указанные выше дают нетривиальное разбиение на множители,
  5. В противном случае все корни являются вычетами или невычетами одновременно и стоит попробовать другое значения .

Если также делится на некоторый многочлен , не имеющий корней в , то при подсчёте с и будет получено разбиение бесквадратного многочлена на нетривиальные сомножители, поэтому алгоритм позволяет найти все корни любых многочленов над , а не только тех, которые разбиваются в произведение мономов .

Извлечение квадратного корня

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

  1. НОД равен , из чего следует, что и являются квадратичными невычетами одновременно,
  2. НОД равен , из чего следует, что оба числа являются квадратичными вычетами,
  3. НОД равен одночлену , из чего следует, что ровно одно число из двух является квадратичным вычетом.

В третьем случае полученный одночлен должен быть равен или , или . Это позволяет записать решение в виде .

Пример

Пусть нужно решить сравнение . Для этого нужно факторизовать . Рассмотрим возможные значения :

  1. Пусть . Тогда , откуда . Оба числа являются невычетами и нужно брать другое .
  1. Пусть . Тогда , откуда . Отсюда , значит и .

Проверка показывает, что действительно и .

Обоснование метода

Алгоритм находит разбиение на нетривиальные множители во всех случаях, за исключением тех, в которых все числа являются вычетами или невычетами одновременно. Согласно , вероятность такого события для случая, когда сами одновременно являются вычетами или невычетами одновременно (то есть, когда не подходит для нашей процедуры), можно оценить как , где — количество различных чисел среди . Таким образом, вероятность ошибки алгоритма не превосходит .

Применение к факторизации многочленов

Из теории конечных полей известно, что если степень неприводимого многочлена равна , то такой многочлен является делителем и не является делителем для .

Таким образом, последовательно рассматривая многочлены где и для , можно разбить многочлен на множители вида , где — это произведение всех неприводимых многочленов степени , которые делят многочлен . Зная степень , можно определить количество таких многочленов, равное . Пусть . Если рассмотреть многочлен , где , то порядок такого многочлена в поле должен делить число . Если не делится на , то многочлен делится на , но не на .

Исходя из этого предложил искать делители многочлена в виде , где — некоторый достаточно большой делитель , например, . В частном случае получается в точности метод Берлекэмпа как он описан выше .

Время работы

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

  1. Учитывая, что по формуле бинома Ньютона , переход от к делается за ,
  2. Произведение многочленов и взятие остатка от одного многочлена по модулю другого делается за , поэтому вычисление делается за ,
  3. Аналогично предыдущему пункту, двоичное возведение в степень делается за ,
  4. Взятие от двух многочленов по алгоритму Евклида делается за .

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

Примечания

  1. Berlekamp E. R. (англ.) // Mathematics of Computation. — 1970. — Vol. 24 , iss. 111 . — P. 730—732 . — ISSN . — doi : .
  2. Rabin M. (англ.) // SIAM Journal on Computing. — 1980. — 1 May ( vol. 9 , iss. 2 ). — P. 273—280 . — ISSN . — doi : . 23 июня 2019 года.
  3. Berlekamp E. R. (англ.) // The Bell System Technical Journal. — 1967. — October ( vol. 46 , iss. 8 ). — P. 1853—1859 . — ISSN . — doi : . 17 февраля 2019 года.
  4. Knuth D. E. (англ.) . — Reading, Massachusetts: Addison-Wesley Publishing Company, 1968. — Vol. 2. — P. 381—390. — 624 p. — ISBN 0-201-03802-1 . 3 августа 2019 года.
  5. Sze T. W. (англ.) // Mathematics of Computation. — 2011. — 3 January ( vol. 80 , iss. 275 ). — P. 1797—1811 . — ISSN . — doi : .
  6. Peralta R. (англ.) // IEEE Transactions on Information Theory. — 1986. — November ( vol. 32 , iss. 6 ). — P. 846—847 . — ISSN . — doi : . 30 июня 2019 года.
  7. Padró C., Sáez G. (англ.) // Applied Mathematics Letters. — 2002. — August ( vol. 15 , iss. 6 ). — P. 703—708 . — ISSN . — doi : .
  8. Ben-Or M. (англ.) // 22nd Annual Symposium on Foundations of Computer Science (sfcs 1981). — 1981. — October. — P. 394—398 . — doi : . 29 июля 2019 года.
  9. Camion P. (англ.) // Combinatorial Mathematics, Proceedings of the International Colloquium on Graph Theory and Combinatorics. — Elsevier, 1983. — P. 149—157 . — ISBN 9780444865120 .
  10. Grenet B., van der Hoeven J., Lecerf G. (англ.) // Applicable Algebra in Engineering, Communication and Computing. — 2015. — Vol. 27 , iss. 3 . — P. 239 . — ISSN . — doi : .
  11. Golomb S. W., Hales A., Welch L. R. (англ.) // Shift Register Sequences. — World Scientific, 2017. — March. — P. 90—108. — ISBN 978-981-4632-00-3 . — doi : .
  12. Menezes A. J., Blake I. F., Gao X. H., Mullin R. C., Vanstone S. A. (англ.) . — Springer US, 1993. — P. 22—26. — 218 p. — (The Springer International Series in Engineering and Computer Science). — ISBN 9780792392828 . 30 июня 2019 года.


Источник —

Same as Алгоритм Берлекэмпа — Рабина