Целью данной работы является разработка модернизированного ассоциативного k-арного алгоритма Евклида.
Алгоритм Евклида является старейшим математическим алгоритмом, применяемым в наше время. Данный алгоритм во всех своих различных методах реализации по сей день применяется в математике и криптографии. С его помощью можно эффективным и быстрым способом найти наибольший общий делитель (НОД) двух целых чисел А > В > 0, определить являются ли два положительных числа взаимно простыми . Со временем у алгоритма появились различные методы его реализации для увеличения его эффективности при работе с большими числами.
В нашей работе мы рассмотрим:
• Классический алгоритм Евклида
• Бинарный алгоритм Евклида
• k-арный алгоритм Евклида
• Ассоциативный k-арный алгоритм Евклида
Для того чтобы найти возможность модификации самой современной его версии, мы постараемся углубленно изучить алгоритм Евклида. Для этого мы реализуем упомянутые выше методы реализации алгоритма Евклида поиска наибольшего общего делителя. Сравним данные алгоритмы по различным параметрам (скорости работы и количеству итераций), а также на основе получившихся результатов выдвинем предположения по оптимизации работы последней предложенной версии алгоритма Евклида.
Также для ускорения умножения больших чисел, рассмотрим, реализуем и сравним друг с другом (по времени работы) методы быстрого умножения:
• алгоритм Карацубы
• алгоритм Тоома-Кука
• алгоритм Шёнхаге — Штрассена
Для поиска правильной дроби в ассоциативном k-арном алгоритме Евклида, представленном в статье [1], рассмотрим дерево всех неотрицательных несократимых дробей — дерево Штерна-Броко. Сравним его использование со стандартным применением ряда Фарея. Для этого встроим функцию построения дерева и поиска коэффициентов х, у в ассоциативный k-арный алгоритм и сравним его с исходным вариантом по различным параметрам (времени работы и количеству итераций).
В данной работе был исследован один из старейших математических алгоритмов для вычисления наибольшего общего делителя, применяемый в наше время - алгоритм Евклида. На основе проведенного исследования была разработана мотивированная версия ассоциативного k-арного алгоритма Евклида поиска больших положительных чисел.
В нашей работе мы реализовали и сравнили между собой по различным параметрам:
• Классический алгоритм Евклида
• Бинарный алгоритм Евклида
• k-арный алгоритм Евклида
• Ассоциативный k-арный алгоритм Евклида
Проведенные эксперименты показали, что современные версии алгоритма значительно сокращают количество итераций для чисел длиной более 2000 десятичных знаков, но по скорости уступают классической версии. Для чисел меньшей длины старейшая версия алгоритма является самой оптимальной, но для больших чисел нужно использовать современные методы реализации алгоритма.
Для ускорения умножения больших чисел, были изучены и реализованы алгоритмы быстрого умножения:
• алгоритм Карацубы
• алгоритм Тоома-Кука
• алгоритм Шёнгаре-Штрассена
На основе полученных результатов выдвинули предположения по оптимизации работы последней предложенной версии алгоритма Евклида. Было решено для поиска правильно дроби в ассоциативном алгоритме [1], использовать дерево Штерна-Броко. А сокращение числителя и знаменателя в правильной дроби г осуществлять не делением пополам, а на 2 в степени наиболее близкой по значению к к, что дало значительное уменьшение времени работы алгоритма на больших входных данных.
Была реализована модифицированная версия ассоциативного алгоритма, при помощи дерева Штерна-Броко и алгоритмов быстрого умножения. Проведенные эксперименты показали, что данные процедуры позволили сократить количество итераций при вычислении НОД больших чисел, но при этом проигрывают в быстродействии своим аналогам.
1. S. Ishmukhametov, An Approximating k-ary GCD Algorithm, in Lobachevskii Journal of Mathematics 37(6), 723-729 (2016)
2. S. Ishmukhametov, B. Mubarakov, On practical aspects of the Miller-Rabin Pri- mality Test, Lobachevskii Journal of Mathematics 34 (4), 304-312 (2013).
3. J. Sorenson, J. Webster, Strong Pseudoprimes to Twelve Prime Bases, Mathe-matics of Computation, 1-17 (2015).
4. Sorenson J. The k-ary GCD Algorithm, Universitet of Wisconsin-Madison, Tecn.Report, 1-20 (1990)
5. Sorrenson J.Two fast GCD Algorithms, J.Alg. 16, №1, 110-144 (1994)
6. Weber K. The accelerated integer GCD algorithm, ACM Trans.Math.Software, 21, №1, 1-12 (1995)
7. Jebelean T. A Generalization of the Binary GCD Algorithm, Proc. of Intern.Symp.on Symb.and Algebr.Comp.(ISSAC’93), 111-116 (1993)
8. Карацуба А. А. Сложность вычислений. — Тр. МИАН. — 1995. — Т. 211. — С. 186-202.
9. Кнут Д. Искусство программирования. — 3-е изд. — М.:Вильямс, 2007. — Т. 2. Получисленные алгоритмы. — 832 с.
10. Sai Krishna Yedugani Toom-Cook
11. Schonhage A., Strassen V. Schnelle Multiplikation groBer Zahlen, Computing.— № 7,281-292(1971)
12. Peter Sutor Jr. An implementation and analysis of furer’s faster integer multiplication algorithm, (2014)