Сравне́ние чи́сел в систе́ме оста́точных кла́ссов, метод определения того, какое из двух данных чисел больше. Сравнение чисел в системе остаточных классов (СОК) – немодульная операция, как следствие является вычислительно сложной.
Методы, основанные на переводе чисел из СОК в позиционную (например, десятичную) систему счисления и последующим их сравнением, являются наиболее очевидными и наименее производительными. С целью повышения производительности разработаны методы, основанные на вычислении позиционных характеристик, таких как диагональная функция (Dimauro. 1993), функция Пирло и Импедово (Mohan. 2016). Все вышеперечисленные позиционные характеристики являются монотонными, при этом возможна ситуация, когда разные числа имеют одинаковую позиционную характеристику. В этом случае требуется выполнение дополнительных действий для сравнения чисел, представленных в СОК. Кроме того, для получения значений указанных позиционных характеристик используется ресурсозатратная операция вычисления остатка от деления на большой модуль. Для устранения этих недостатков была разработана модифицированная диагональная функция (RNS Number Comparator ... 2020). Модифицированная диагональная функция (англ. Modified Diagonal Function, MDF) представляет собой строго возрастающую позиционную характеристику чисел, представленных в СОК, сочетающую преимущества диагональной функции и приближённого метода. Строгая монотонность MDF обеспечивает взаимно однозначное соответствие числа и его позиционной характеристики, поэтому не возникает ситуаций, когда требуется выполнение дополнительных действий для сравнения чисел. Кроме того, вместо операции нахождения остатка от деления на большое число при вычислении MDF используются значительно более простые в реализации вычисления по модулю 2k, где k – натуральное число.
Вычисление значения модифицированной диагональной функции от числа x=(x1,x2,…,xn)∈[0,M−1], представленного в СОК с модулями m1,m2,…,mn, где M=∏i=1nmi, осуществляется согласно формуле: MDF(x)=i=1∑nkixi2N.Здесь ki=⌈SQ2N⋅−mi−1SQ⌉,SQ=i=1∑nmiM,N=⌈log2(SQ⋅(mn−1))⌉, где −mi−1SQ – решение сравнения αmi≡−1modSQ относительно α,⌈⌉ – округление в бо́льшую сторону.
Пример. Пусть задана СОК с модулями m1=3,m2=7,m3=11,m4=16,M=∏i=1nmi=3696. Требуется сравнить числа x=(0,3,1,3) и y=(1,4,2,4), представленные в данной СОК (и равные в десятичной позиционной системе счисления 2355 и 2356 соответственно).
Значения констант, необходимых для модифицированной диагональной функции, равны:
Далее, MDF(x)=∣43682⋅0+46808⋅3+11914⋅1+28671⋅3∣216=41743,MDF(y)=∣43682⋅1+46808⋅4+11914⋅2+28671⋅4∣216=41746.Так как MDF(x)<MDF(y), то x<y.
Сложность выполнения немодульных операций в СОК существенно ограничивает её практическое применение. Эффективная реализация сравнения чисел открывает возможности для расширения функционала приложений, таких, например, как построенные на СОК гомоморфные шифры или свёрточные нейронные сети, сохраняющие конфиденциальность.