Научная статья на тему 'К решению больших систем сравнений'

К решению больших систем сравнений Текст научной статьи по специальности «Математика»

CC BY
155
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВЗАИМНО ПРОСТАЯ БАЗА / НАИБОЛЬШИЙ ОБЩИЙ ДЕЛИТЕЛЬ / ДЕРЕВО НАИБОЛЬШИХ ОБЩИХ ДЕЛИТЕЛЕЙ / НОД СЛИЯНИЕМ / COPRIME BASE / GCD / MERGE GCD / GCD TREE

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

Пусть дано конечное множество S натуральных чисел, такое, что почти все его элементы попарно взаимно просты. Рассматривается алгоритм нахождения всех элементов s Е S, таких, что (s, s') > 1 для некоторого s' Е S, s' = s, который позволяет сводить произвольную систему полиномиальных сравнений к нескольким системам с взаимно простыми модулями.

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

On solving big systems of congruences

Let S be a finite set of positive integers such that almost all its elements are pairwise coprime. An algorithm is presented for finding all elements s E S, such that (s,s') > 1 for an element s' E S, s' = s. The algorithm allows to reduce any system of polynomial congruences to a number of systems with coprime moduli.

Текст научной работы на тему «К решению больших систем сравнений»

9. Куликов А. С., Федин С. С. Автоматические доказательства верхних оценок на время работы алгоритмов расщепления // Теория сложности вычислений. IX. Зап. научн. сем. ПОМИ. СПб., 2004. Т. 316. С. 111-128.

10. Быкова В. В. Математические методы анализа рекурсивных алгоритмов // Журнал Сибирского федерального университета. Сер. Математика и физика. 2008. №1(3). С. 236-246.

УДК 519.6

К РЕШЕНИЮ БОЛЬШИХ СИСТЕМ СРАВНЕНИЙ

К. Д. Жуков, А. С. Рыбаков

Пусть дано конечное множество 5 натуральных чисел, такое, что почти все его элементы попарно взаимно просты. Рассматривается алгоритм нахождения всех элементов в € 5, таких, что (в, в') > 1 для некоторого в' € 5, в' = в, который позволяет сводить произвольную систему полиномиальных сравнений к нескольким системам с взаимно простыми модулями.

Ключевые слова: взаимно простая база, наибольший общий делитель, дерево наибольших общих делителей, НОД слиянием.

Определение 1. Пусть Б — конечное подмножество натуральных чисел. Взаимно простой базой для Б называется конечное подмножество натуральных чисел В, такое, что любое число из Б представляется в виде произведения элементов из В и любые два элемента множества В взаимно просты.

Взаимно простые базы используются в ряде приложений, например при решении систем сравнений в целых числах [1].

Пусть задана система полиномиальных сравнений вида /Дх) = 0 (mod а^), г = = 0,1,...,т — 1, где х — набор переменных. Построим для множества чисел

(ао,... ,ат-1} взаимно простую базу (Ь0,... ,Ьг-1}. Для каждого элемента нужно последовательно составить системы сравнений по модулям Ь^, где I = 1, 2,... ,tj, а — максимальное, для которого найдётся а^, делящееся на Ь^. В эти системы войдут те уравнения / (х) = 0, для которых число а% делится на ^. Поднимая по лемме Гензеля решения от системы к системе, получим множество решений по модулю Ь?. Найдя такие решения для каждого Ьj, применим китайскую теорему об остатках, чтобы получить решения вида х то^ [] Ь^. Каждое такое решение будет решением исходной

j

системы.

Построение взаимно простой базы применяется и в других приложениях, например в задачах нахождения алгебраических зависимостей среди радикалов [2], вычисления нормальных базисов в расширениях полей [3] и др. [4].

В работе [4] Д. Бернштейн предложил алгоритм построения взаимно простой базы с некоторыми дополнительными свойствами, называемой естественной взаимно простой базой.

Ниже предлагается подход к построению взаимно простой базы для специального случая. Подход эффективен, когда заранее известно, что нетривиальная часть взаимно простой базы (элементы, отличные от 1 и не содержащиеся в Б) достаточно мала. Метод состоит в том, чтобы быстро отбросить элементы в € Б, такие, что (в, в') = 1 для любого в' € Б, в' = в. Для остальных чисел можно применить известные алгоритмы построения взаимно простой базы.

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

из S \ {s}. Везде далее через lg обозначен логарифм по основанию 2.

Алгоритм 1

Вход: Б = {а0,... , ат-1} —множество различных п-битовых натуральных чисел (для

упрощения m — степень двойки)

Выход: Т — подмножество Б, такое, что для любого в Е Т и для некоторого в' Е Б,

в' = в, выполняется условие (в, в') > 1.

1 Для всех г = 0,..., т — 1

—— Яг.

2 Для всех г = 1, 2,..., ^ т

З Для всех ] = 0,1,..., 21®т-г — 1

4 Л — (а^, а2^+1).

5 Если Л =1, то

б Для всех 1 = ]2г,]2г + 1,..., (] + 1)2г — 1

Т Если (Л, аг) = 1, то

Т — Т и {аг};

В а^ — ^ ■ а2^+1.

9 Вывести Т

Важное свойство алгоритма 1 заключается в том, что в памяти нужно хранить только текущий уровень дерева, а не всё дерево. Отсюда следует, что алгоритму 1 требуется O(mn) битов памяти. Трудоёмкость алгоритма складывается из трудоёмкости вычисления дерева наибольших общих делителей (O(mn lg m lg2 (ny^) lglg(mn)) битовых операций) и трудоёмкости всех вызовов цикла в строках 6 и 7 (O(kmnlgmx х lg(kn) lglg(kn)) битовых операций, где k = |T|).

Несложно видеть, что при k < lg2(mn) трудоёмкость описанного алгоритма не превосходит оценки трудоёмкости алгоритма Бернштейна в O(mn lg m lg (nm) lglg(mn)) битовых операций.

Известен ещё один подход к выявлению множества T, вытекающий из работы [5].

m— 1

Вычисляется произведение U = П ai с помощью дерева произведений. Затем вычис-

i=0

ляются величины bi = U mod a2, i = 0,... , m — 1, с помощью дерева остатков. На выход подаются те числа ai, для которых (bi/ai,ai) = 1. Трудоёмкость построения деревьев произведений и остатков оценивается в O(mn lg m lg(nm) lglg(mn)) битовых операций. При этом построение дерева остатков требует O(mnlgm) битов памяти, что в lgm раз больше, чем требуемая память для алгоритма 1.

ЛИТЕРАТУРА

1. Bach E., Miller G, and Shallit J. Factor refinement // J. Algorithms. 1993. No. 15. P. 199-222.

2. Smedley T. J Detecting algebraic dependencies between unnested radicals: extended abstract // Proc. Intern. Symp. on Symbolic and Algebraic Computation. Tokyo, Japan, 1990. P. 292-293.

3. Luneburg H. On a little but useful algorithm // AAECC’85. LNCS. 1986. V. 229. P. 296-301.

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. Выбираем произвольное a, 1 < a < 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].

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

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

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

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

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

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

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

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

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

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

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