Алгоритм Берлекэмпа — Рабина
Метод Берлекэмпа — вероятностный метод нахождения корней многочленов над полем с полиномиальной сложностью. Метод был описан Берлекэмпом в 1970 году[1] в качестве побочного к алгоритму факторизации многочленов над конечными полями и позже доработан Рабином для случая произвольных конечных полей в 1979 году[2]. До Берлекэмпа метод был независимо открыт некоторыми другими исследователями[3].
История
Метод был предложен Элвином Берлекэмпом в его работе[1] по факторизации многочленов над конечными полями. При этом в оригинальной работе отсутствовало доказательство корректности алгоритма[2]. Алгоритм был доработан и обобщён на случай произвольных конечных полей Михаэлем Рабином[2]. В 1986 году Рене Перальта описал похожий алгоритм[4], решающий задачу нахождения квадратного корня в поле [5]. В 2000 году метод Перальты был обобщён для решения кубических уравнений[6].
Постановка задачи
Пусть — нечётное простое число. Рассмотрим многочлен над полем остатков по модулю . Необходимо найти все числа такие что для всех возможных [2][7].
Описание алгоритма
Рандомизация
Пусть . Нахождение всех корней такого многочлена равносильно его разбиению на линейные множители. Чтобы найти такое разбиение, достаточно научиться разбивать многочлен на любые два множителя, а затем запускаться в них рекурсивно. Для этого вводится в рассмотрение многочлен , где — случайное число из . Если такой многочлен можно представить в виде произведения , то в терминах исходного многочлена это значит, что , что даёт разбиение на множители исходного многочлена [1][7].
Классификация элементов
По критерию Эйлера для любого монома выполнено ровно одно из следующих свойств[1]:
- Одночлен равен если ,
- Одночлен делит если — квадратичный вычет по модулю ,
- Одночлен делит если — квадратичный невычет по этому модулю.
Таким образом, если не делится на , что можно проверить отдельно, то равно произведению наибольших общих делителей и [7].
Метод Берлекэмпа
Написанное выше приводит к следующему алгоритму[1]:
- В явном виде вычисляются коэффициенты многочлена ,
- Вычисляются остатки от деления на последовательным возведением в квадрат и взятием остатка от ,
- Двоичным возведением в степень вычисляется остаток от деления на с использованием посчитанных на прошлом шаге многочленов,
- Если , то указанные выше дают нетривиальное разбиение на множители,
- В противном случае все корни являются вычетами или невычетами одновременно и стоит попробовать другое значения .
Если также делится на некоторый многочлен , не имеющий корней в , то при подсчёте с и будет получено разбиение бесквадратного многочлена на нетривиальные сомножители, поэтому алгоритм позволяет найти все корни любых многочленов над , а не только тех, которые разбиваются в произведение мономов[7].
Извлечение квадратного корня
Пусть нужно решить сравнение , решениями которого являются элементы и соответственно. Их нахождение эквивалентно факторизации многочлена над полем . В таком частном случае задача упрощается, так как для решения достаточно посчитать только . Для полученного многочлена будет верно ровно одно из утверждений:
- НОД равен , из чего следует, что и являются квадратичными невычетами одновременно,
- НОД равен , из чего следует, что оба числа являются квадратичными вычетами,
- НОД равен одночлену , из чего следует, что ровно одно число из двух является квадратичным вычетом.
В третьем случае полученный одночлен должен быть равен или , или . Это позволяет записать решение в виде [1].
Пример
Пусть нужно решить сравнение . Для этого нужно факторизовать . Рассмотрим возможные значения :
- Пусть . Тогда , откуда . Оба числа являются невычетами и нужно брать другое .
- Пусть . Тогда , откуда . Отсюда , значит и .
Проверка показывает, что действительно и .
Обоснование метода
Алгоритм находит разбиение на нетривиальные множители во всех случаях, за исключением тех, в которых все числа являются вычетами или невычетами одновременно. Согласно теории циклотомии[8] вероятность такого события для случая когда сами одновременно являются вычетами или невычетами одновременно (то есть, когда не подходит для нашей процедуры), можно оценить как , где — количество различных чисел среди [1]. Таким образом, даже для худшего для такой оценки случая и многочлена вероятность ошибки не превосходит , а для случая, когда алгоритм применяется для нахождения корня из квадратичного вычета, вероятность ошибки можно оценить сверху как .
Время работы
Поэтапно время работы одной итерации алгоритма можно оценить следующим образом, считая степень многочлена равной :
- Учитывая, что по формуле бинома Ньютона, переход от к делается за ,
- Произведение многочленов и взятие остатка от одного многочлена по модулю другого делается за , поэтому вычисление делается за ,
- Аналогично предыдущему пункту, двоичное возведение в степень делается за ,
- Взятие от двух многочленов по алгоритму Евклида делается за .
Таким образом, вся процедура может быть произведена за время . Используя быстрое преобразование Фурье и Half-GCD алгоритм[9], можно улучшить время работы алгоритма до . В частном случае извлечения квадратного корня величина равна двум, поэтому время работы оценивается как на одну итерацию алгоритма[7].
Примечания
- ↑ 1 2 3 4 5 6 7 E. R. Berlekamp. Factoring polynomials over large finite fields (англ.) // Mathematics of Computation. — 1970. — Vol. 24, iss. 111. — P. 713–735. — ISSN 1088-6842 0025-5718, 1088-6842. — doi:10.1090/S0025-5718-1970-0276200-X.
- ↑ 1 2 3 4 M. Rabin. Probabilistic Algorithms in Finite Fields // SIAM Journal on Computing. — 1980-05-01. — Т. 9, вып. 2. — С. 273–280. — ISSN 0097-5397. — doi:10.1137/0209024.
- ↑ Donald E Knuth. The art of computer programming. Vol. 2 Vol. 2. — 1998. — ISBN 9780201896848.
- ↑ Tsz-Wo Sze. On taking square roots without quadratic nonresidues over finite fields // Mathematics of Computation. — 2011-01-03. — Т. 80, вып. 275. — С. 1797–1811. — ISSN 1088-6842 0025-5718, 1088-6842. — doi:10.1090/s0025-5718-2011-02419-1.
- ↑ R. Peralta. A simple and fast probabilistic algorithm for computing square roots modulo a prime number (Corresp.) // IEEE Transactions on Information Theory. — 1986-11. — Т. 32, вып. 6. — С. 846–847. — ISSN 0018-9448. — doi:10.1109/TIT.1986.1057236.
- ↑ C Padró, G Sáez. Taking cube roots in Zm // Applied Mathematics Letters. — 2002-08. — Т. 15, вып. 6. — С. 703–708. — ISSN 0893-9659. — doi:10.1016/s0893-9659(02)00031-9.
- ↑ 1 2 3 4 5 Alfred J. Menezes, Ian F. Blake, XuHong Gao, Ronald C. Mullin, Scott A. Vanstone. Applications of Finite Fields. — Springer US, 1993. — (The Springer International Series in Engineering and Computer Science). — ISBN 9780792392828.
- ↑ Marshall Hall. Combinatorial Theory. — John Wiley & Sons, 1998-07-16. — 464 с. — ISBN 9780471315186.
- ↑ Aho, Alfred V. The design and analysis of computer algorithms. — Addison-Wesley Pub. Co, [1974]. — ISBN 0201000296, 9780201000290.
Статья является кандидатом в добротные статьи с 26 июля 2019. |