System numeracji pozostałości

Rezydualny system liczbowy ( RNS ) to system liczbowy reprezentujący liczby całkowite za pomocą ich wartości modulo kilku par liczb całkowitych względnie pierwszych, zwanych modułami. Taka reprezentacja jest dozwolona przez chińskie twierdzenie o resztach , które stwierdza, że ​​jeśli M jest iloczynem modułów, to w przedziale o długości M istnieje dokładnie jedna liczba całkowita mająca dowolny zestaw wartości modułowych. Arytmetyka resztowego systemu liczbowego jest również nazywana arytmetyka wielomodułowa .

Arytmetyka wielomodułowa jest szeroko stosowana do obliczeń z dużymi liczbami całkowitymi, zwykle w algebrze liniowej , ponieważ zapewnia szybsze obliczenia niż w przypadku zwykłych systemów liczbowych, nawet jeśli bierze się pod uwagę czas konwersji między systemami liczbowymi. Inne zastosowania arytmetyki wielomodułowej obejmują największy wspólny dzielnik wielomianu , obliczenia bazowe Gröbnera i kryptografię .

Definicja

System liczbowy reszt jest zdefiniowany przez zbiór k liczb całkowitych

nazywane modułami , które generalnie zakłada się, że są parami względnie pierwsze (to znaczy, że dowolne dwa z nich mają największy wspólny dzielnik równy jeden). Systemy liczb resztowych zostały zdefiniowane dla modułów innych niż względnie pierwsze, ale nie są powszechnie stosowane ze względu na gorsze właściwości. Dlatego nie będą one rozpatrywane w dalszej części artykułu.

Liczba całkowita x jest reprezentowana w systemie liczbowym reszt przez zbiór jej reszt

w ramach podziału euklidesowego przez moduły. To jest

I

dla każdego I

Niech M będzie iloczynem wszystkich . Dwie liczby całkowite, których różnica jest wielokrotnością M , mają tę samą reprezentację w rezydualnym systemie liczbowym określonym przez m i s. Dokładniej, chińskie twierdzenie o resztach stwierdza, że ​​każdy z M różnych zestawów możliwych reszt reprezentuje dokładnie jedną klasę reszt modulo M . Oznacza to, że każdy zestaw reszt reprezentuje dokładnie jedną liczbę całkowitą w przedziale . Dla liczb ze znakiem zakres dynamiczny wynosi (gdy generalnie reprezentowana jest dodatkowa wartość ujemna).

Działania arytmetyczne

Do dodawania, odejmowania i mnożenia liczb reprezentowanych w systemie liczb reszt wystarczy wykonać tę samą operację modułową na każdej parze reszt. Dokładniej, jeśli

listą liczb x i y reszty jest liczbą całkowitą z reprezentowaną przez takie, że

dla i = 1, ..., k (jak zwykle mod oznacza operację modulo polegającą na wzięciu reszty z dzielenia euklidesowego przez prawy operand). Odejmowanie i mnożenie są zdefiniowane podobnie.

W przypadku kolejnych operacji nie jest konieczne stosowanie operacji modulo na każdym kroku. Może być zastosowany na końcu obliczeń lub podczas obliczeń, aby uniknąć przepełnienia operacji sprzętowych.

Jednak operacje takie jak porównywanie wielkości, obliczanie znaku, wykrywanie przepełnienia, skalowanie i dzielenie są trudne do wykonania w systemie liczb resztowych.

Porównanie

Jeśli dwie liczby całkowite są równe, to wszystkie ich reszty są równe. I odwrotnie, jeśli wszystkie reszty są równe, to dwie liczby całkowite są równe lub ich różnice są wielokrotnością M . Wynika z tego, że testowanie równości jest łatwe.

Z drugiej strony, testowanie nierówności ( x < y ) jest trudne i zwykle wymaga przekształcenia liczb całkowitych w reprezentację standardową. W konsekwencji ta reprezentacja liczb nie jest odpowiednia dla algorytmów wykorzystujących testy nierówności, takich jak dzielenie euklidesowe i algorytm euklidesowy .

Dział

Podział w systemach liczbowych reszt jest problematyczny. Z drugiej strony, jeśli z (czyli ), to b ja ≠

można łatwo obliczyć wg

gdzie jest multiplikatywną odwrotnością modulo M b jest multiplikatywną odwrotnością modulo .

Aplikacje

RNS mają zastosowania w dziedzinie cyfrowej arytmetyki komputerowej . Rozkładając w ten sposób dużą liczbę całkowitą na zbiór mniejszych liczb całkowitych, duże obliczenie można wykonać jako serię mniejszych obliczeń, które można wykonać niezależnie i równolegle.

Zobacz też

Dalsza lektura