Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы модулярной арифметики. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Практическая работа 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 -
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]