- •Предисловие
- •Тестирование чисел на простоту и построение больших простых чисел
- •Введение
- •Элементарные методы проверки простоты чисел
- •Тесты на простоту для чисел специального вида
- •Алгоритм Миллера
- •Вероятностные тесты на простоту
- •Современные методы проверки простоты чисел
- •Заключение. Детерминированный полиномиальный алгоритм проверки простоты чисел
- •Факторизация целых чисел с экспоненциальной сложностью
- •Введение. Метод Ферма
- •101.21.2(P-1)-метод Полларда
- •Алгоритм Ленстры
- •101.21.2(P+1)-метод Уильямса и его обобщения
- •Методы Шэнкса
- •Прочие методы. Заключение
- •Факторизация целых чисел с субэкспоненциальной сложностью
- •Введение
- •Метод Диксона. Дополнительные стратегии
- •Квадратичное решето
- •Алгоритмы решета числового поля
- •Заключение
- •Алгоритм Ленстры для факторизации целых чисел с помощью эллиптических кривых
- •Вычисление порядка группы точек эллиптической кривой над конечным полем
- •Тестирование чисел на простоту с помощью эллиптических кривых
- •Заключение
- •Алгоритмы дискретного логарифмирования
- •Введение. Детерминированные методы
- •Дискретное логарифмирование в полях Галуа
- •Дискретное логарифмирование и решето числового поля
- •Частное Ферма и дискретное логарифмирование по составному модулю
- •Заключение
- •Факторизация многочленов над конечными полями
- •Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях
- •Решение квадратных уравнений
- •Алгоритм Берлекэмпа
- •Некоторые другие усовершенствования алгоритма Берлекэмпа
- •Заключение
- •Приведенные базисы решеток и их приложения
- •Введение. Решетки и базисы
- •LLL-приведенный базис и его свойства
- •Алгоритм построения LLL-приведенного базиса решетки
- •Некоторые приложения LLL-алгоритма
- •Заключение
- •Введение
- •LLL-алгоритм факторизации: разложение по простому модулю
- •LLL-алгоритм факторизации: использование решеток
- •LLL-алгоритм факторизации: подъем разложения
- •LLL-алгоритм факторизации: полное описание
- •Практичный алгоритм факторизации
- •Факторизация многочленов с использованием приближенных вычислений
- •Заключение
- •Введение. Дискретное преобразование Фурье и его свойства
- •Заключение
- •Целочисленная арифметика многократной точности
- •Введение. Сложение и вычитание
- •Умножение
- •Деление
- •Решение систем линейных уравнений над конечными полями
- •Введение
- •Решение систем линейных уравнений в целых числах
- •Гауссово и структурированное гауссово исключение
- •Алгоритм Ланцоша
- •Алгоритм Видемана
- •Другие методы. Заключение
Глава 6. Факторизация многочленов над конечными полями
§6.1. Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях
В данной главе мы рассматриваем алгоритмы разложения на множители многочленов над конечными полями, а также некоторые методы решения алгебраических уравнений в конечных полях.
Пусть p — простое число, p > 2, f(x) GF(p) [x], deg f(x) = n 2. Рассмотрим вероятностный алгоритм решения уравнения f(x) = 0 в поле GF(p).
Алгоритм решения f(x) =0 в GF(p). 1 шаг. Вычислить
g(x) = НОД(f(x), xp − x) GF(p) [x].
Заметим, что все корни f(x) в GF(p) являются корнями многочлена g(x) кратности 1, и других корней у g(x) нет. Если deg g(x) = 0, то корней у f(x) в GF(p) нет. Если deg g(x) = 1, g(x) = x − a, то a — единственный корень f(x) в поле GF(p) (без учета кратности). Если deg g(x) = p, то все элементы GF(p) являются корнями f(x). Далее мы предполагаем, что 2 deg g(x) < p, и ищем корни g(x) в GF(p).
2 шаг. Случайным образом выбрать элемент GF(p) и вычислить
p−1 d(x) = НОД (x + ) 2 − 1, g(x) .
3 шаг. Если d(x) = 1 или d(x) = g(x), то вернуться на шаг 2. Если deg d(x) = 1, d(x) = x − b, то b — корень многочлена f(x); мы заносим его в список найденных корней, заменяем g(x) на g(x)/(x − b) и возвращаемся на шаг 2. Аналогично, при deg d(x) = deg g(x) − 1 мы находим
x − b = , заносим b в список корней, заменяем g(x) на d(x) и воз-
вращаемся на 2-й шаг. Если 2 deg d(x) < deg g(x) − 1, то мы рассматриваем вместо g(x) два его делителя — многочлены d(x) и g(x)/d(x),
§ 6.1. Введение. Вероятностный алгоритм решения уравнений в конечных полях 163
и к каждому из них мы применяем 2 и 3 шаги алгоритма, чтобы найти их корни.
Конец алгоритма.
Теорема 6.1. Если g(x) GF(p) [x], 2 deg g(x) < p и g(x) | xp − x, то при случайном выборе на 2-м шаге с вероятностью, не мень-
шей, чем 12 − 21p, будет выполнено неравенство 1 deg d(x) <
< deg g(x).
Доказательство. Пусть a1, a2 GF(p), a1 = a2, g(a1) = g(a2) = 0. Пусть = −a1, = −a2. Тогда
|
|
|
|
|
|
p−1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Если |
|
(ai + ) |
2 − 1 равно 0 или −2 |
при |
|
i = 1, 2. |
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
p−1 |
|
|
|
|
|
|
p−1 |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
(a1 + ) 2 − 1 = (a2 + ) 2 − 1, |
|
|
|
|
|
|
|
||||||||||||||||||
то |
ровно |
одно из |
чисел a1, a2 |
является |
корнем d(x) |
и |
|
поэтому |
||||||||||||||||||||||
1 deg d(x) < deg g(x). Теперь предположим, что = −a1, −a2, и |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
p−1 |
|
|
|
|
|
|
p−1 |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
(a1 + ) 2 − 1 = (a2 + ) 2 − 1 |
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p−1 |
|
|
p−1 |
|
|||||||
Такие являются корнями многочлена (x + a1) |
2 − (x + a2) |
|
2 , ко- |
|||||||||||||||||||||||||||
торый имеет степень |
p −2 |
1 |
− 1. |
Поэтому, |
если |
мы рассмотрим все |
||||||||||||||||||||||||
|
|
( ), то не более чем для 2 |
+ |
p − 1 |
− |
1 |
= |
|
p + 1 |
элементов много |
- |
|||||||||||||||||||
|
|
|||||||||||||||||||||||||||||
|
GF p |
|
|
|
|
|
|
|
|
|
2 |
|
2 |
|
|
|
|
|
|
|
|
|
||||||||
член d(x) может не удовлетворять неравенству 1 |
deg d(x) < deg g(x). |
|||||||||||||||||||||||||||||
Отсюда следует утверждение теоремы. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
Теорема 6.2. В условиях теоремы 6.1 обозначим через k сте- |
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
1 |
; |
|||||
пень deg g(x); тогда вероятность будет равна 1 − |
|
+ O √ |
|
|||||||||||||||||||||||||||
2k−1 |
||||||||||||||||||||||||||||||
p |
||||||||||||||||||||||||||||||
постоянная в O(·) зависит от k. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Лемма 6.3. Пусть g(x) = i=1 |
(x − ai), где ai GF(p), ai |
различны; |
||||||||||||||||||||||||||
пусть |
, . . . , |
k — |
какой-либо фиксированный набор из |
|
|
1. Рас- |
||||||||||||||||||||||||
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
± |
|
|
|
|
||||||
смотрим , удовлетворяющие условиям |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
0 p − 1, |
|
|
ai |
+ |
= i, |
|
i = 1, . . . , k. |
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
|
|
Тогда количество таких равно N = 2pk + O(√p), где постоянная в O(·) зависит от k.
11*
164 Гл. 6. Факторизация многочленов над конечными полями
Выведем теорему 6.2 из |
леммы. Пусть 0 p − 1, = −ai, |
|
i = 1, . . . , k. Предположим, что deg d(x) = 0. Тогда |
||
p−1 |
|
|
(ai + ) 2 − 1 = 0, |
i = 1, . . . , k. |
|
Следовательно, |
|
|
p−1 |
= −1, |
|
(ai + ) 2 |
i = 1, . . . , k, |
т. е. 1 = . . . = k = −1. Теперь рассмотрим случай deg d(x) = k. Тогда аналогично получаем, что
p−1 |
|
(ai + ) 2 |
= 1, i = 1, . . . , k, |
откуда 1 = . . . = k = 1. Таким |
образом, среди всех значений ко- |
личество тех , для которых 1 deg d(x) < k, будет по лемме равно
p |
|
k |
|
2 |
|
|
p |
+ O(√ |
|
) . Отсюда следует утверждение теоремы 6.2. |
|||||||||||
− |
− |
|
|
p |
|||||||||||||||||
|
|
2k |
|||||||||||||||||||
|
Доказательство. Пусть a |
— |
фиксированный квадратичный невы- |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
чет по модулю p. Положим di |
= a, если i = −1, и di = 1, если i = 1. |
||||||||||||||||||||
Рассмотрим систему уравнений |
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
y. |
2 |
|
|
|
|
(.x. .+. .a.1.). .(mod. . . . .p. ),. . |
|||
|
|
|
|
|
|
|
|
|
|
|
|
1. .≡. .d. |
1. |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
d |
|
(x + a ) (mod p), |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
y |
k ≡ |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k |
|
|
k |
|||
относительно неизвестных |
x |
, |
y1, . . . , yk Z/pZ. Обозначим для крат- |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
d |
|
|
|
|
|
||||||
кости (d) = |
|
. Уравнение y2 ≡ d (mod p) имеет 1 + (d) решений. |
|||||||||||||||||||
|
p |
||||||||||||||||||||
Поэтому |
число решений системы равно |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
p−1 |
|
k |
|
(1 + (di (x + ai))) = |
|
|
|||||||||||||
M = |
|
|
|
|
|
|
|
||||||||||||||
|
|
|
=0 i=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
x |
|
p−1 |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
= |
|
|
|
(d1 (x + a1))l1 . . . (dk (x + ak))lk = |
||||||||||
|
|
|
|
|
|
|
x=0 |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
l1,...,lk {0,1} |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= p + |
|
p−1 |
|
(gl (x)), |
|
l=(l ,...,l ); x=0 |
||
1 |
k |
|
l=0
§ 6.1. Введение. Вероятностный алгоритм решения уравнений в конечных полях 165
где g (x) = (d1 (x + a1))l1 . . . (dk (x + ak))lk . Справедливо |
неравенство |
||||||||||||
l |
|
|
|
|
|
|
|
|
|
|
|
|
|
(см. [31, теорема 5.41]) |
|
|
|
|
|
|
|
|
|||||
|
|
p−1 |
(gl (x)) |
(deg gl (x) − 1)√ |
|
, |
|
|
|||||
|
|
p |
|
|
|||||||||
|
|
x=0 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
которое следует из оценок тригонометрических |
сумм Вейля. Поэтому |
||||||||||||
|
|
|
|
|
|
k |
kr (r − 1)√p, |
|
|
||||
|
|
|
|M − p| r=2 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
p−1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
так как если deg gl (x) = 1, то |
(gl (x)) = 0. Поскольку |
|
|||||||||||
|
− |
r |
|
=0 |
(r − 1)! (k − r)! |
r − 1 |
|
||||||
|
|
r! (k − r)! |
|
||||||||||
(r |
|
1) k |
= |
k! (r − 1) |
< |
k! |
|
= k |
k − 1 |
, |
|||
|
|
|
то |M − p| k√p(2k−1 − 1).
Рассмотрим , удовлетворяющие условию леммы. Тогда
di ( + ai) = di p p
по определению di. Поэтому каждое уравнение y2i ≡ di ( + ai) (mod p) имеет два решения, и система при x = имеет 2k решений. Следовательно,
M = 2kN + N1,
где N1 — некоторые решения системы, возникающие при , не удовле-
творяющих условию леммы. Если = |
|
|
, |
|
= 1, . . . , |
|
, но |
|
+ ai |
= |
|
|
||||
|
|
|
|
|
|
|||||||||||
|
d |
(a + ) |
d |
−ai |
|
i |
|
k |
|
p |
|
− |
i |
|||
при некотором i, то |
i |
i |
= |
i |
(− i) = −1, и система при x = |
|||||||||||
|
p |
p |
неразрешима. Если же = −ai при некотором i, то при x = система имеет не более чем 2k решений. Поэтому N1 k · 2k. Следовательно,
|2k · N − p| |M − p| + |2kN − M| k√p(2k−1 − 1) + k · 2k.
Отсюда следует утверждение леммы 6.3. Скажем еще несколько слов о других методах нахождения корней
многочленов над конечными полями. Эти методы описаны в [31, гл. 4, § 3]. Если конечное поле GF(q) велико, но его характеристика p мала,
|
|
|
j |
|
|
то при q = p |
m |
следует вычислить многочлен S(x) = |
m−1 |
pj |
, и пытаться |
|
x |
|
|||
|
|
|
=0 |
|
|