Научная статья на тему 'ОБЗОР МЕТОДОВ И ОЦЕНКА СЛОЖНОСТИ АЛГОРИТМОВ ОПЕРАЦИЙ СРАВНЕНИЯ В МОДУЛЯРНОЙ АРИФМЕТИКЕ И ПЕРЕВОДА ИЗ МОДУЛЯРНОЙ СИСТЕМЫ В ПОЗИЦИОННУЮ СИСТЕМУ СЧИСЛЕНИЯ'

ОБЗОР МЕТОДОВ И ОЦЕНКА СЛОЖНОСТИ АЛГОРИТМОВ ОПЕРАЦИЙ СРАВНЕНИЯ В МОДУЛЯРНОЙ АРИФМЕТИКЕ И ПЕРЕВОДА ИЗ МОДУЛЯРНОЙ СИСТЕМЫ В ПОЗИЦИОННУЮ СИСТЕМУ СЧИСЛЕНИЯ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
117
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МОДУЛЯРНАЯ АРИФМЕТИКА / МОДУЛЬНЫЕ ОПЕРАЦИИ / НЕМОДУЛЬНЫЕ ОПЕРАЦИИ / СРАВНЕНИЕ ЧИСЕЛ / КИТАЙСКАЯ ТЕОРЕМА ОБ ОСТАТКАХ / РАНГ ЧИСЛА / СЛОЖНОСТЬ АЛГОРИТМОВ / МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Золотарева Н.С.

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Золотарева Н.С.

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

METHODS REVIEW AND COMPLEXITY ESTIMATION OF THE ALGORITHMS FOR COMPARISON OPERATIONS IN MODULAR ARITHMETIC AND TRANSFER OPERATIONS FROM A MODULAR NUMBER SYSTEM TO A POSITIONAL NUMBER SYSTEM

The article presents a mathematical description of methods for performing non-modular operations in modular arithmetic, such as transfer operations from a modular number system to a positional number system and comparison operations in a modular number system. A program for simulating algorithms on a computer was developed in Python. The study provides examples and results of the algorithms’ performance. The algorithms’ complexity is estimated in order to compare them and determine the most effective one.

Текст научной работы на тему «ОБЗОР МЕТОДОВ И ОЦЕНКА СЛОЖНОСТИ АЛГОРИТМОВ ОПЕРАЦИЙ СРАВНЕНИЯ В МОДУЛЯРНОЙ АРИФМЕТИКЕ И ПЕРЕВОДА ИЗ МОДУЛЯРНОЙ СИСТЕМЫ В ПОЗИЦИОННУЮ СИСТЕМУ СЧИСЛЕНИЯ»

Научная статья УДК 519.6+004.43

doi: 10.34822/1999-7604-2022-4-77-90

ОБЗОР МЕТОДОВ И ОЦЕНКА СЛОЖНОСТИ АЛГОРИТМОВ ОПЕРАЦИЙ СРАВНЕНИЯ В МОДУЛЯРНОЙ АРИФМЕТИКЕ И ПЕРЕВОДА ИЗ МОДУЛЯРНОЙ СИСТЕМЫ В ПОЗИЦИОННУЮ СИСТЕМУ СЧИСЛЕНИЯ

Наталья Сергеевна Золотарева

Сургутский государственный университет, Сургут, Россия zolotareva_ns@surgu.ru, https://orcid.org/0000-0001-9751-4232

Аннотация. Изложено математическое описание методов выполнения немодульных операций в модулярной арифметике: перевод из модулярной системы счисления в позиционную систему счисления и операции сравнения в модулярной системе счисления. Разработана программа на языке Python, моделирующая выполнение алгоритмов на электронно-вычислительной машине. Приведены примеры и представлены результаты работы алгоритмов. Выполнены оценки сложности алгоритмов для их сравнения и выявления оптимальных.

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

Для цитирования: Золотарева Н. С. Обзор методов и оценка сложности алгоритмов операций сравнения в модулярной арифметике и перевода из модулярной системы в позиционную систему счисления //Вестник кибернетики. 2022. № 4 (48). С. 77-90. DOI 10.34822/1999-7604-2022-4-77-90.

Original article

METHODS REVIEW AND COMPLEXITY ESTIMATION OF THE ALGORITHMS FOR COMPARISON OPERATIONS IN MODULAR ARITHMETIC AND TRANSFER OPERATIONS FROM A MODULAR NUMBER SYSTEM TO A POSITIONAL NUMBER SYSTEM

Natalya S. Zolotareva

Surgut State University, Surgut, Russia

zolotareva_ns@surgu.ru, https://orcid.org/0000-0001-9751-4232

Abstract. The article presents a mathematical description of methods for performing non-modular operations in modular arithmetic, such as transfer operations from a modular number system to a positional number system and comparison operations in a modular number system. A program for simulating algorithms on a computer was developed in Python. The study provides examples and results of the algorithms' performance. The algorithms' complexity is estimated in order to compare them and determine the most effective one.

Keywords: modular arithmetic, modular operations, non-modular operations, number comparison, Chinese remainder theorem, number rank, complexity of algorithms, mathematical modeling

For citation: Zolotareva N. S. Methods Review and Complexity Estimation of the Algorithms for Comparison Operations in Modular Arithmetic and Transfer Operations from a Modular Number System to a Positional Number System // Proceedings in Cybernetics. 2022. No. 4 (48). P. 77-90. DOI 10.34822/19997604-2022-4-77-90.

ВВЕДЕНИЕ лами, который основан на положениях тео-

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

лом A, а его остатками или вычетами а = A (mod рх), а2 = A (mod р2) , ..., аи = = A (mod pn), где p\, pi, ..., pn - модули, не содержащие общих делителей (взаимно-простых). Множество чисел, над которыми можно выполнять операции модулярной арифметики, - это P = р ■ p2 •...• ри (произведение модулей), вычеты определяются

как а = A -

Pi, i = 1,2,..., n,

- целая

часть меньшая или равная числу. Любое целое положительное число A из диапазона P можно представить в виде набора остатков от деления этого числа на выбранные основания системы, то есть А = (ар а2,..., аи) [1].

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

Операции сложения, вычитания и умножения в модулярной арифметике относятся к модульным. Это операции, в которых действия над числами можно проводить независимо в параллельных каналах [2]. На компьютере с параллельным выполнением операций применение модулярной арифметики дает значительное преимущество в скорости для модульных операций. Операции, связанные с разными модулями, могут выполняться одновременно, и возникает повышение скорости их выполнения.

Преимущество представления чисел в модулярной системе счисления заключается в том, что операции сложения, вычитания и умножения выполняются достаточно просто:

(а1 > а2,-,а„) + (Р1,в2— Рп) = = ((а1 + Р1) mod р,(а„ + р„) mod рп),

(а1 ,а2,..., ап)-(р1,р2 —Рп) = = ((а1 - р1 ) mod Р1, ..., (ап - Рп ) mod Рп X (а15 а2 ,...,ап ) ■ (р1.р2 —Рп ) =

= ((а1 ■ Р1)mod Р1, ..., (ап ■ Рп )mod Рп ).

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

(1)

Основной недостаток представления чисел в модулярной системе счисления состоит в том, что непросто проверить, является ли (aj ,а2,..., ап) большим, чем (pt, р2,..., Pn). Трудно установить возникновение переполнения в результате выполнения операций сложения, вычитания и умножения, сложно выполнять операцию деления. Возникает необходимость выполнения немодульных операций, которые являются медленными, что вызывает определенные трудности.

Немодульные операции - это операции, в которых необходимо знать информацию обо всем числе и приходится восстанавливать позиционное представление числа. К немодульным операциям модулярной арифметики можно отнести следующие: перевод числа из модулярной системы счисления в позиционную, деление, вычисление позиционных характеристик (след, ядро, ранг и др.), расширение системы оснований, сравнение чисел, масштабирование чисел и др. [2-6].

МАТЕРИАЛЫ И МЕТОДЫ

К настоящему времени разработаны и продолжают разрабатывать алгоритмы выполнения перечисленных операций. Однако, несмотря на многочисленное количество работ в этой области [3, 6-12], еще остается много нерешенных вопросов.

В работе сосредоточено внимание на особенностях выполнения сложных и неочевидных алгоритмов. На первом этапе осуществлен анализ различных методов и алгоритмов выполнения модульных и немодульных операций в модулярной системе счисления. Далее в работе излагается материал относительно следующих немодульных операций: перевод из модулярной системы счисления (МСС) в позиционную систему счисления (ПСС) и сравнение чисел в МСС. Для каждой операции было выбрано два метода. Приведены их математическое описание и примеры расчета. На втором этапе были разработаны программы на языке Python, моделирующие выполнение алгоритмов на ЭВМ. На третьем этапе произведено сравнение алгоритмов между собой, а именно выполнена оценка сложности алгоритмов с целью выявления оптимальных.

Рассмотрим анализ существующих методов выполнения немодульных операций.

1. Перевод из модулярной системы счисления в позиционную систему счисления.

Переход из модулярной системы счисления в позиционную систему счисления выполняется с основанием, равным 10. То есть целое положительное число A представимо в виде:

a = an -10" + an 'Ю

1 +...+a -101 + a,

A = A (mod P).

(2)

Пусть основания модулярной системы pl, p2, ..., pn, Р = р • р' •••' Ри - мощность диапазона модулярной системы. С выбором системы определяются ее основные константы -базисы Б, = (Р1г, р2г,..., вт ), i = 1, 2, п. Задача перевода числа А = (а, а2,..., аи) в ПСС

заключается в определении таких чисел Mi, i = 1, 2, ..., п, чтобы А = Ът=хМБ1 • Для однозначного определения Mi на базисы системы Bi накладывается ряд ограничений и показывается, что таким свойством обладают базисы [13]:

где ai - целые десятичные цифры в интервале [0, 9].

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

Существуют как традиционные (метод ортогональных базисов, метод перевода в обобщенную позиционную систему счисления), так и новые методы перевода (интервальные методы перевода) [3, 6, 7].

Метод ортогональных базисов.

Основой метода ортогональных базисов является Китайская теорема об остатках (КТО) [7].

Теорема: Пусть pl, p2, ..., pn - попарно взаимно простые числа, Р = р • р2 • ...• р,

у1, у2,..., Ут подобраны так, что — у. =

Рг

Р

= 1(шсёр), А0 = £т=1 — Уга, г = 1, 2,..., п . ТоР

гда решение системы А = aг(modр.), г = 1, 2,..., п будет иметь вид:

B = (1, 0, 0,...,0, 0), B = (0,1, 0,...,0, 0):

Bn = (0, 0, 0,...,0,1):

(3)

которые называют ортогональными.

Тогда в случае ортогональных базисов М = а, г = 1,2,..., т. Ортогональные базисы определяют по формуле:

B =

m ■ p

pi

= m ■ P, i = 1, 2,

(4)

P

где p =—, Рг

mi - целые положительные числа, которые называются весами базиса. Их определяют из сравнений:

P ■ mt = 1(modpt). (5)

Тогда, по КТО, число:

A = (a15 a2,..., an) = YT^aB,(modP). (6)

Таким образом, если найдены ортогональные базисы для системы оснований, то для перевода числа A = (ap a2,..., an) достаточно вычислить 2"=1 aB и ввести эту сумму в диапазон [0; P) вычитанием величины, кратной P, т. е.:

A = ПВ Ip = Y"=^rAP,

(7)

где гл - ранг числа A, показывающий, сколько раз надо вычесть мощность диапазона Р из полученного числа, чтобы вернуть его в диапазон [14].

Пример 1. Пусть дана система оснований Р1 = 32765, р2 = 32767, рз = 32768, р4 = = 32769, р5 = 32771. Мощность диапазона модулярной системы Р = р • р2 • р • р • р = = 37778931511113441116160. Переведем число,

представленное в МСС A = (36, 4, 0, 4, 36), в ПСС.

Вычислим ортогональные базисы. Для этого найдем величин Pi по формуле:

p=P,

(8)

где P - диапазон модулярной системы, pl, p2, ..., pn - основания.

р_Р_ 37778931511113441116160 _ 1= р ~ 32765 =

=1153027056649273344, __р_ 37778931511113441116160 _

2 р2 32765

=1152956679314964480,

37778931511113441116160 _

3 = р3 " 32765 =

=1152921493869428745, __р_ 37778931511113441116160 _

Рл

4 р4 32765

=1152886310571376640, р 37778931511113441116160

Р5

P5 = —=

32765

=1152815950416936960.

P • m3 = 1(mod р )

m = (-1)п ■ Fn_1 ■ 1(mod P3),

(9)

где Fo = F1 = q ■ q +1..... Fn = qn ■ Fn-i + Fn-2.

_32768__

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

P " 1152921493869428845 =

= [ 4o, 41, 42, 43, 44 ] = = [0, 35184371761152, 36340,1, 8],

35184371761152+

3640 +

1 +

Веса базисов вычислим по формуле (5). Для нашего случая:

115292149386948745 • щ = 1(шоё32768).

Вычислим mз методом цепных дробей, содержащим этапы:

8

Последним элементом является д4, и индекс равен 4, следовательно, п = 4. Получим:

Щ3 = (-1)п ■ Рп-1 ■ 1(шоё р) = (-1)4 ■ ■ 1(шоё 32768) = 1 р ■ 1(шоё 32768) = 1 ■ 3641 ■ 1(шоё 32768) = 3641

= 43 ■ ^3 -1 + ^3 - 2 = 43 ■ ^2 + =

= 43(42(4С ■ 41 +1) + 4с) + 4с ■ 41 +1 = = 1(3640(0 ■ 35184371761152 +1) + 0) + + 0 ■ 35184371761152 +1 = 3641 1152921493869428745 ■ щ = 3641(шоё 32768), щ = 3641(шоё32768) = 3641.

Аналогично вычисляются константы ml,

m2, m4, m5:

ml = 9784, m2 = 30719, m4 = 2048, m5 = 1934.

Определим ортогональные базисы по формуле (4):

В = щ ■ р = 9784■1153027056649273344 =

=11281216722256490397696, В =щ ■ р =30719 ■ 1152956679314964480 =

= 35417676231876393861120, В = щ ■ Р = 3641■1152921493869428745 =

= 4197787159178590060545, В = щ ■ р = 9784■1152886310571376640 =

= 2361111164050179358720, В =щ ■ Р =19344■1152815950416936960 = = 22300071744865228554240.

Вычислим величину числа А согласно формуле (6), зная, что A = (а1, а2, ..., ап) = = (36, 4, 0, 4, 36):

1

1

1

1

a = (а • в + а ■ B + а ■ B + а4 ■ B + а ■ B)х X (modP) = (36•11281216722256490397696 + + 4•35417676231876393861120 + + 0 •4197787159178590060545 + + 4•2361111164050179358720 + + 36•22300071744865228554240) х х (mod3778931511113441116160) = = (406123802001233654317056 + + 141670704927505575444480 + 0 + + 9444444656200717434880 + + 802802582815148227952640)х х (mod3778931511113441116160) =

=1360041534400088175149056х х (mod3778931511113441116160) = = 4294967296.

Получаем А = 4294967296.

Метод перевода определения величины числа из МСС в обобщенную позиционную систему счисления (ОПСС).

Пусть МСС задается основаниями pi, p2, ..., pn, и А = (ai, a2, ..., an) - число в этой системе. Число в ОПСС задается кортежем

[ x, X,..., xn ], основаниями системы являются следующие константы pi, pip2, pip2p3, pip2 . pn - i. Число X в ОПСС можно представить в виде:

X = XnPlP2 ••• Pn -1 + Xn - lPlP2 ••• Pn - 2

+ ... + x3P1P2 + x2Px + x,

jk -1,

+

x = X -где X1 =

x P1

P1 = X - X1P1,

X

P1

X2 = X1 -

JZL

P2

P2 = X1 - X2P2

где X =

P2

(ii)

x — X i —

n n -1

где X =

Pn

P = X , - X p

-T n n — 1 n-Ти

x„

Pn

При определении цифр xi по формулам (11) все вычисления можно вести в МСС.

Из (11) следует, что х = |х| , то есть xl -

первая МСС цифра, или xl = а1. Для получения xl сперва X - xl представим в остаточной коде. Очевидно, X- xl делится на pl. Более того, pl взаимно просто со всеми другими модулями. Следовательно, для нахождения цифры X2 может быть использована проце-

« X - Х1

дура деления без остатка: х2 =-1

P1

P2

(i0)

где 0<хк <И,--Р1, I = 1, 2, ..., п - коэффициенты ОПСС [6].

Очевидно, что диапазоны чисел, предста-вимых в МСС и ОПСС, совпадают, имеется взаимно-однозначное соответствие между множеством представлений чисел в МСС и ОПСС.

Равенство (10) можно переписать в виде:

X = х + Р (х2 + Р2 (х3 + ... +

+ Рп - 2 (хп -1 + Рп - 1хп )...)).

Откуда следует, что цифры ОПСС могут быть получены из соотношений:

Таким путем с помощью вычитаний и делений в остаточной записи все цифры ОПСС могут быть получены. При этом

X =1 Ч '

" X" " X ]

x2 = — , x3 =

_ Р1 _ Р2 _ Р1Р2 J

P3

x =

X

P1P2 •• Рг -

i > i.

Р3

Перевод, осуществляемый согласно алго-

п (п -1)

ритму (11), содержит всего —^—- остаточные арифметические операции вычитания и деления без остатка, где п - число модулей системы. Может быть предложена некоторая модификация рассмотренного алгоритма

в том плане, что операция деления заменяется операцией умножения. Для этого предварит (т -1)

тельно вычисляется

2

констант t^, ко-

торые удовлетворяют условию:

11дрк = 1(р} ),(1 ^ к < ] ^ т).

Эти константы можно получить, например, из расширенного алгоритма Евклида:

^рк +ур] = НОД(рк,Р] ) = 1 [15].

Здесь следует заметить тот факт, что константы ^ полностью определяются к выбранной системой основания, поэтому могут быть вычислены заранее и храниться в некоторой таблице.

Если константы ^ вычислены, то вычисление цифр х ОПСС по алгоритму (11) может быть переписано в виде [6]:

X = (mod p ), X2 = (а2 - X1) ■ t12 (m0d P2 ) ,

X3 = ((a3 - X1) ■ t13 - X2) ■ t23 (m0d P3 ) ,

(12)

Xn = ((-(«n - X) ■ t1n - X2)---Xn-1) X

X tn-1n (m0d Pn ) .

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

Константы t принято также записывать в виде:

tkj =

1

Pk

(13)

и называть обратными элементами по умножению для чисел р по модулю р .

Пример 2. Пусть дана система оснований р = 32765, р2 = 32767, р = 32768, р4 = = 32769, р = 32771. Мощность диапазона модулярной системы Р = р • р2 • р • р • р = = 37778931511113441116160. Переведем число, представленное в МСС А = (36,4,0,4,36), в ПСС.

Сначала найдем константы ^ , используя формулу (13):

t12

1 1

Р1 Р2 32765 32767

=16383.

Опишем, как вычислить Эта запись равносильна 1

1

32767

32765

Введем следующее обозначение:

Р1 '

32765 (mod 32767).

Р ■ x = 1(modp2).

То есть pj • х — 1: т. Тогда:

1

■ = X.

32765 Вычислим сравнение:

32765 ■ x = 1( mod 32767).

Здесь можно воспользоваться алгоритмом цепных дробей:

1 + -

1

16382+

1 2

32767

= [ 42 ] = [1,16382,2].

32765

n = 2, так как q2 последний элемент.

x = (-1)n ■ Fn-1 ■1(modP2 ) = = (-1)2 ■ F2_! 4(mod32767) = = 1 F ■ 1(mod 32767) = 16383 (mod 32767) = =16383.

F = q ■ q+1=1^16382+1=16383.

Вернемся к нашему сравнению: 32765 ■ x = = 1( mod 32767).

p

Подставим x = 16383:

32765-16383 = 1( mod 32767), 536788995 = 1( mod 32767).

Действительно, 536788995-li32767. То есть:

t12

1

P1

1

Р2 32765

=16383.

32767

станты ^ :

23

1

32765 1

= 16383;

32767

32765 1

= 21845;

32768

32765 1

= 8192;

32769

32765 1

= 27309;

32771

32767 1

= 32767;

32768

25

4

35

32767 1

=16384;

32769

32767 1

= 24578;

32768 1

= 16384;

32769

32768 1

= 21847;

32769

= 16385.

32771

Константы t запишем в виде матрицы k x j:

16383 21845 8192 27309Л 0 0 32767 16384 24578

V

0 0 0 16384 21847 0 0 0 0 16385

у

Далее аналогично находим остальные кон-

Далее найдем x, x2, x3, x4 по формуле (12), зная, что:

A = ( a, a2,a3, a4, a) = (36,4,0,4,36); p = 32765, p2 = 32767,p3 = 32768, p4 = 32769,p5 = 32771, xx = a (mod px) = 36 (mod 32765) = 36,

x2 = («2 - x1) ■ t12 ( mod P2 ) = = ( 4 - 36)46383 (mod 32767 ) = = -524256 (mod 32767 ) = 16, x3 = ((a3 - x) ■ Чъ - x2) ■ t23 (mod p3) = = ((0 - 36) ■ 21845 -16) ■ 32767 (mod32768) = = -25769148412 (mod 32768) = 4,

x4 = (((a4 - x1) ■ t14 - x2 ) ■ t24 ) - x3 ) ■ t34 ) (mod P4 ) =

= (((4 - 36) ■ 8192 -16) ■ 16384 - 4) ■ 16384) x x (mod 32769) = - 70373039210496(mod 32769) = 0,

x5 = ((((«5 - x ) ■ t15 - x2) ■ t25) - x3) ■ t35) - x4) ■ t45) X

x (mod p5) = (((36 - 36) ■ 27309 -16) ■ 24578 - 4) x x 21847) - 0) .16385)(mod32771) = = -140769703034940 (mod32771) = 0.

Запишем результат в виде табл. 1.

Таблица 1

Промежуточные вычисления метода перевода в обобщенную позиционную систему счисления

2

13

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

4

5

24

32771

32771

45

Операции Модули Цифры ОПСС

pi = 32765 pi = 32767 pi = 32768 pi = 32769 pi = 32771

A 36 4 0 4 36

- x1 = 36

x1 36 36 36 36 36

Окончание табл. 1

Модули Цифры

Операции pi = 32765 pi = 32767 pi = 32768 pi = 32769 pi = 32771 ОПСС

A-x1 32735 32732 32737 0

X 0

<ij 16383 21845 8192 27309

A 1 6 12 8 0

- X 2 II 6

x2 16 16 16 16

A1 -x2 32764 32761 32755

X 0

hj 32767 16384 24578

A2 4 4 4

— X II 4

x3 4 4 4

A2 — x3 0 0

X 0

hj 16384 21847

A3 0 0

— x4 = 0

X4 0 0

A3 —ax4 0

X 0

'4 j 16385

A4 0 X5 = 0

Примечание: составлено автором на основании данных, полученных в исследовании.

Применяя формулу (10), получим:

X = х5р1р2р3р4 + х4р1р2р3 + х3р1р2 + х2р1 +х1 = = 0•32765•32767•32768•32769 + 0 • 32765•32767 х

х 32768 + 4 • 32765 • 32767 +16 • 32765 + 36 = = 0 + 0 + 4294443020 + 524240 + 36 = 42944967296.

2. Сравнение чисел в МСС.

Исследование и совершенствование существующих, а также разработка новых методов и алгоритмов реализации немодульной операции сравнения данных, представленных в модулярной арифметике, является важной и актуальной задачей [8-12]. Операция сравнения чисел широко используется при реализации большинства алгоритмов. Можно заметить, что в модулярной арифметике имеется три группы методов сравнения [8-10]. К первой группе относятся методы, основанные на преобразовании чисел из модулярной системы счисления в позиционную, далее выполнятся

сравнение полученных чисел. Ко второй группе относятся методы, основанные на применении понятия нулевизации [3]. К третьей группе относятся методы, основанные на использовании позиционных характеристик.

Метод, основанный на переводе из чисел из МСС в ПСС.

Для перевода числа из МСС в ППС используется стандартное восстановление с помощью КТО [3], которую можно записать формулой:

X =

» ■ X "IP"1 д

г=1 1

(14)

р , ,

где р = —, а р 1 - мультипликативная ин-р. I г 1Л

версия р по модулю р .

Рассмотрим пример восстановления числа по формуле (14) и сравнения чисел.

p

Пример 3. Пусть задана МСС р =32765, р = 32767,р3 =32768,р4 =32769,

и р =32771 числа X = (36,4,0,4,36), У = (9,1, 0,1, 9). Мощность диапазона модулярной системы счисления равна Р = р • р2 • р3 • р4 • р5 = = 37778931511113441116160. Сравним числа X и У.

Применяя формулы (8) и (5), вычислим

р, т.

Из примера 1 Р, Р2, Р3, Р4, Р5, т, т, т, т, т, соответственно, равны:

Р =1153027056649273344, Р =1152956679314964480, Р =1152921493869428745, Р4 =1152886310571376640, Р =1152815950416936960, т =9784, т =30719, т =3641, т =2048, т =19344.

Применяя формулу (14), найдем значение чисел X и У:

1153027056649273344•36•9784 + +1152956679314964480•4•30719 + X = +1152921493869428745•0•3641+ +1152886310571376640•4•2048 + +1152815950416936960•36• 19344 406123802001233654317056+ +141670704927505575444480+ +9444444656200717434880 + +802802582815148227952640 = 1360041534400088175149056] 4294967296. 1153027056649273344•9•9784 + +1152956679314964480•1 • 30719 + У = +1152921493869428745•0•3641+ +1152886310571376640•1 • 2048 + +1152815950416936960•9• 19344 101530950500308413579264+ +35417676231876393861120+ +2361111164050179358720+ +200700645703787056988160 = |340010383600022043787264| = 1073741824

37778931511113441116160

37778931511113441116160 37778931511113441116160 =

37778931511113441116160

37778931511113441116160 37778931511113441116160 =

Метод с использованием позиционных характеристик.

Отличным от вышеизложенного метода сравнения чисел является метод на основе использования минимальной функции ядра Акушского [10].

Была предложена аналитическая функция для вычисления Ргг1о функции:

Рг (X)=££* • X , (15)

г =1 р

1 т

Р 1 • Р

, ** I г Iр г

где к* =-!-.

рп

Так как функция Ргг1о является монотонно возрастающей, то она может быть использована для сравнения чисел, т. е. если

РI(X)< РI(У), то X < У. Однако возможны случаи, когда Рг (X) = Рг (У), и в этом случае X < У, когда хп < уп.

Пример 4. Пусть задана МСС р = 32765, р = 32767, р = 32768, р = 32769,

р = 32771 и числа X = (36, 4, 0, 4, 36), У = (9,1, 0,1, 9). Мощность диапазона модулярной системы счисления равна Р = = р • р2 •р• р4 •р =37778931511113441116160.

Сравним числа X и У. Вычислим значения:

Р =1152815950416936960, И 1р 'Р 9784•1153027056649273344

** к2 =

к3 =

к4 =

р5 32771

=344243896196530176,

|Р2- 1 1 1р2 Р2 30719•1152956679314964480

р5 32771

=1080762754626846720,

р3- 1 1 1р, Р3 3641 •1152921493869428745

р5 32771

= 128094570174196395,

|Р4- 1| р4 • Р4 2048•1152886310571376640

Так как 4294967296 > 1073741824, значит X > У.

р5 32771

=72048798146232320,

**

M k** =-—p

• P

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

19344•1152815950416936960

p5 32771

=680481881690068309.

Найдем значение функции Pirlo для чисел X и Y по формуле (15):

344243896196530176•36+ +1080762754626846720•4 + Pi (X)= +128094570174196395•0 + +72048798146232320•4+ +680481881690068309•36 12392780263075086336+ _ +4323051018507386880+ " +288195192584929280+ +24497347740842459124 = (41501374215009861620^

1152815950416936960

1152815950416936960

=131060

Pi (Y )=

344243896196530176•9+ +1080762754626846720• 1 + 128094570174196395•0+ +72048798146232320-1+ +680481881690068309•9 3098195065768771584+ _ +1080762754626846720+ " +72048798146232320+ 6124336935210614781 = 110375343553752465405'

1152815950416936960

1152815950416936960

= 32765

11152815950416936960

1152815950416936960

и поскольку Pi ( X) > Pi (Y), то X > Y.

РЕЗУЛЬТАТЫ И ИХ ОБСУЖДЕНИЕ

На втором этапе на высокоуровневом языке программирования Python были разработаны алгоритмы выполнения рассмотренных немодульных операций. Приведем фрагменты алгоритмов и результаты расчетов (рис. 1, 2).

Ease = [32765, 32767, 32765, 32769, 32771] М = 37775 931511113 411116160 ££f|г£ ££f|г Перевел из кедулярней систекн счисления в пезициенную систеггу счисления #*####*## Метсд сртстснальнкх базисов #####*### (3£, 4, 3, 4, 3 £ J 4294967296

lank: (прсстая версия} = 3£

-----------------Определение ранта пс алгерытт^у-----------------

М = [|1, 1, 1, 1, 1], [0, 32765, 32765, 32765, 32765], [3, 3, 3, 5, 24], [3, 3, 3, 32761, 32699], [3, 3, 3, 3, 144]] Hiank = [2, 557 46, 15, 21349, В5] [3, 32733, 32729, 32733, 32765] 55674 [3, 3, 15, 43, 123] 39 [3, 3, 3, 32761, 32699] 21313 [3, 3, 3, 3, 144] 49 [3, 3, 3, 3, 3] -37 lank (пс алтеритку} = 36

######### Нетсд переведа в сбсбщенную пезициенную систему счисления ######### (36, 4, 0, 4, 36}

----------------- Перевел в ПСС (вариант 2} -----------------

t_macilx = [[3, 163S3, 21£45, S192, 27339], [3, 3, 32767, 163S4, 24575], [3, 3, 3, 32765, 21547], [3, 3, 3, 3, 16355]]

= [36, 16, 4, 3, 3] 4294967296

Рис. 1. Результаты расчетов по алгоритму «Перевод из модулярной системы счисления в позиционную систему счисления»

Примечание: составлено автором на основании данных, полученных в исследовании.

********* Сравнение чисел в ЯСС П*******

********* Метод, сснованнкй на переведе из чисел ив МСС в ПСС ********* Base = [32765, 32767, 3276В, 32769, 32771] M = 37773531511113441116160 (36, 4, 0, 4, 36) < (S, 1, 0, 1, S)

jfjfffff jfjfjf Метод с использованием позиционных характеристик Base = [32765, 32767, 3276S, 32769, 32771] M = 3777В931511113441116160 (36, 4, 0, 4, 36) 4294967296 (9, 1, 0, 1, 9) 1373741624

----------------- сравнения чисел в СОК с использеванием позиционных характеристик-----------------

к = [344243656156530176, 1030762754626346720, 12S0S45701741563S5, 7204S7SB146232320, 6B04B1BB16S006E305] Pi (36, 4, 0, 4, 36) = 131360 Pi (9, 1, 0, 1, 9) = 32765 1

Рис. 2. Результаты расчетов по алгоритму «Сравнение чисел в МСС»

Примечание: составлено автором на основании данных, полученных в исследовании.

Сравнив математическое описание и результаты расчетов по разработанным алгоритмам, убеждаемся в совпадении результатов, что свидетельствует о корректности вычислений. Сравнение проводилось с применением процесса математического моделирования. Объектом моделирования являются методы выполнения операций перевода и сравнения чисел в МСС. В качестве математической модели выступает совокупность математических формул и отношений между ними, которая адекватно отражает концепцию рассматриваемых методов. Процесс математического моделирования можно представить в виде следующих этапов: исследование объекта моделирования, постановка задачи, анализ, выбор методов, поиск решения, разработка алгоритма решения, проверка, т. е. соответствие результатов математической модели и разработанных алгоритмов, практическое использование и анализ результатов моделирования.

Выполнена оценка сложности разработанных алгоритмов. При оценке вычислительной сложности алгоритмов используют два подхода: временная вычислительная сложность и асимптотическая вычислительная сложность.

Определение: вычислительная сложность (алгоритмическая сложность) - функция зависимости объема работы алгоритма от размера обрабатываемых данных.

Вычислительная сложность отвечает на центральный вопрос при разработке алгоритмов: как изменится время исполнения и объем занятой памяти в зависимости от размера входных данных.

Определение: временная сложность алгоритма - это функция от размера входных дан-

ных, равная количеству элементарных операций, выполняемых алгоритмом для решения экземпляра задачи указанного размера.

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

Определение: асимптотическая сложность -оценка сложности алгоритма с использованием предельного перехода при стремлении к бесконечности размерности входных данных.

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

Введем обозначения: О(т) - оценка количества операций, где т - это количество модулярных оснований на входе алгоритма ( т -максимальное основание МСС). В работе количество модулярных оснований равно 5 , т. е. т = 5, максимальное основание МСС т = 32771.

Поясним на примере операции перевода из модулярной в позиционную систему счисления методом ортогональных базисов, как производится оценка параметров в строках и столбцах табл. 2. Алгоритм метода представлен на рис. 3.

Таблица 2

Оценка сложности методов выполнения немодульных операций в МСС

Перевод из модулярной системы счисления в позиционную систему счисления

Модулярные основания р = 32765, р2 = 32767,р3 = 32768,р4 = 32769,р5 = 32771

Метод ортогональных базисов

Количество модулярных оснований т Операции Оценка количества Общая сложность метода

5 Умножение О ( т ) О( т2)

Сложение О ( т )

Примечание: составлено автором на основании данных, полученных в исследовании. def tc_ini: (self, ret.urn_ranli:=Fal3e) : f:: i" i, pp Lr. enumerate (self . ms .basis} :

Рис. 3. Алгоритм перевода из МСС в ПСС методом ортогональных базисов

Примечание: составлено автором на основании данных, полученных в исследовании.

Окончание табл. 2

Количество модулярных оснований n Операции Оценка количества Общая сложность метода

Метод перевода в обобщенную позиционную систему счисления

5 Вычисление мультипликативной инверсии O( n2) сложностью O (log2 (m)) O(n2-log2 (m))

Деление по модулю O( n2)

Умножение O( n2)

Сложение O( n2)

Сравнение чисел в МСС

Модулярные основания px = 32765, p2 = 32767,p3 = 32768,p4 = 32769,p5 = 32771

Метод, основанный на переводе чисел из МСС в ПСС

5 Умножение O ( n ) O( n2)

Сложение O ( n )

Метод с использованием позиционных характеристик

5 Вычисление мультипликативной инверсии O (n) сложностью O (log2 (m )) O(nlog2 (m))

Деление по модулю O ( n )

Умножение O ( n )

Сложение O ( n )

Деление по модулю O( n2)

Умножение O( n2)

Сложение O( n2)

В строке for i, pp in enumerate (self.rns.basis) имеем цикл размера n .

В строке b = m * pp имеем одно умножение.

В строке res += b * self.residues[i] имеем одно умножение и сложение, но поскольку res в общем случае большое число, то сложность этого сложения тоже составляет n . В итоге получаем общую сложность метода O(n2) .

ЗАКЛЮЧЕНИЕ

Рассмотрены алгоритмы перевода чисел из модулярной системы счисления в позиционную систему счисления, а также алгоритмы

сравнения чисел в модулярной системе счисления. Алгоритмы используют произвольные наборы модулей, обеспечивающих вычисления в большом динамическом диапазоне. В качестве примера набора оснований МСС были выбраны числа р = 32765, р2 = 32767, р3 = = 32768, р4 = 32769, р = 32771 с мощностью диапазона:

Р = 37778931511113441116160.

Вычислительный диапазон близок к значению:

275 = 37778931862957161709568.

Для интерпретации результатов исследования на практике взяты числа

А = 232 = 4294967296 = (36,4,0,4,36), В = 230 = 1073741824 = (9,1, 0,1, 9).

Анализируя операцию перевода из МСС в ПСС и сравнивая методы ортогональных базисов и перевода в ОПСС, отметим, что недостатком первого метода является то, что необходимо выполнять операции с большими числами В. Операции сложения и умножения нужно выполнять в ПСС, и если полученный результат выходит за пределы вычислительного диапазона МСС, то необходимо вычис-

лять ранг числа. Преимуществом второго метода является выполнение большинства параллельных вычислений в МСС. Оценивая сложности алгоритмов, получим, что метод ортогональных базисов имеет меньшую сложность.

Рассматривая сравнения чисел в МСС, в частности метод, основанный на переводе чисел из МСС в ПСС, и метод с использованием позиционных характеристик, в первом случае учитывается вычислительная сложность получения остатка от деления на большое число р, во втором - функция РЫо проигрывает КТО, так как требует дополнительных сравнений числа. Первый метод является более эффективным и имеет меньшую асимптотическую вычислительную сложность.

Список источников

1. Лобес М. В. Разработка методов и алгоритмов модулярных вычислений для задач большой алгоритмической сложности : автореф. дис. ... канд. физ.-мат. наук. Ставрополь, 2009. 20 с.

2. Лавриненко А. Н., Червяков Н. И. Исследование немодульных операций в асистеме остаточных классов // Науч. ведомости. Компьютер. моделирование 2012. № 1 (120), Вып. 21/1. С. 110-122.

3. Акушский И. Я., Юдицкий Д. И. Машинная арифметика в остаточных классах. М. : Сов. Радио, 1968. 439 с.

4. Исупов К. С. Методика выполнения базовых немодульных операций в модулярной арифметике с применением интервальных позиционных характеристик // Изв. высш. учеб. заведений. Поволжский регион. Технич. науки. 2013. № 3 (27). С. 26-39.

5. Червяков Н. И., Авербух В. М., Бабенко М. Г. и др. Приближенный метод выполнения немодульных операций в системе остаточных классов // Фундамент. исслед. 2012. № 6-1. С. 189-193. URL: https://iundamental-rssearch.ru/ru/article/view?id=29963 (дата обращения: 20.10.2022).

6. Ляхов П. А., Гробова Т. А., Карасев И. В. Моделирование алгоритмов обратного преобразования чисел из системы остаточных классов в позиционную систему счисления // Актуал. направления науч. исслед. XXI века: теория и практика. 2015. Т. 3, № 7-4 (18-4). C. 430-433.

7. Ляхов П. А., Голошубова Ю. В., Попова Е. А. Сравнительный анализ методов перевода чисел из системы остаточных классов в позиционную систему счисления // Молодой ученый. 2017. № 22 (156). С. 1-6. URL: https://moluch.ru/ archive/156/44137/ (дата обращения: 19.10.2022).

References

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

1. Lobes M. V. Razrabotka metodov i algoritmov modu-liarnykh vychislenii dlia zadach bolshoi algoritmich-eskoi slozhnosti : Extended abstract of Cand. Sci. Dissertation (Physics and Mathematics). Stavropol, 2009. 20 p. (In Russian).

2. Lavrinenko A. N., Chervyakov N. I. Nomodal Operations Research in System of Residual Classes // Belgorod State University. Scientific Bulletin. Series: Economics. Information Technologies. 2012. No. 1 (120), Is. 21/1. P. 110-122. (In Russian).

3. Akushsky I. Ya., Yuditsky D. I. Mashinnaia arif-metika v ostatochnykh klassakh. Moscow : Sov. Radio, 1968. 439 p. (In Russian).

4. Isupov K. S. Methods of Basic Non-Modular Operations in Modular Arithmetic Using Interval Positional Characteristics // University Proceedings. Volga Region. Technical Sciences. 2013. No. 3 (27). P. 26-39. (In Russian).

5. Chervyakov N. I., Averbukh V. M., Babenko M. G. et al. Approximate Method of Implementation Non-Modular Operations in the Residue Number System // Fundamental Research. 2012. No. 6-1. P. 189-193. URL: https://iundamental-research.ru/ru/article/view?id=29963 (accessed: 20.10.2022). (In Russian).

6. Lyakhov P. A., Grobova T. A., Karasev I. V. Modeliro-vanie algoritmov obratnogo preobrazovaniia chisel iz sistemy ostatochnykh klassov v pozitsionnuiu sistemu schisleniia // Aktual. napravleniia nauch. Issled. XXI veka: teoriia i praktika. 2015. Vol. 3, No. 7-4 (18-4). P. 430-434. (In Russian).

7. Lyakhov P. A., Goloshubova Yu. V., Popova E. A. Sravnitelnyi analiz metodov perevoda chisel iz sistemy ostatochnykh klassov v pozitsionnuiu sistemu schisle-niia // Molodoi uchenyi. 2017. No. 22 (156). P. 1-6. URL: https://moluch.ru/archive/156/44137/ (accessed: 19.10.2022). (In Russian).

8. Полисский Ю. Д. Сравнение чисел в системе остаточных классов // 50 лет модулярной арифметики : тр. Юбилейн. Междунар. науч.-техн. конф., 2325 ноября 2005 г., Москва, Зеленоград. М. : МИЭТ, 2005. С. 274-290.

9. Краснобаев В. А., Янко А. С., Кошман С. А. Метод арифметического сравнения данных, представленных в системе остаточных классов // Кибернетика и систем. анализ. 2016. Т. 52, № 34. С. 157-162.

10. Бабенко М. Г., Черных А. Н, Червяков Н. И. и др. Эффективное сравнение чисел в системе остаточных классов на основе позиционной характеристики // Тр. ИСП РАН. 2019. Т. 31, Вып. 2. С. 187-202.

11. Исупов К. С. Об одном алгоритме сравнения чисел в системе остаточных классов // Вестн. Астра-хан. гос. техн. ун-та. Сер. Управление, вычисл. техн. информ. 2014. № 3. С. 40-49.

12. Тейтельбаум В. Н. Сравнение чисел в чешской системе счисления // Докл. АН СССР. 1958. Т. 121, № 5. С. 807-810.

13. Копыткова Л. Б. Математические модели нейросетевой реализации модулярных вычислительных структур для высокоскоростной цифровой фильтрации : дис. ... канд. физ.-мат. наук. Ставрополь, 2001. 264 с.

14. Червяков Н. И., Ляхов П. А., Копыткова Л. Б. и др. Обработка информации в системе остаточных классов (СОК). Ставрополь : Север.-Кавказ. фе-дер. ун-т, 2016. 225 с. URL: https://book.ru/book/ 928854 (дата обращения: 06.09.2022).

15. Кочеров Ю. Н. Разработка методов и алгоритмов разделения и восстановления данных в модулярных пороговых структурах для распределенных вычислительных сетей : моногр. Ставрополь : Се-вер.-Кавказ. федер. ун-т, 2016. 239 с.

Информация об авторе Н. С. Золотарева - аспирант.

8. Polissky Yu. D. Sravnenie chisel v sisteme ostato-chnykh klassov // 50 let moduliarnoi arifmetiki : Proceedings of the Anniversary International Scientific and Engineering Conference, November 23-25, 2005, Moscow, Zelenograd. Moscow : MIET, 2005. P. 274-290. (In Russian).

9. Krasnobaev V. A., Yanko A. S., Koshman S. A. Metod arifmeticheskogo sravneniia dannykh, predstavlennykh v sisteme ostatochnykh klassov // Kibernetika i system. analiz. 2016. Vol. 52, No. 34. P. 157-162. (In Russian).

10. Babenko M. G., Chernykh A. N., Chervyakov N. I. et al. Efficient Number Comparison in the Residue Number System Based on Positional Characteristics // Proceedings of the Institute for System Programming of the RAS. 2019. Vol. 31, Is. 2. P. 187-202. (In Russian).

11. Isupov K. S. On an Algorithm for Number Comparison in the Residue Number System // Vestnik of Astrakhan State Technical University. Series: Management, Computer Science and Informatics. 2014. No. 3. P. 40-49. (In Russian).

12. Teitelbaum V. N. Comparison of Numbers in the Czechic System of Numbers // Doklady Akademii Nauk SSSR. 1958. Vol. 121, No. 5. P. 807-810. (In Russian).

13. Kopytkova L. B. Matematicheskie modeli neirosetevoi realizatsii moduliarnykh vychislitelnykh struktur dlia vysokoskorostnoi tsifrovoi filtratsii : Cand. Sci. Dissertation (Physics and Mathematics). Stavropol, 2001. 264 p. (In Russian).

14. Chervyakov N. I., Lyakhov P. A., Kopytkova L. B. et al. Obrabotka informatsii v sisteme ostatochnykh klassov (SOK). Stavropol : North-Caucasus Federal University, 2016. 225 p. URL: https://book.ru/book/928854 (accessed: 06.09.2022). (In Russian).

15. Kocherov Yu. N. Razrabotka metodov i algoritmov razdeleniia i vosstanovleniia dannykh v moduliarnykh porogovykh strukturakh dlia raspredeleniia vychislitel-nykh setei : Monograph. Stavropol : North-Caucasus Federal University, 2016. 239 p. (In Russian).

Information about the author N. S. Zolotareva - Postgraduate.

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