Научная статья на тему 'Сравнительный анализ некоторых алгоритмов распознавания гладких чисел'

Сравнительный анализ некоторых алгоритмов распознавания гладких чисел Текст научной статьи по специальности «Математика»

CC BY
270
45
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГЛАДКИЕ ЧИСЛА / ПРОСЕИВАНИЕ / АЛГОРИТМ БЕРНШТЕЙНА / SMOOTH NUMBERS / SIEVING / BERNSTEIN ALGORITHM

Аннотация научной статьи по математике, автор научной работы — Арбузов Дмитрий Сергеевич, Туктарова Лидия Игоревна

Приводятся результаты экспериментальных исследований трёх алгоритмов нахождения чисел, разложимых в заданной факторной базе: просеивания (с делением и логарифмического) и Бернштейна.

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

Analysis of some algorithms for smooth integers recognition

The experimental comparison of three sieving algorithms by run time and memory amount is presented.

Текст научной работы на тему «Сравнительный анализ некоторых алгоритмов распознавания гладких чисел»

Из этого вектора, в свою очередь, последовательно переходим в х2 = (0,1, 0,0, 0, 0,1) с ^(х2) = 3, х3 = (0,1, 0, 0, 0,1,1) с ^(хз) = 2, х4 = (0,1,0,1,0, 0,1) с ^(х4) = 2 и попадаем в тупиковую точку. Эта ветвь алгоритма потребовала проведения 25 вычислений невязок и так и не привела к успеху.

Предложенный модифицированный алгоритм уже на первом шаге устанавливает запрет на проставление единицы в первой и седьмой координатах вектора и присваивает шестой координате значение 1: х1 = 0, х7 = 0 и х6 = 1. Отметим, что срабатывают первый и второй случаи стратегии запрета перехода в следующую вершину и блокируются возможности расстановки единиц соответственно по переменным х7 и х1, при этом ^(0, 0, 0, 0,0, 0,1) = 8 и является минимальной из всех посчитанных на первом шаге. В результате х1 = (0, 0,0, 0, 0,1, 0). На втором шаге запрещается присваивание единицы переменным х3 и х5, переменной х2 даётся значение 1 и получается вектор х2 = (0,1, 0, 0, 0,1, 0). Присваивание единицы четвёртой координате приводит к нахождению решения х3 = (0,1,0,1, 0,1,0). При этом модифицированная версия алгоритма потребовала вычисления невязки всего 11 раз.

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

ЛИТЕРАТУРА

1. Балакин Г. В., Никонов В. Г. Методы сведения булевых уравнений к системам пороговых соотношений // Обозрение прикладной и промышленной математики. 1994. Т. 1. Вып.3. С.389-401.

2. Рыбников К. К., Никонов Н. В. Прикладные задачи, сводящиеся к анализу и решению систем линейных неравенств. Метод разделяющих плоскостей // Вестник Московского государственного университета леса —Лесной вестник. 2002. №2(22). С.191-195.

3. Анашкина Н. В. Использование алгоритма Балаша для нахождения решения системы линейных ограничений специального вида // Вестник Московского государственного университета леса —Лесной вестник. 2004. №4(35). С. 176-179.

4. Кофман А, Анри-Лабордер А. Методы и модели исследования операций. М.: Мир, 1977. 432 с.

5. Анашкина Н. В. Обзор методов решения систем линейных неравенств // Вестник Московского государственного университета леса —Лесной вестник. 2004. №1(32). С. 144-148.

6. Гришухин В. П. Среднее число итераций в алгоритме Балаша // Сб. статей. Численные методы в линейном программировании. М.: Наука, 1973. С. 31-38.

УДК 519.688

СРАВНИТЕЛЬНЫЙ АНАЛИЗ НЕКОТОРЫХ АЛГОРИТМОВ РАСПОЗНАВАНИЯ ГЛАДКИХ ЧИСЕЛ

Д. С. Арбузов, Л. И. Туктарова

Приводятся результаты экспериментальных исследований трёх алгоритмов нахождения чисел, разложимых в заданной факторной базе: просеивания (с делением и логарифмического) и Бернштейна.

Ключевые слова: гладкие числа, просеивание, алгоритм Бернштейна.

Пусть задана факторная база Б — множество, состоящее из некоторых простых чисел.

Определение 1. Целое число будем называть Б -гладким, если все его простые делители входят в Б.

Задачу нахождения большого количества гладких чисел приходится решать в некоторых методах факторизации чисел (например, квадратичное решето, решето числового поля) и дискретного логарифмирования. Рассмотрим два метода её решения: просеивания (в двух вариантах) и Бернштейна.

1. Метод просеивания [1]

Задан многочлен ^(ж) Є 2 [ж], факторная база Б и целые числа А, С, А < С. Требуется найти все такие ж, А ^ ж ^ С, что ^(ж) — Б-гладкое. Строится таблица, ячейки которой занумерованы целыми числами от А до С. Метод заключается в заполнении таблицы, её изменении и последующем просмотре.

Алгоритм 1. Метод просеивания

Вход: Б — факторная база; А, С — целые числа, А < С; многочлен ^(ж) Є 2[ж];

М = тах |^(ж)|; первоначальное заполнение таблицы Т:

X А А +1 С

Р (х) Р (А) Р (А +1) Р (С)

Выход: множество чисел ж, А ^ ж ^ С, таких, что ^(ж) — Б-гладкое.

1: Для всех д Є Б, І Є {1, 2,..., 1п М/ 1п д]

найти все решения жо сравнения ^(ж) = 0 (mod д1).

Для всех решений ж0

содержимое ячеек Т(ж) с номерами ж = ж0 + Лд1, (А — ж0)/дг ^ Л ^ (С — ж0)/дг, поделить на д.

5: Просмотреть содержимое всех ячеек. Значение ^(ж) является Б-гладким тогда и только тогда, когда Т(ж) = ±1.

В отличие от метода пробных делений, в данном алгоритме все деления выполняются точно, то есть нет «неудачных» делений.

Улучшение алгоритма 1 (логарифмический вариант) заключается в том, что вычисляется не ^(ж), а 1og |^(ж)|; на шаге 4 вместо деления на д вычитается д; на шаге 5 значения Т(ж) сравниваются с 0. В результате получаем выигрыш как по времени выполнения алгоритма, так и по требуемой памяти. Однако из-за погрешностей округления в вычислении логарифма даже для Б-гладких значений ^(ж) можем получить Т(ж) = 0, и шаг 5 надо модифицировать следующим образом: значение ^(ж) является Б-гладким тогда и только тогда, когда |Т(ж)| ^ Е для некоторого «малого» Е. При этом возможны ошибки первого и второго рода: необнаружение гладкого числа (влияет на эффективность алгоритма) и принятие негладкого числа за гладкое (влияет на корректность алгоритма).

Для оценки величины Е проведён следующий эксперимент: ^(ж) = (ж + т)2 — N, где т = , N — модуль ИБА длиной N| бит; логарифм берётся по основанию 2 и

округляется до ближайшего целого снизу; факторная база Б состоит из |Б | первых

^N\

простых чисел д, таких, что — =1 (параметры соответствуют методу квадратич-

д

ного решета для факторизации числа N). Результаты представлены в табл. 1. Здесь

Min — минимальное значение T [x], полученное после просеивания и соответствующее негладкому числу; Max — максимальное значение T [x], которое соответствует гладкому числу. Видно, что во всех случаях можно выбрать такое E, что Max < E < Min. Это позволит избежать ошибок обоих родов.

Т а б л и ц а І

Оценка параметра E

S 2 О IS = 30 S 5 О I S I = 100

IN I Min Max Min Max Min Max Min Max

20 7,6 3,2 8 2,8 9 3,2 10,6 3,2

40 8,8 4,2 8,6 4,6 9,6 4,6 11 7

50 8,8 6 9 5,2 9,8 6,6 10,8 5,8

60 10,2 5,4 10 6,3 10 6,4 11,2 7,4

Эксперименты показали, что логарифмический вариант просеивания работает быстрее, чем вариант с делением; результаты приведены в табл. 2 (CPU Intel Pentium P61QQ 2,00ГГц, память 1,7Гбайт, swap 1,9Гбайт).

Т а б л и ц а 2 Выигрыш логарифмического просеивания (по времени)

I s I INI C I A Выигрыш, %

30 50 217 41,16

50 50 215 55,2

50 60 218 48,72

100 50 213 45

100 60 217 45,24

150 50 213 56

150 60 216 43

150 70 217 49

Кроме того, хранение логарифмов чисел вместо самих чисел позволяет экономить используемую память. Так, при размере числа INI = 64 бита, длине отрезка C — A = 218 и факторной базе из 50 элементов во время работы программы, реализующей просеивание с делением, используется память файла подкачки на 50 % (972Mбайт), в то время как программа с вычислением логарифмов использует лишь 27% (525Mбайт). Это сильно влияет на время выполнения программы; в первом случае оно составляет 129 с, во втором — 42 с.

2. Метод Бернштейна [2]

Метод Бернштейна позволяет сократить объём вычислений при помощи использования деревьев. Задача формулируется так: заданы факторная база S и множество целых чисел P. Требуется найти все S-гладкие p Є P.

Отличие в постановке задачи от метода просеивания состоит в том, что множество чисел произвольно.

Обозначим Q = s и найдём остатки от деления Q на числа p Є P. Пусть

s€S

Q mod p = r. Тогда r = ab, где a = (Q,p) — произведение тех простых, которые присутствуют в базе S и в исследуемом числе. Пусть наибольший показатель в каноническом разложении числа p на простые множители не превосходит z. Тогда в каноническом

разложении rz все простые присутствуют в степени, не меньшей, чем в р. Таким образом, (rz mod р,р) есть часть числа р, разложимая в базе S; и число p является S-гладким, если (rz mod р,р) = р, т. е. rz mod р = 0.

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

Алгоритм 2. Метод Бернштейна

Вход: S — факторная база; множество чисел P; IP I ^ IS I.

Выход: все S-гладкие числа p Є P.

І: Построить дерево произведений для факторной базы S. В корне этого дерева получим Q.

2: Построить дерево произведений T для множества P (при этом вычисляются только значения, не большие Q, остальные помечаются *).

З: Вычислить дерево остатков Q mod T следующим образом: сначала число R, приписанное корню дерева T, заменяется на Q mod R, а затем происходит спуск по ветвям, во время которого каждое число заменяется на его остаток от деления на новое значение, приписанное его родителю.

оА;

4: Найти наименьшее натуральное число k, для которого max P ^ 22 .

5: Для всех p Є P:

найти r = Q mod p в дереве остатков Q mod T; вычислить sp := r2 mod p.

б: Ответ: все числа p, для которых sp = 0.

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

В табл. 3 приведены результаты сравнения метода просеивания (с логарифмированием) и метода Бернштейна.

Т а б л и ц а З

Сравнение методов просеивания и Бернштейна

Метод IS I = 50 — О О

N 5 О N 6 О IN = 50 ||N 6 О

Время, с Память, Мбайт Время, с Память, Мбайт Время, с Память, Мбайт Время, с Память, Мбайт

Просеивание 4 200 19 880 З 155 2З 990

Метод Бернштейна З 5 1З 5 З 29 25 З0

Таким образом, метод Бернштейна существенно выигрывает по памяти и времени при небольшой мощности факторной базы, однако при увеличении размеров факторной базы и просеиваемых чисел метод просеивания с логарифмированием догоняет и обгоняет метод Бернштейна по времени, хотя и существенно проигрывает по памяти.

ЛИТЕРАТУРА

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

2. Крендалл Р., Померанс К. Простые числа: криптографические и вычислительные аспекты. М.: УРСС, Либроком, 2011.

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