Научная статья на тему 'Оптимизация (p — 1)-алгоритма Полларда'

Оптимизация (p — 1)-алгоритма Полларда Текст научной статьи по специальности «Математика»

CC BY
590
44
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
(P — 1)-АЛГОРИТМ ПОЛЛАРДА / ФАКТОРИЗАЦИЯ ЧИСЕЛ / POLLARD''S (P — 1)-ALGORITHM / INTEGER FACTORIZATION

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

Приведены критерии выбора параметров (p — 1)-алгоритма Полларда и рассмотрен метод его оптимизации.

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

Optimization of Pollard''s (p—1)-algorithm

The article contains criteria for choice of parameters and a method for optimization of the Pollard's (p — 1)-algorithm.

Текст научной работы на тему «Оптимизация (p — 1)-алгоритма Полларда»

4. Bernstein D. J. Factoring into coprimes in essentially linear time // J. Algorithms. 2005.

No. 54(1). P. 1-30.

5. Bernstein D. J. Scaled reminder trees // http://cr.yp.to/papers.html#scaledmod УДК 519.688

ОПТИМИЗАЦИЯ (р - 1)-АЛГОРИТМА ПОЛЛАРДА

А. С. Климина

Приведены критерии выбора параметров (р — 1)-алгоритма Полларда и рассмотрен метод его оптимизации.

Ключевые слова: (р — 1)-алгоритм Полларда, факторизация чисел.

Рассмотрим (р — 1)-алгоритм Полларда факторизации числа N [1]. Алгоритм состоит из следующих шагов.

Шаг 1. Выбираем число k.

Шаг 2. Выбираем произвольное а, 1 < а < N.

Ш а г 3. Вычисляем d = (а, N). Если d > 1, получили нетривиальный делитель N.

Шаг 4. Вычисляем D = (ak — 1,N). Если 1 < D < N, то D — нетривиальный делитель N. Если D = 1, возвращаемся к шагу 1, а при D = N — к шагу 2.

Вопрос оптимального выбора параметра k не исследован до настоящего времени с нужной полнотой. Автором реализованы следующие подходы к выбору числа k: k — произведение нескольких случайных чисел; k — факториал некоторого числа, k — произведение степеней простых чисел; k — наименьшее общее кратное нескольких чисел. После анализа работы программы выбран третий метод, поскольку он работает быстрее остальных и даёт больше удачных разложений [2].

Зафиксируем а = 2 и рассмотрим работу (р — 1)-алгоритма Полларда при следующих допущениях:

1) k — произведение нескольких первых простых чисел в заданной степени;

2) исследуемое число N представляет собой произведение двух простых множителей, р и q.

Пусть D = (ak — 1, N); Op(a), Oq (а) —показатели числа а по модулям р и q соответственно. Возможны три случая:

1) k кратно ровно одному из чисел Ор(а), Oq(а). В этом случае получим 1 < D < N, и нетривиальный делитель D найден;

2) k не кратно ни одному из Ор(а), Oq(а). В этом случае D = 1;

3) k кратно и Ор(а), и Oq(а). В этом случае D = N.

Таким образом, для удачного нахождения делителя N нужно выбрать параметр k не слишком большим и не слишком маленьким. Заметим, что k кратно Op^) для любого а, если k кратно р — 1. Это, в свою очередь, гарантированно выполняется, если k является произведением всех простых чисел р ^ л/N/2 в степенях logp(\/N/2). Такой выбор k хорошо работает для сравнительно небольших чисел N, однако при увеличении числа N становится неприемлемым.

Предлагается следующий алгоритм выбора k в процессе работы программы.

Пусть k = рара .. .р“> где р1, ..., р1 — первые I простых, а — некоторая константа. Будем рассматривать изменение k только за счёт изменения количества простых /. Идея выбора / состоит в том, чтобы выбрать его не слишком большим и не слишком малым, исходя из результатов работы программы (при слишком малом значе-

нии l результатом является 1, а при слишком большом — N). При этом l выбирается методом, похожим на половинное деление. При каждом значении l вычисляется D(l) = (ak — 1, N), k = pap?.. .pa. Параметр l выбирается следующим образом:

Ш а г 1. lmin •— 1, lmax •— 1.

Ш а г 2. lmax • lmax ' 2; l lmax.

Шаг 3. Вычислить D = D(l);

— если D = 1, то перейти к шагу 2;

— если D = N, то перейти к шагу 4;

— если 1 < D < N — выход, делитель найден.

Ш а г 4. lmin • lmax/2; lmidl • lmin + (lmax lmin)/2; l • lmidl.

Шаг 5. Вычислить D = D(l);

если D 1, то lmin • lmidl; lmidl • lmin + (lmax lmin)/2; l • lmidl; перейти к шагу 5; если D N, то lmax • lmidl; lmidl • lmin + (lmax lmin)/2; l • lmidl; перейти к шагу 5;

— если 1 < D < N — выход, делитель найден.

Проведены эксперименты на заранее сформированных массивах чисел, представляющих собой произведение двух простых, с разрядностью 20, 40 и 60 десятичных знаков. Из 10000 чисел разрядностью 20 десятичных знаков были разложены 4250, среднее время на обработку одного числа составило 1,42 с. Разрядность максимального числа, которое было разложено на множители, составляет 60 десятичных знаков:

1052808008400417645876606027989867285487720871343057551778083 =

= 123547896523698521452369860571 ■ 8521456358412963587456325968473,

время разложения — 29 мин 23 с.

ЛИТЕРАТУРА

1. Маховенко Е. Б. Теоретико-числовые алгоритмы в криптографии. М.: Гелиос АРВ, 2006.

2. Климина А. С. Оптимизация выбора параметров для алгоритма Полларда //IV ОМНТК «Молодежь. Техника. Космос». СПб.: БГТУ, 2012. С. 285-286.

УДК 519.688

ПАРАЛЛЕЛЬНЫЙ АЛГОРИТМ ВЫЧИСЛЕНИЯ ФУНКЦИЙ РОСТА В КОНЕЧНЫХ ДВУПОРОЖДЁННЫХ ГРУППАХ ПЕРИОДА 5

А. С. Кузнецова, А. А. Кузнецов, К. В. Сафонов

Представлена параллельная версия алгоритма для вычисления функций роста в конечных двупорождённых группах периода 5.

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

Пусть р — простое число, О — конечная группа экспоненты р. Это значит, что др = е для всех д Е О. Так как О нильпотентна, то можно найти цепочку подгрупп О = О1 3 3 О2 3 ... 3 Оп 3 Оп+1 = е, в которой Оi нормальны в О, а факторы Оi/О^+1 имеют порядок р и лежат в центре О/О^.

Пусть для 1 ^ г ^ п элемент Е Оi, но ^ Е О^, тогда каждый элемент группы

д Е О можно однозначным образом записать в виде

g = a]1 aY2 ... аП", 0 ^ y¿ < p.

(1)

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