Научная статья на тему 'О сложности решения уравнений малой степени в кольце целых чисел и кольцах вычетов'

О сложности решения уравнений малой степени в кольце целых чисел и кольцах вычетов Текст научной статьи по специальности «Математика»

CC BY
163
18
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОЛИНОМИАЛЬНЫЕ УРАВНЕНИЯ В КОЛЬЦЕ ЦЕЛЫХ ЧИСЕЛ И В КОЛЬЦАХ ВЫЧЕТОВ / БИТОВАЯ (БУЛЕВА) СЛОЖНОСТЬ / POLYNOMIAL EQUATIONS OVER RING OF INTEGER NUMBERS AND FINITE RINGS / BOOLEAN COMPLEXITY

Аннотация научной статьи по математике, автор научной работы — Гашков Сергей Борисович, Гашков Игорь Борисович, Фролов Александр Борисович

Доказано, что для произвольного многочлена f(x) ∈ Zpn[X] степени d битовая сложность вычисления одного корня (если он есть) при фиксированном простом p и растущем n равна O(dM(nλ(p))), где λ(p) = ⌈log2 p⌉, M(n)  битовая сложность умножения двоичных n-битных чисел. При известном разложении на простые множители данного числа n = m1 . . .mk, mi = pni i , i = 1, . . . , k, фиксированном k, фиксированных простых pi, i = 1, . . . , k, и растущем n битовая сложность вычисления одного из решений сравнения f(x) = 0 mod n равна O(dM(λ(n))). В частности, такая же оценка получается для извлечения одного корня любой заданной степени в кольце вычетов Zm. Как следствие получено, что битовая сложность вычисления целых корней многочлена f(x) равна Od(M(n)), если f(x) = adxd + ad−1xd−1 + . . . + a0, ai ∈ Z, |ai| < 2n, i = 0, . . . , d.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

It is proved that for an arbitrary polynomial f(x) ∈ Zpn[X] of degree d the Boolean complexity of calculation of one its root (if it exists) equals O(dM(nλ(p))) for fixed prime p and growing n, where λ(p) = ⌈log2 p⌉, M(n) is the Boolean complexity of multiplication of two binary n-bit numbers. Given the known decomposition of this number into prime factors n = m1 . . .mk, mi = pni i , i = 1, . . . , k, fixed k, fixed prime pi, i = 1, . . . , k, and growing n, the Boolean complexity of calculation of one of solutions to the comparison f(x) = 0 mod n equals O(dM(λ(n))). In particular, the same estimate is obtained for calculation of one root of any given degree in the residue ring Zm. As a corollary, we obtained that the Boolean complexity of calculation of integer roots of the polynomial f(x) is equal to Od(M(n)) if f(x) = adxd + ad−1xd−1 + . . . + a0, ai ∈ Z, |ai| < 2n, i = 0, . . . , d.

Текст научной работы на тему «О сложности решения уравнений малой степени в кольце целых чисел и кольцах вычетов»

6. Алексеев В.Б. О замкнутых классах в частичной k-значной логике, содержащих класс монотонных функций // Дискретн. матем. 2018. 30, вып. 2. 3-13.

7. TardosG. A not finitely generated maximal clone of monotone operations // Order. 1986. 3. 211-218.

Поступила в редакцию 20.06.2018

УДК 519.95

0 СЛОЖНОСТИ РЕШЕНИЯ УРАВНЕНИЙ МАЛОЙ СТЕПЕНИ

В КОЛЬЦЕ ЦЕЛЫХ ЧИСЕЛ И КОЛЬЦАХ ВЫЧЕТОВ

С. Б. Гашков1, И. Б. Гашков2, А. Б. Фролов3

Доказано, что для произвольного многочлена f (x) G Zpn [X] степени d битовая сложность вычисления одного корня (если он есть) при фиксированном простом p и растущем n равна O(dM(nA(p))), где A(p) = |"log2p], M(n) — битовая сложность умножения двоичных n-битных чисел. При известном разложении на простые множители данного числа n = mi ... mfc, mi = p"i, i = 1,..., k, фиксированном k, фиксированных простых pi,

1 = 1,..., k, и растущем n битовая сложность вычисления одного из решений сравнения f (x) = 0 mod n равна O(dM(A(n))). В частности, такая же оценка получается для извлечения одного корня любой заданной степени в кольце вычетов Zm. Как следствие получено, что битовая сложность вычисления целых корней многочлена f (x) равна Od(M(n)), если f (x) = adxd + ad-1xd-i + ... + a0, ai G Z, |ai| < 2n, i = 0,.. ., d.

Ключевые слова: полиномиальные уравнения в кольце целых чисел и в кольцах вычетов, битовая (булева) сложность.

It is proved that for an arbitrary polynomial f (x) G Zpn [X] of degree d the Boolean complexity of calculation of one its root (if it exists) equals O(dM(nA(p))) for fixed prime p and growing n, where A(p) = |"log2 p], M(n) is the Boolean complexity of multiplication of two binary n-bit numbers. Given the known decomposition of this number into prime factors n = mi ... m-fc, mi = p"i, i = 1,..., k, fixed k, fixed prime pi, i = 1,..., k, and growing n, the Boolean complexity of calculation of one of solutions to the comparison f (x) =0 mod n equals O(dM(A(n))). In particular, the same estimate is obtained for calculation of one root of any given degree in the residue ring Zm. As a corollary, we obtained that the Boolean complexity of calculation of integer roots of the polynomial f (x) is equal to Od(M(n)) if f (x) = adxd + ad-1xd-i + ... + a0, ai G Z, |ai| < 2n, i = 0,. .., d.

Key words: polynomial equations over ring of integer numbers and finite rings, Boolean complexity.

Введение. Алгоритмы решения уравнений в кольцах вычетов имеют приложения в кодировании и криптографии. Алгоритмы извлечения корней в полях вычетов по простому модулю были предложены в конце XIX — начале XX в. А. Тонелли и М. Чипполой (см., например, [1-3]). Впоследствии они неоднократно переоткрывались. Эти алгоритмы вероятностные, но в предположении справедливости некоторых теоретико-числовых гипотез алгоритм Тонелли имеет детерминированный вариант полиномиальной сложности (см., например, [4]). Если его нужно многократно применять в одном и том же поле (например, в схемах декодирования), то сложностью предварительных вычислений (однозначно определяемых этим полем) можно пренебречь (но их результаты использовать при построении схемы извлечения корня в данном поле) и упомянутые алгоритмы извлечения корня становятся детерминированными.

Для вероятностного алгоритма Чипполы имеет место оценка O(log2 p)M(log2 p) его битовой сложности, где M(n) — битовая сложность умножения двичных n-битных чисел.

Известно [5, 6], что M(n) = ^(n)n log n, где ^(n) — некоторая функция, растущая медленнее любой итерации логарифма. Для средних значений n лучше алгоритмы Шенхаге-Штрассена и Полларда. При малых n предпочтительнее методы Карацубы и Тоома (см., например, [1-3]).

1 Гашков Сергей Борисович — доктор физ.-мат. наук, проф. каф. дискретной математики мех.-мат. ф-та МГУ, e-mail: sbgashkov@gmail.com.

2Гашков Игорь Борисович — канд. физ.-мат. наук, доцент Университета г. Карлстада, Швеция, e-mail: igor.gachkov@kau.se.

3 Фролов Александр Борисович — доктор техн. наук, проф. НИУ МЭИ, e-mail: abfrolov@gmail.com.

О сложности решения алгебраических уравнений в кольцах вычетов. Получим для решения уравнений в некоторых кольцах Zm оценки сложности O(M(log2 m)). В частности, извлечение корней в таких кольцах выполняется со сложностью O(M(log2 m)).

Рассмотрим случай m = pn, где p простое. Далее понадобится следующая

Лемма 1. Вычисление мультипликативного обратного в кольце Zpn можно выполнить с битовой сложностью O(M(A(p))A(A(p)) + M(nA(p))), где A(p) = |log2p].

Доказательство. Применим аналог известного метода обращения степенных рядов (в котором можно увидеть и применение метода касательных Ньютона и метода деления пополам Карацубы). Пусть нужно решить уравнение аж = 1 а, ж € Zpn, или, что то же самое, сравнение аж = 1 mod pn, а, ж € {1,...,pn — 1}, где (а,р) = 1 (т.е. а не кратно p, иначе решения нет). Как известно, решение сравнения аж = 1 mod p при а, ж € {1,... ,p — 1} находится с битовой сложностью J(1) = O(M(A(p))A(A(p))) путем применения быстрого расширенного алгоритма Евклида-Шенхаге (см., например, [7]). Пусть щ = |n/2]. Положим а1 = а mod pni. Как известно, битовая сложность вычисления а1 равна сложности деления а на pni с остатком, т.е. O(M(nA(p))). Предположим, что уравнение а1ж = 1 а1, ж € Zpni, можно решить со сложностью J(n1) и ж1 € {1,... ,pni — 1} — это его решение. Тогда решение сравнения аж = 1 mod pn, а, ж € {1,... ,pn — 1}, можно искать в виде ж = ж1 + pniy, где аж1 = а1ж1 = 1 mod pni. Так как (аж1 — 1)2 = (а1ж1 — 1)2 = 0 mod p2ni, то —(аж1 — 1)2 = 0 mod pn, а(2ж1 — аж1) = 1 mod pn, поэтому ж = 2ж1 — аж2 mod pn. Вычисление ж2 выполняется со сложностью M(n1A(p)), ж1 mod pn находим со сложностью O(M(nA(p))), а потом а(ж2 mod pn) — со сложностью M(nA(p)) (см., например, [8]), значит, а(ж1 mod pn) mod pn вычисляется со сложностью O(M(nA(p))) и 2ж1 — аж2 mod pn находим со сложностью

O(M (nA(p))) + O(nA(p)) = O(M (nA(p))).

Поэтому сложность вычисления решения аж = 1 mod pn оценивается как

I(n) < I(щ) + O(M(nA(p))) = J(|n/2]) + O(M(nA(p))).

Оценивая сверху J(|n/2]) аналогичным образом и используя неравенства M(а + b) ^ M(а) + О(аЬ), где а > b, находим

M((n + 1)A(p)) < M(nA(p)) + O(nA2(p)), M(n) ^ n, и получаем при фиксированном p и растущем n неравенство

I(n) < J(|n/4]) + O(M(|n/2]A(p)) + M(nA(p))) = J(Ln/4J) + O(M(nA(p))).

Продолжая так же далее, получаем оценку

J(n) < J(1) + O(M(nA(p)) + M(|_n/2j A(p)) + M(Ln/4J A(p)) + ... + M(A(p))).

Используя неравенство 2M(n) ^ M(2n) (которое всегда предполагают выполненным в подобных обстоятельствах), имеем

J(n) < J(1) + O(M(nA(p))) = O(M(A(p))A(A(p)) + M(nA(p))). □

Пример 1. Решим сравнение 4ж = 1 mod 32. Вначале решаем сравнение 4ж1 = 1 mod 3. Очевидно решение ж1 = 1 mod 3. Далее ищем решение в виде ж = ж1 + 3y = 1 + 3y, где y € {0,1, 2}. Так как (4ж1 — 1)2 = 0 mod 32, то 4(2ж1 — 4ж2) = 1 mod 9, значит, ж = 2ж1 — 4ж2 = 2 — 4 = —2 = 7 mod 9.

Теорема 1. Для произвольного многочлена f (ж) € Zpn [X] степени d битовая сложность вычисления одного корня (если он есть) равна O(dM(nA(p)) + M(A(p))A(A(p)) log2 n + dpM(A(p))). При фиксированном p и растущем n эта оценка превращается в O(dM(nA(p)). В частности, такая же оценка получается при извлечении корней любой степени4.

Доказательство. Пусть n1 = |n/2]. Заменяя коэффициенты многочлена f на равные им по модулю pni, получим многочлен Д(ж) € Zpni [X]. Рассмотрим сравнение f (ж) = 0 mod pni, равносильное сравнению Д(ж) = 0 mod pni. Любое решение ж сравнения f (ж) = 0 mod pn, если его рассмотреть по модулю pni, является решением сравнения f (ж) = 0 mod pni или равносильного сравнения Д(ж) = 0 mod pni. Обозначим сложность нахождения одного такого решения ж1 € Zpni сравнения Д(ж) = 0 mod pni через F(n1). Так как решение ж = ж1 mod pni, то ж = ж1 + pniy,

4Число корней степени d в кольцах Ърп при п > 1 и р | п может быть больше

y G Zpn-n1. Поэтому для отыскания решения x = xi + p"1y достаточно найти y G Zpn-n1. Как известно, формулу Тейлора для вычисления f (x) = f (x1 + p"1 y) можно записать в виде

f (xi + p"1 y) = f (xi) + f [1](xi )pni y + f [2](xi)(p"1 y)2 + ... + f [d](xi)(p"1 y)d,

где d = degf(x), производная Хассе-Тейхмюллера f[fc](x) определяется равенством k!f[fc](x) = f(k)(x), где f(k)(x) — обычная производная k-го порядка. Для одночлена axm, m ^ k, производная Хассе-Тейхмюллера k-го порядка по определению равна a(m) xm-k, а при m < k она равна нулю. Для произвольного многочлена над кольцом Zpn эта производная очевидно определяется по линейности. Поэтому сравнение f (xi + p"1 y) = 0 mod p" равносильно сравнению f (xi) + f '(xi)p"1 y = 0 mod p". Так как f (xi) G Zpn, f (xi) = fi(xi) = 0 mod p"1, то f (xi) = p"1 z, z G Zpn-n1, z = f (xi)/p"1. Тогда сравнение f (xi) + f'(xi)p"1 y = 0 mod p" равносильно сравнению z + f'(xi)y = 0 mod p"-"1, где z = f (xi)/p"1, f'(xi) G Zpn1. Поскольку n — ni ^ ni, в этом сравнении вместо f'(xi) можно взять f '(xi) mod p"-"1. Если f '(xi) mod p"-"1 =0, то это сравнение не имеет решений при z = 0 mod p"-"1 и имеет p"-"1 решений при z = 0 mod p"-"1 (любое y G Zpn-n1 будет решением). Так как коэффициенты многочленов f и fi одинаковы по модулю p"1, то коэффициенты их производных f'(x) и fi (x) одинаковы по модулю p"1, а значит, и по модулю p"-"1, поэтому f'(xi) mod p"-"1 можно вычислять по формуле a = f{ (xi mod p"-"1) mod p"-"1. Отсюда при a = 0 mod p имеем y = —z/a mod p"-"1, следовательно, при x = xi mod p"1 существует единственное решение x = xi + p"1 y G Zpn. Если

a = 0 mod pk, a = 0 mod pfc+i, z = 0 mod p1, z = 0 mod p1+i,

то при l ^ k имеем y = (—z/pk)/(a/pk) mod p"-"1, а при l < k решений нет (поскольку z+ya = 0 mod p1, z + ya = 0 mod p1+i). Битовая сложность вычисления z = f (xi)/p"1 при использовании схемы Горнера для вычисления f (xi) G Zpn равна O(dM(nA(p))) (сложность деления f (xi) mod p" на p"1 по порядку равна O(M(nA(p)))). Аналогично сложность вычисления a = f'(xi mod p"-"1) mod p"-"1 оценивается как O((d — 1)M((n — ni)A(p))). Сложность вычисления 1/(a/pk) mod p"-"1 оценивается как

/ (n — ni) + O(M ((n — ni)A(p))) = O(M (A(p))A(A(p)) + M (nA(p)) + M ((n — ni)A(p))) =

= O(M (A(p))A(A(p)) + M (nA(p))).

Сложность вычисления y = (—z/pk)/(a/pk) mod p"-"1 равна M((n — ni)A(p)). Наконец, сложность вычисления корня x = xi + p"1 y равна M((n — ni)A(p))+ O(nA(p)). Общая оценка сложности всех вычислений равна

F (n) = F (ni) + O(dM (nA(p)) + nA(p) + M (A(p))A(A(p))).

Используя эту рекуррентную оценку для оценивания последовательности F (ni),F (n2),..., F (n^), где ni = [n/2], n2 = [n/4],... , nk = |"n/2fc] = 1, 2k-i < n ^ 2k, и применяя неравенства

M(|n/2]) = M(Ln/2J) + O(n), F(1) = O(dpM(A(p))),

получаем, что

F(n) = O(dM(nA(p)) + M(A(p))A(A(p)) log2 n + dpM(A(p)))

(в поле Zp корни можно найти простым перебором, для вычисления значений многочлена воспользовавшись схемой Горнера, для некоторых многочленов оценку можно улучшить, например для f (x) = xd можно в некоторых случаях найти корни со сложностью O(A(p)M(A(p))), а для извлечения квадратных корней можно привлечь алгоритм Чипполы). □ Пример 2. Решим сравнение f (x) = x3 + x + 1 = 0 mod 34. Как и в примере 1, для краткости записей все вычисления проводим не в двоичной, а в десятичной системе(разумеется, при использовании троичной системы вычисления упрощаются, но в этом случае окончательный результат пришлось бы переводить в двоичную систему, а пример 2 иллюстрирует теорему, в которой оценивалась именно битовая сложность, т.е. предполагалось использование для вычислений двоичной системы, но мы эти вычисления для краткости опускаем, приводя лишь окончательные результаты). Сравнение x3 + x + 1 = 0 mod 3 имеет корень xi = 1 mod 3. Решения сравнения x3 + x + 1 = 0 mod 32 ищем в виде x2 = xi + 3y = 1 + 3y mod 32, y G Z3. Тогда

f (x2) = f (1 + 3y) = f (1) + f'(1)3y = 3 + (3 + 1)3y = 3 + 3y = 0 mod 32, y G Z3,

откуда y + 1 = 0 mod 3, y = 2, ж2 = 1 + 3 ■ 2 = 7 mod 32. Решения сравнения f (ж) = 0 mod 34 ищем в виде ж3 = ж2 + 32y = 7 + 32y mod 34, y € Zg. Тогда

f (жз) = f (7 + 9y) = f (7) + f'(7)32y = (72 + 1)7 + 1 + (3 ■ 72 + 1)32y = 39 ■ 9 + (4y) ■ 9 = 0 mod 34, y € Zg,

откуда 4y + 39 = 4y + 30 mod 32. В примере 1 было получено 4-1 mod 9 = 7, значит, y = —3 ■ 7 = 3 ■ 2 = 6 mod 32, откуда ж3 = 7 + 32y = 7 + 9 ■ 6 = 61 mod 34.

Теорема 2. Пусть известно разложение на простые множители данного числа n = m1 ... mk, mj = p™, i = 1,...,k. Тогда при фиксированном k, фиксированных простых pj, i = 1,...,k, и растущем n битовая сложность вычисления одного из решений сравнения f (ж) = 0 mod n равна

О ^M(\(n))(d + log2 k) + A(n) ^ = 0(dM(\(n)).

Доказательство. Как известно, решение сравнения f (ж) = 0 mod n с помощью китайской теоремы об остатках сводится к решению сравнений f (ж) = 0 mod mj, i = 1,...,k. Пусть Xj € Zmi — одно из решений сравнения f (ж) =0 mod mj, i = 1,..., k. Согласно теореме 1 такое решение можно найти со сложностью O(dM(njA(pj)) при фиксированном pj и nj — то. Зная ж^ i = 1,..., k, соответствующее им решение ж € Zn, ж mod nj = Жj, можно найти следующим известным способом. При каждом i = 1,..., k положим

Mj = n/mj = mj, aj = Mj mod mj.

j,j=j

Очевидно, что (aj,mj) = 1, поэтому существует bj = a"1 mod mj, тогда bjMj = 1 mod mj, bjMj = 0 mod mj при всех j = i и для

k

ж = ^ жДМ^ mod n

j=i

справедливы равенства ж = жj mod mj, откуда имеем f (ж) = f (ж^ = 0 mod mj, i = 1,..., k, значит, f (ж) = 0 mod n. Воспользуемся следующей известной леммой (ее полиномиальный вариант см., например, в [9]).

Лемма 2. Сложность обратного китайского алгоритма для вычисления ж = жj mod mj, i = 1,..., k, равна

k

Доказательство. Положим Ai = n mod m2. Тогда очевидно, что Ai = m¿c mod m2, c € Zmi. Так как

m^Ci — n = m^Ci — miM¿ = m^c — M¿) = 0 mod m2,

то ci = Mi mod mi = ai, поэтому ai = Ai/mi.

Битовая сложность вычисления Ai = n mod m2, i = 1,..., k, равна O(M(A(n)) log2 k). Это доказывается методом деления пополам (см., например, [7-9]): положим

No = m2 ... m2fc/2j, Ni = m2fc/2j+1... m|, Ci = n mod Ni, i = 0,1,

тогда

Ai = C0 mod m2, i ^ Lk/2j, Ai = C1 mod m,2, i > |_k/2_|.

Сложность вычисления No, Ni при использовании метода деления пополам равна O(M(A(n)) log2 k) (при этом будут получены промежуточные результаты, которые используются также при выполнении рекурсии), сложность вычисления Ci = n mod Ni равна O(M(A(n))) (см., например, [8]), после чего задача рекурсивно сводится к двум подзадачам, сложности которых оцениваются по предположению индукции как O(M(A(n))(log2 k — 1)).

Сложность вычисления ai = Ai/mi, i = 1,..., k, равна

O ¿M (A(mi)) = O(M (A(n))).

4Í=1

Сложность вычисления bi = а_ 1 mod mi i = 1,..., k, согласно лемме 1 также равна

° (Е M(A(m.= O(M(A(n)))

при фиксированных p и n ^ то. Сложность умножения а-разрядного числа на b-разрядное при b ^ а, а также сложность деления с остатком а + b-разрядного числа на b-разрядное можно оценить как O(bM(а)/а) (см., например, [8]). Используя это неравенство, получаем, что сложность вычисления чисел Mi = n/mi, i = 1,..., k, равна

Аналогично получаем, что сложность вычисления остатков biMi mod n, i = 1,..., k, также по порядку равна

* М(А(„, ))

^ A(mi)

i=i

Далее, с такой же по порядку сложностью вычисляем ж^Mi mod n, i = 1,..., k, а потом находим

k

ж = ^ xibiMi mod n

i=1

со сложностью O(kA(n)). □

О сложности решения в целых числах диофантовых уравнений с одним неизвестным. Алгоритмы решения уравнений в кольцах Zpn можно применить для решения уравнений в кольце Z. Эта идея высказывалась еще А.-М. Лежандром и была реализована Г. Цассенхау-зом в [10] для получения разложения на множители в кольце многочленов Z[X]. Пусть f (ж) = adxd + ad_1xd_1 + ... + а0, ai € Z, |ai| < 2n, i = 0,... ,d, а0 ^ 0. В [11] дан алгоритм, разлагающий многочлен f на неприводимые множители с целыми коэффициентами со сложностью

dO(1) n 3.

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

Теорема 3. Битовая сложность вычисления целых корней многочлена f (ж) равна Od(M(n)). Доказательство. Со сложностью Od(M(n)) можно представить f (ж) в виде

f1(x)f2(x)2 ...fd(x)d,

где fi(ж) € Z[X] — многочлены без кратных корней (более точные оценки можно получить, используя [9]). Поэтому далее можно считать, что f (ж) не имеет кратных корней и ао > 0.

В случае d = 1 сложность нахождения единственного корня очевидно равна O(M(n)). Выберем простое p так, что pm > 2а0 > pm-1. Целые корни уравнения f (ж) = 0 очевидно делят а0 и поэтому принадлежат отрезку [—ао, ао] (с помощью известных методов нахождения границ корней или неравенства Миньотта этот отрезок можно уменьшить), но их поиск перебором может быть затруднителен (очевидный подход использует разложение ао на простые множители). Однако отыскание таких корней легко сводится к решению сравнения f (ж) = 0 mod pm и отбрасыванию посторонних корней (проверка, является ли ж € [—ао,ао] корнем, с помощью схемы Горнера выполняется со сложностью O(d2M(n)), а применяя метод деления пополам, можно получить для сложности этого вычисления оценку O(M(dn) log2 d)).

Для решения сравнения f (ж) = 0 mod pm можно воспользоваться теоремой 1, которая в случае неравенства по модулю p всех целых корней ж1,...,ж&, k ^ d, уравнения f(ж) найдет каждый из них со сложностью O(dM(n)) при фиксированном d и n ^ то. Действительно, тогда сравнение f (ж) = 0 mod p имеет (среди прочих) корни жi mod p, i = 1,..., k. Вычислим производную f '(ж) € Z[X]. Применим к паре многочленов (f, f') алгоритм Евклида. Чтобы вычисления выполнялись в кольце Z, на каждом шаге алгоритма переходим от пары многочленов (g,h), где g = а5ж5 + ..., h = biж1 + ..., s ^ l, к паре (h, big — ж5_1), у которой сумма степеней многочленов меньше s + l.

Очевидно, любой общий делитель первой пары многочленов будет общим делителем второй пары. Алгоритм заканчивает работу при появлении пары многочленов (h, 0), тогда многочлен h будет общим делителем f и f', или при появлении пары (h, с), где с € Z, с = 0, тогда многочлены f и f' не имеют общих корней в поле Q (так как взаимно просты). В первом случае получаем разложение f на два множителя и задача поиска корней сводится к такой же для многочлена меньшей степени. Во втором случае выберем простое p с дополнительным условием с = 0 mod p. Тогда (выполняя все вычисления в алгоритме Евклида по модулю p,) получаем, что многочлены f (x) mod p и f'(x) mod p не имеют общих корней в поле Zp, значит, f'(xi) = 0 mod pm при m = 1, а поэтому и при любом m. Гензелев подъем решения Xi € Zp до единственного равного ему по модулю p решения в Zpm можно выполнить методом теоремы 1 при условии f'(xi) = 0 mod pm со сложностью O(dM(mA(p))) при фиксированном d и m ^ то. Если сравнение f (x) = 0 mod p имеет корни, отличные от Xi mod p, i = 1,...,k, например xk+1 € Zp, то он тоже удовлетворяет условию f '(xk+1) mod pm = 0 и его можно поднять до корня f (x) mod pm при любом m. Но если

pm > |а^| + |ad-iag-1| + ... + |ao|,

то любой целый корень многочлена f (x) = a^xd + ad-1xd-1 + ... + a0, очевидно, является корнем сравнения f (x) mod pm, удовлетворяющим одному из неравенств 0 ^ x ^ a0, pm — a0 ^ x < pm и обратно. Поэтому для нахождения всех целых корней у f (x) достаточно найти все корни у f (x) mod p, поднять их до корней сравнения f (x) = 0 mod pm и отбросить не удовлетворяющие одному из неравенств 0 ^ x ^ a0, pm — a0 ^ x < pm. При этом все корни xi, i = 1,...,k, многочлена f (x) содержатся среди решений сравнения f (x) = 0 mod pm уже при m, удовлетворяющем неравенствам pm > 2a0 > pm-1, а каждый корень сравнения f (x) = 0 mod pm получается подъемом из соответствующего корня сравнения f (x) = 0 mod p.

Согласно теореме 1 сложность нахождения одного корня сравнения f (x) = 0 mod pm равна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

O(dM(mA(p)) + M(A(p))A(A(p)) log2 m + dpM(A(p))).

Последнее слагаемое dpM (A(p)) оценивает сложность поиска всех корней сравнения f (x) = 0 mod p перебором элементов поля Zp. Так как число корней многочлена f (x) не более min(d,p), то сложность поиска всех целых корней f (x) оценивается как

O(min(d,p)(dM(mA(p)) + M(A(p))A(A(p)) log2 m) + dpM(A(p))),

где pm > |ada^| + |ad- 1a^-11 + ... + |a0| ^ pm-1, т.е. mA(p) = O(nd). Но уже при pm > 2a0 > pm-1, т.е. при mA(p) = O(n), можно со сложностью

O(min(d,p)(dM(mA(p)) + M(A(p))A(A(p)) log2 m) + dpM(A(p)))

найти все корни сравнения f (x) = 0 mod pm, и тогда, отбросив лишние корни с дополнительной сложностью O(min(d, p)d2 M (n)), находим все целые корни многочлена f (x) с коэффициентами, по модулю меньшими 2n, со сложностью

O(min(d,p)(d2M(n) + M(A(p))A(A(p)) log2 n) + dpM(A(p))).

Для отыскания числа p нужно вычислить на последнем шаге алгорита Евклида пару (h(x), с), с € Z, и найти минимальное простое p, не делящее число с. Число шагов алгоритма не превосходит 2d — 1, коэффициенты многочленов, вычисленных на i-м шаге, не превосходят

22i(n+1)-1 (оценка доказывается по индукции), значит, log2 |с| < 22d(n + 1), а сложность вычисления с равна O(M(22dn)). Для поиска минимального p, не делящего число с, применим решето Эратосфена, в котором последовательно порождаются простые числа p1, p2, . . . , и на них делится число с. Оценим сверху минимальное такое значение p. Пусть число с делится на p1.. . и не делится на p^+b Так как согласно известному теоретико-числовому неравенству Мертенса

|с| ^ p1.. .pk > apk, a > 1,

то pk < log2 |с| = 22d(n + 1), а в силу постулата Бертрана p = pk+1 < 2pk < 22d+1(n + 1), откуда имеем A(p) < 2d + log2 2(n + 1) (можно получить и чуть более точные оценки). Сложность порождения

первых k + 1 простых чисел решетом Эратосфена можно оценить (с помощью неравенств Мертенса и Чебышева) как

к

О(Кр)) = 0(р\(р)\(\(к))) = 0(к\2(к)\(\(к))) = 0(22dn(d + \(n))2\(d + A(n))). i=i pi

Сложность проверочного деления числа с на простые pi,... ,Рк+1 оценивается как

к+1

O(A(c)^ M (А(рг))/А(рг) = o(24d n2).

i=1

Отсюда при фиксированном d и n ^ то имеем для худшего случая оценку

O(d3M (n) + d22d nM (d + A(n)) + o(24d n2) = Od(n2).

Ее можно уточнить, видоизменив алгоритм следующим образом. Вместо вычисления константы c алгоритмом Евклида в кольце Z и проверки, не делит ли очередное простое pi число с, достаточно с помощью алгоритма Евклида найти наибольший общий делитель у многочленов f mod pi и f' mod pi. Сложность этого вычисления равна O(d2M(A(pi))) (если использовать быструю версию Ф. Штрассена для алгоритма Евклида, то оценка сложности понижается до O(M(d)M(A(pi)) log2 d)). Если с = 0 mod pi, то этот наибольший общий делитель имеет степень, большую 0, а если с = 0 mod pi, то многочлены f mod pi и f' mod pi взаимно просты и поэтому не имеют общих корней в поле Zp (в случае с = 0 mod pi общий делитель может иметь степень, большую 1, и тогда многочлены f (ж) mod pi и f '(ж) mod pi также иногда могут не иметь общих корней, и, значит, вычисления по модулю p™ можно использовать для нахождения целых корней f (ж)). Поэтому можно так же, как было указано выше, найти корни сравнения f (ж) mod pim, где p™ > 2ао > pm-1, p1.. .pi-1 | с, и, отбросив лишние, найти все целые корни f (ж). Оценка сложности всех вычислений НОД (f mod pj, f' mod pj), j = 1,...,i, равна

i

O(d2 ) £ M (A(pj)) = O(d2)(M (A(p1) + ... + A (pi-1)) + M (A (pi))) = j=1

= O(d2)(M(A(p1.. .pi-1)) + M(A(pi))) = = O(d2 )(M (Afc)) + M (A(pi))) = O(d2)(M (22d n) + M (2d + log2(n + 1))) = O(d2M (22d n)). Поэтому окончательная оценка сложности вычисления всех целых корней у f (ж) равна

O(d3 M (n) + d22dnM (d + A(n)) + d2M (22d n)) = Od (M (n)). □

Пример поиска целых корней у многочлена f (ж) = ж3 + 22551ж2 - 408321ж -109039822871.

Вычисляем f'(ж) = 3ж2 + 45102ж — 408321, потом применяем алгоритм Евклида:

3(ж3 + 22551ж2 — 408321ж — 109039822871) — ж(3ж2 + 45102ж — 408321) =

= 22551ж2 — 816642ж — 327119468613,

3(22551ж2 — 816642ж — 327119468613) — 22551(3ж2 + 45102ж — 408321) =

= —1019545128ж — 972150358968,

(—1019545128ж — 972150358968)14355691095384+

+1019545128(14355691095384ж — 138767228736696) = 14097369703595836729420800.

Далее находим, что 14097369703595836729420800 делится на 2, 3, 5 и не делится на p = 7. Решая последовательно сравнения f (ж) = 0 mod 7, f (ж) = 0 mod 72, f (ж) = 0 mod 74, f (ж) = 0 mod 78, f (ж) = 0 mod 716, поднимаем корни 0, 4, 6 € Z7 первого из них до корней —22351, 2111, —2311 € Z7i6. Так как 714 > 2 ■ 109039822871 > 713, то можно было бы выбрать такую последовательность вычислений: f (ж) = 0 mod 7, f (ж) = 0 mod 72, f (ж) = 0 mod 74, f (ж) = 0 mod 77, f (ж) = 0 mod

714. Если бы удалось получить более точную оценку корней, чем использованная трививальная, то показатель 14 можно было бы заменить на 6, т.е. достаточно было бы выполнить следующую цепь "подъемов": f (ж) = 0 mod 7, f (ж) = 0 mod 72, f (ж) = 0 mod 73, f (ж) = 0 mod 76, в конце которой уже появляются корни —22351, 2111, —2311 € Z76. При использовании второго варианта алгоритма достаточно было бы вычислить НОД (ж3 + ж2 + ж + 1,ж2 + 1) = ж + 1 mod 2, (ж3 + 1, 0) = ж3 + 1 mod 3, (ж3 + ж2 — ж — 1,3ж2 + 2ж — 1) = ж + 1 mod 5, (ж3 + 4ж2 + 3ж, 3ж2 + ж + 3) = 1 mod 7 и далее решать сравнения f (ж) mod 7m, как в первом варианте.

Замечания касательно других элементарных способов решения сравнений. Вычисление a-1 mod m при (a, m) = 1 равносильно решению сравнения аж = 1 mod m или решению уравнения аж + my = 1 при условии 0 < ж < m, —а < y < 0. Это решение единственное, ж = a-1 mod m. Его можно найти с помощью расширенного алгоритма Евклида. Оценка сложности этого алгоритма O(A(am))2, но известна быстрая модификация Шенхаге этого алгоритма (см., например, [7]) со сложностью A(A(am))M(A(am)). Однако его затруднительно реализовать в виде булевой схемы. В виде такой схемы легко реализовать вычисление по формуле a-1 mod m = аф(т)-1 mod m, если значение функции Эйлера 0(m) известно. Сложность этой схемы равна O(A(m)M(A(m))). Если известно каноническое разложение m = m1... mk, mj = p™1, i = 1,..., k, на простые множители, то ^(m) можно вычислить со сложностью O(A(k)M(A(m))) = O(A(A(m))M(A(m))).

Рассмотрим двойственную задачу вычисления m-1 mod a. Ее решение можно получить, одновременно вычисляя a-1 mod m с помощью расширенного алгоритма Евклида, как решение уравнения aж + my = 1 при условии 0 < ж < m, — a < y < 0, так как m-1 mod a = —y mod a. Если число ж = a-1 mod m найти каким-то другим алгоритмом, то m-1 mod a = —y = [^ж — 1)/mJ можно вычислить со сложностью O(M(A(am))).

В [12] в одной из задач привидена формула

a"1 mod р = (-1 r-i(P-l)---('P-a + l) = , ® ^

a! p

Выполняя вычисления с помощью треугольника Паскаля по модулю p2, можно найти a-1 mod p с битовой сложностью O(a2A(p) + M(A(p)), что при малых a может быть быстрее, чем возведение в степень p — 2.

В [12] в виде задачи приведен также способ решения сравнения pkж = b mod m, где p простое, основанный на следующем рекуррентном алгоритме. Пусть b + mt=0 mod p, т.е. t=—b ■ m-1mod p. Найдем максимальное число такое, что p5 | (pk, b + mt). Тогда задача сводится к решению сравнения pk~sx = b^Jlt mod т. Если эти вычисления выполнять в р-ичной системе счисления, то сложность алгоритма оценивается как O(k2(M(A(p)))). Чтобы оценить битовую сложность, следует добавить еще сложность преобразования из двоичной системы в p-ичную и обратно. Последняя с помощью еще одного алгоритма Шенхаге оценивается как O(A(A(m))M(A(m))). Таким образом, сложность вычисления (pk)-1 mod m оценивается как O(k2M(A(p)))+ O(A(A(m))M(A(m))). Значит, сложность вычисления m-1 mod pk равна

O(k2M (A(p)) + A(A(m))M (A(m)) + M (A(m) + kA(p)) + A(p)M (A(p))).

При фиксированном p, m < pk, и k — то эта оценка равна O(k2M(A(p)).

В [12] в виде задач также приведены алгоритмы решения сравнений ж2 = a mod 2k и ж2 = a mod pk. Битовая сложность первого равна O(k2), а второго O(k2A2(p)). Оба алгоритма являются вариантами подъема Гензеля.

В [12] в одной из задач приведен еще один алгоритм решения сравненения ж2 = a mod pk, в котором решение выражается явной формулой ж = ±PQ' mod pk, где

Р = 2k_1y/afc, Q = 2к~1л/Ек~\ Va = b € Zp, b2 = a, QQ' = 1 mod pk.

Так как битовая сложность вычисления Q' и умножения PQ' mod pk равна O(M(kA(p))), сложность вычисления л/а в поле GF(p) равна 0(Х(р)М(Х(р))), а сложность вычисления остатков Р, Q mod рк равна O(A(k)(M(kA(p))), то сложность извлечения квадратного корня по модулю pk указанным алгоритмом равна O(A(k)(M(kA(p))).

Работа выполнена при финансовой поддержке РФФИ, гранты № 19-01-00294, 18-01-00337.

СПИСОК ЛИТЕРАТУРЫ

1. Болотов А.А., Гашков С.Б., Фролов А.Б., Часовских А.А. Элементарное введение в эллиптическую криптографию. Алгебраические и алгоритмические основы. М.: URSS Ленанд, 2018.

2. Василенко О.Н. Теоретико-числовые алгоритмы в криптографии. М.: МЦНМО, 2003.

3. Глухов М.М., Круглов И.А., Пичкур A.Б., Черемушкин А.В. Введение в теоретико-числовые методы криптографии. СПб.: Лань, 2011.

4. Bach E. Explicit bounds for primality testing and related problems // Math. Comput. 1989. 22. 355-380.

5. F^rer M. Faster integer multiplication // SIAM J. Comput. 2009. 39, N 3. 979-1005.

6. Harvey D., van der Hoeven J., Lecerf G. Faster polynomial multiplication оver finite fields // ArXive.org>cs> arXive: 1407.3361 12 Jul 2014.

7. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.

8. Гашков С.Б., Чубариков В.H. Арифметика. Алгоритмы. Сложность вычислений. М.: Наука, 1996.

9. Гашков С.Б. О сложности интегрирования рациональных дробей // Тр. Матем. ин-та РАН. 1997. 218. 122-133 .

10. Zassenhaus H. A remark on the Hensel factorization method // Math. Comput. 1978. 32, N 141. 287-292.

11. Lenstra A., Lenstra H., Lovasz L. Factoring polynomials with rational coefficients // Math. Ann. 1982. 261. 515-534.

12. Виноградов И.М. Основы теории чисел. М.: ГИТТЛ, 1952.

Поступила в редакцию 14.03.2018

УДК 511

ЗАМЕЧАНИЕ О КОДИРОВАНИИ В АЛГЕБРАХ СО СТРОГОЙ ФИЛЬТРАЦИЕЙ

В. Н. Латышев1

"При изучении наук примеры важнее правил. "

(И. Ньютон)

Предлагается способ кодирования сообщений с помощью "мультипликативного гам-мирования" в алгебрах со строгой фильтрацией. Этот класс алгебр был ранее введен автором для использования в теории базисов Грёбнера-Ширшова в широком контексте. Он включает в себя полугрупповые алгебры упорядоченных полугрупп и универсальные обертывающие алгебры алгебр Ли, в частности алгебру полиномов и свободную ассоциативную алгебру.

Ключевые слова: мультипликативное гаммирование, алгебра со строгой фильтрацией, полугрупповые алгебры упорядоченных полугрупп, универсальные обертывающие алгебры алгебр Ли.

The way of communication coding using "multiplicative gammation" in algebras with a strong filtration is proposed. This class of algebras was introduced earlier by the author for needs of Grobner-Shirshov bases theory in a wide context. It includes semigroup algebras of ordered semigroups and universal envelopping algebras of Lie algebras, in particular, the polynomial algebra and free associative algebra.

Key words: multiplicative gammation, algebras with a strong filtration, semigroup algebras of ordered semigroups, universal envelopping algebras of Lie algebras.

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

1 Латышев Виктор Николаевич — доктор физ.-мат. наук, проф. каф. высшей алгебры мех.-мат. ф-та МГУ, e-mail: vnlatyshev@yandex. ru.

i Надоели баннеры? Вы всегда можете отключить рекламу.