Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы модулярной арифметики. Практикум
.pdf
Практическая работа 1
Если множество состоит из элементов, каждый из которых,
в свою очередь принадлежит одному, возможно более мощному множеству, то такое множество называется подмножеством,
а более мощное множество – надмножеством.
Пример.
A ={1, 2, 3}, B = {0, 1, 2, 3, 4, 5}. A – подмножество B.
Два множества считаются равными, если они являются подмножествами друг друга.
В данной работе элементы множеств – это числа (чаще всего
неотрицательные целые числа).
Коснемся вопроса задания множеств.
Множества можно задавать:
1) Непосредственным перечислением его элементов
A = {0, 1, 2, 3}
2) Указанием группового свойства
A = {a: a = 0..3}
3) Генерация элементов множества алгоритмом
A = {a: for a: = 0 to 3 do yield a;}
Далее, нам потребуется понятие упорядоченной пары.
Под упорядоченной парой будем понимать пару элементов
(a, b), где первый элемент принадлежит множеству A, а второй
элемент принадлежит множеству B. Множество всех возможных
упорядоченных пар элементов множеств A и B, соответственно,
назовем декартовым квадратом (cartesian product).
Пример.
A = {0, 1, 2}, B = {W, B}
тогда AxB = {(0, W),(1, W),(2, W),(0, B),(1, B),(2, B)}
Из декартова произведения можно вычленить любое его подмножество. Полученное подмножество называется «отношением».
Пример.
A = {0, 1, 2, 3}, B = {3, 4}
R = {(0,3), (0,4), (1,3), (1,4), (2,3), (2,4)} – отношение «меньше» на множестве декартова квадрата AxB (каждый первый элемент упорядоченной пары строго меньше соответствующего
второго элемента упорядоченной пары).
- 11 -

Спутниковые и радиорелейные системы передачи данных
Отношения бывают общего вида, рефлексивные, симметрич-
ные, антисимметричные, транзитивные и т. п.
Часто выделяю особый тип отношения – функция.
Отношение называется функциональным, если для упорядо-
ченных пар отношения из равенства первых элементов любых
двух пар следует равенство вторых элементов этих пар. При
этом первый элемент пары называется аргументом, а второй
элемент пары – значением функции.
Более просто, каждому аргументу функции соответствует не
более одного значения функции.
Пример.
A = {0, 1, 2, 3}, B = {3, 4}
R = {(0, 3), (0, 4), (1, 3)} – не является функцией, так как аргу-
менту «0» соответствует два значения «3» и «4».
F = {(0, 3), (2, 4), (1, 3)} – функция, так как каждому аргументу соответствует не более одного значения. Аргумент «3» при
этом оказался «неиспользованным». Ему не соответствует ни
одного значения функции.
Помимо функций общего вида, математики выделяю инъек-
тивные, сюръективные и биективные (взаимно-однозначные
функции).
Поменяв элементы в каждой паре отношения местами, получим обратное отношение.
Пример.
A = {0, 1, 2}, B = {0, 1, 2}
R = {(0, 1), (0, 2), (1, 2), (2, 1)}
inv(R) = {(1,0),(2,0),(2,1),(1,2)}
Отношения можно выстраивать в цепочки, тогда получится
композиция отношений. При этом нужно следить, чтобы элементы промежуточных множеств композиции существовали.
Данное замечание кажется очевидным для случая множеств, заданных перечислением элементов, однако для других способов
задания множеств доказательство корректности промежуточных множеств может оказаться совсем не тривиальной задачей.
Пример.
A = {0, 1, 2}, B = {0, 1, 2}, C = {x, z}
- 12 -

Практическая работа 1
R1 = {(0, x), (0, z), (2, z)}}
R2 = {(x, 1), (z, 1), (z, 2)}
R = R1oR2 = {(0, 1), (0, 2), (2, 1), (2, 2))}
Композицию можно составить из отношения R и обратного
ему отношения inv(R). Получившее в результате отношение называется «ядро отношения».
Пример.
A = {0, 1, 2}, B = {0, 1, 2}
R = {(0, 1), (0, 2), (1, 2), (2, 1)}
inv(R) = {(1, 0), (2, 0), (2, 1), (1, 2)}
kern(R)=R o inv(R) = {(0, 0), (0, 2), (0, 1), (1, 1), (1, 0), (2, 0), (2, 2)}
Если отношение является симметричным, рефлексивным и
транзитивным, то оно называется отношением эквивалентности.
Отношение эквивалентности разбивает исходное множество
на подмножества, называемые классами эквивалентности.
Например, множество целых чисел Z отношением делимости
на 3 будет разбито на три класса эквивалентности:
1) числа нацело делящиеся на 3 – {…, 0, 3, 6, 9, ...}
2) числа, дающие в остатке 1 от деления на 3 –
{…, 1,4,5,10, ...}
3) числа, дающие в остатке 2 от деления на 3 –
{…, 2, 5, 8, 11, ...}
Множество классов эквивалентности, построенных по данному отношению эквивалентности называется «фактор-мно-
жеством».
Рассмотрим теперь понятие операции над множеством.
Пусть задано некоторое множество. Определим на этом множестве функцию, которая каждой упорядоченной паре декартова произведения (в общем случае можно рассматривать не только пары, но и упорядоченные тройки, четверки и т. д. элементов)
этого множества самого на себя ставит в соответствие элемент
из этого же множества. Такая функция будет называться «операцией», а само множество вместе с одной или несколькими операциями – алгеброй.
Пример.
A = {0, 1, 2}
- 13 -

Спутниковые и радиорелейные системы передачи данных
«+» = {((0, 0), 0), ((0, 1), 2), ((0, 2), 2), ((1, 0),1), ((1, 1), 2),
((1, 2), 0), ((2, 0), 2), ((2, 1), 0),((2, 2), 1)}
Такой способ задания операции не очень нагляден. Лучше ис-
пользовать таблицу, наподобие таблицы Пифагора.
+ 0 1 2
0 0 1 2
1 1 2 0
2 2 0 1
В первом столбце таблицы расположены первые элементы
упорядоченной пары-аргумента, в первой строке таблицы расположены вторые элементы упорядоченной пары-аргумента, в
ячейках таблицы расположены значения функции.
Теперь, если мы захотим выполнить операцию «+» на множестве A, достаточно взять соответствующий «сумме» элемент
из множества A.
0+0=0, 0+1=1, …, 2+2=1.
В общем случае нет никаких ограничений какими элементами множества A можно наполнять таблицы операций над этим
множеством, поэтому забавный результат «2+2=1» вполне допустим.
Алгебры, в зависимости от наличия у их операций определенных свойств классифицируют на полугруппу, моноид, группу, кольцо, поле, решетка, векторное пространство и т. д.
Полугруппа – это множество с одной ассоциативной бинарной операцией.
a + (b + c) = (a + b) + c
Множества N и Z натуральных и целых чисел соответственно
с любой из операций сложения или умножения – полугруппы.
Моноид – это полугруппа с нейтральным относительно операции элементом «e».
1) a + (b + c) = (a + b) + c
2) e + a = a + e = a
Чаще всего нейтральный элемент называют «нулем» или
«единицей» в зависимости от реального смысла операции.
- 14 -

Практическая работа 1
Множество натуральных чисел с операцией умножения – мо-
ноид (нейтральный элемент – «единица»).
Множество целых чисел с операцией сложения – моноид
(нейтральный элемент – «нуль»).
Множество целых чисел с операцией умножения – моноид
(нейтральный элемент – «единица»).
Группа – это моноид, в котором у каждого элемента суще-
ствует обратный элемент.
1) a + (b + c) = (a + b) + c
2) e + a = a + e = a
3) a + inv(a) = inv(a) + a = e
Обратный элемент – единственен для каждого элемента
группы.
Заметим, что симметричность операции в группе не предполагается. Однако, если групповая операция симметрична, то такая группа называется «абелева группа».
В группе можно однозначно решать уравнения вида
a + x = b
x = b + (inv(a)).
Пример.
A = {0, 1, 2}
+ 0 1 2
0 0 1 2
1 1 2 0
2 2 0 1
Обозначим e = «0», тогда
a
inv(a)
0 1 2
2 1 0
Решим уравнение 1 + x = 0
x = 0 + inv(1) = 0 + 1 = 1
Проверка
Если x = 1, то 1 + 1 = 0 – верно.
Увеличим теперь количество операций.
- 15 -

Спутниковые и радиорелейные системы передачи данных
Введем вторую операцию «*».
Кольцо – это алгебра с двумя бинарными операциями «+»
и «*», такими, что
1) кольцо относительно операции «+» – это абелева группа.
a + (b + c) = (a + b) + c
e + a = a + e = a
a + inv(a) = inv(a) + a = e
2) кольцо относительно операции «*» – это полугруппа.
a*(b*c)=(a*b)*c
3) операции «+» и «*» связаны между собой дистрибутив-
ностью.
a*(b + c) = a*b + a*c
(b + c)*a = b*a + c*a
В зависимости от наличия у кольца дополнительных свойств
кольцо может быть:
• коммутативным, если a*b = b*a
• кольцом с единицей, если существует нейтральный
элемент по операции «*» (в этом случае нейтральный
элемент по операции «*» называется «1 (единица)»,
а нейтральный элемент по операции «+» называется
«0 (нуль)»).
Обратный элемент по операции «+» в кольцах называют
«противоположный (negative)», а по операции «*» – «обратный
(inverse)».
Пример кольца.
A = {0, 1, 2, 3}
Таблица «сложения»
+ 0 1 2 3
0 0 1 2 3
1 1 2 3 0
2 2 3 0 1
3 3 0 1 2
- 16 -

Практическая работа 1
Таблица «умножения»
* 0 1 2 3
0 0 0 0 0
1 0 1 2 3
2 0 2 0 2
3 0 3 2 1
Таблица противоположных элементов
a
neg(a)
0 1 2 3
3 2 1 0
Таблица обратных элементов
a
inv(a)
0 1 2 3
- 1 - 3
Обратим внимание, что у элементов «0» и «2» обратных эле-
ментов нет.
Еще один курьез заключается в нелепом «2*2 = 0». Такая
ситуация встречается в кольцах достаточно часто и элементы
«2» – слева от операции «*» и «2» – справа от операции «*» называются соответственно левым и правым делителями нуля.
Другим примером кольца является множество Z целых чисел
с операциями «+» сложения и «*» умножения. Более точно – это
коммутативное кольцо с единицей.
В кольцах справедливы утверждения:
1) 0*a = a*0 = 0
2) a*(-b) = (-a)*b = -(a*b)
3) (-a)*(-b) = a*b
Логично будет «улучшить» кольцо, потребовав, чтобы операция «*» также образовывала абелеву группу. Получим «поле».
Поле – это алгебра с двумя бинарными операциями «+»
и «*», такими, что
1) поле относительно операции «+» – это абелева группа.
a + (b + c) = (a + b) + c
0 + a = 0 + e = a
a + inv(a) = inv(a) + a = e
- 17 -

Спутниковые и радиорелейные системы передачи данных
2) поле относительно операции «*» – это абелева группа.
a*(b*c) = (a*b)*c
1*a = a*1 = a
a*inv(a) = inv(a)*a = 1
3) операции «+» и «*» связаны между собой дистрибутивностью.
a*(b + c) = a*b + a*c
(b + c)*a = b*a + c*a
Наиболее известным примером поля является множество Q –
рациональных чисел с операциями «+» – сложения рациональных чисел и «*» – умножения рациональных чисел.
В полях выполнимы все четыре арифметических действия
(сложение, вычитание, умножение и деление (кроме деления на
нуль)). Фактически, вся элементарная школьная алгебра – это
алгебра над полями Q и R.
Рассмотрим теперь множество, мощность P которого – простое число (то есть делящееся нацело только на 1 и на само себя).
Введем на этом множестве две операции
1) «+» – модулярная операция сложения.
2) «*» – модулярная операция умножения.
«Модулярная» – означает, что после выполнения обычной
операции сложения или умножения нужно «довычислить» результат, а именно найти остаток от деления суммы или произведения на P.
Полученная алгебра будет являться полем, имеющим специальное название – конечное поле Галуа (Galua Field) и обозначается GF(P).
Пример.
Пусть A = {0, 1, 2, 3, 4}, P = 5.
Таблица «сложения»
+ 0 1 2 3 4
0 0 1 2 3 4
1 1 2 3 4 0
2 2 3 4 0 1
3 3 4 0 1 2
4 4 0 1 2 3
- 18 -

Практическая работа 1
Таблица «умножения»
* 0 1 2 3 4
0 0 0 0 0 0
1 0 1 2 3 4
2 0 2 4 1 3
3 0 3 1 4 2
4 0 4 3 2 1
Таблица противоположных элементов
a
neg(a)
0 1 2 3 4
4 3 2 1 0
Таблица обратных элементов
a
inv(a)
0 1 2 3 4
- 1 3 2 4
Как видим, «нуль» по прежнему не имеет обратного элемента, что несколько усложняет алгоритмы машинной арифметики,
которые будут рассмотрены далее.
В данном конечном поле можно решать любые арифметические задачи над числами из диапазона [0,4]. Любая проверка
результатов, при условии использования таблиц сложения и умножения поля GF(5), будет приводить к выводу «верно».
Само по себе отдельно взятое поле Галуа мало что дает в
смысле ускорения арифметических операций, так как слишком
мал рабочий диапазон поля.
Ситуация коренным образом меняется, если использовать
одновременно несколько полей Галуа. Рабочий диапазон в этом
случае растет как произведение оснований полей Галуа.
Пример.
GF(2) = <{0,1},+,*>. Рабочий диапазон P = 2.
GF(3) = <{0,1,2},+,*>. Рабочий диапазон P = 3.
GF(5) = <{0,1,2,3,4},+,*>. Рабочий диапазон P = 5.
GF(7) = <{0,1,2,3,4,5,6},+,*>. Рабочий диапазон P = 7.
GF(11) = <{0,1,2,3,4,5,6,7,8,9,10},+,*>. Рабочий диапазон P = 11.
Полный рабочий диапазон P = 2*3*5*7*11 = 2310.
- 19 -

Спутниковые и радиорелейные системы передачи данных
То есть, при условии наличия взаимно-однозначного способа перевода неотрицательных целых чисел из диапазона [0,2309]
внутрь совокупности полей Галуа GF(2), GF(3), GF(5), GF(7),
GF(11) и обратно получается высокопроизводительная естественно-параллельная вычислительная система. Арифметические расчеты внутри этой системы производятся по относительно маленьким
таблицам сложения и умножения, то есть быстро и независимо
друг от друга. Случайные вычислительные ошибки в одном или
нескольких вычислительных каналов могут быть детектированы и
исправлены (ценой уменьшения рабочего диапазона).
В общем виде в 50-х годах 20-го века эта высокопроизводительная вычислительная система была открыта и научно обоснована советскими математиками Лукиным Ф. В., Акушским И. Я.,
Юдицким Д. И. и получила название «Система остаточных
классов» (СОК). Дальнейшее развитие СОК получила в трудах
Амербаева В.М., Червякова Н.И. и др.
Теоретической основой СОК служит так называемая Китайская теорема об остатках (КТО, CRT (англ.)), утверждающая взаимно-однозначное соответствие между диапазоном
[0; p1*p2*..*p
] неотрицательных целых чисел и остатков от де-
n-1
ления этих чисел на набор взаимно-простых чисел оснований
СОК – p1, p2,…, pn. Заметим, что в КТО требования к простоте
чисел, как основаниям полей Галуа – нет, достаточно выполнения гораздо более слабого условия их взаимной простоты. Тем не
менее, за исключением специально оптимизированных алгоритмов работы над набором специальных оснований, лучше все-таки
придерживаться оснований СОК как простых чисел. Условие их
взаимной простоты при этом выполняется автоматически.
Приведем примеры простых арифметических расчетов в СОК.
Основания СОК: p1 = 3, p2 = 5, p3 = 7. Диапазон СОК:
[0; 3*5*7–1] = [0; 104].
Пусть mod – это операция нахождения остатка от деления
чисел.
Если A = 7, то A = (7 mod 3, 7 mod 5, 7 mod 7) = (1, 2, 0) в СОК.
Если B = 9, то B = (9 mod 3, 9 mod 5, 9 mod 7) = (0, 4, 2) в СОК.
A + B = 7 + 9 = 16 – в позиционной системе счисления (ПСС).
- 20 -
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
