Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы модулярной арифметики. Практикум
.pdf
Практическая работа 1
A + B = (1,2,0) + (0,4,2) =
= (1+0 (mod 3), 2+4 (mod 5) , 0+2 (mod 7) ) = (1, 1, 2).
Непосредственной проверкой убеждаемся в правильности
ответа.
16 = (16 mod 3, 16 mod 5, 16 mod 7) = (1, 1, 2).
Аналогично для операции умножения A*B = 7*9 = 63 в ПСС.
A*B = (1,2,0) * (0,4,2) =
= (1*0 (mod 3), 2*4 (mod 5) , 0*2 (mod 7) ) = (0, 3, 0).
Проверка: 63 = (63 mod 3, 63 mod 5, 63 mod 7) = (0, 3, 0).
Операция деления, а точнее ее эквивалент – умножение на
мультипликативный обратный элемент, выполняется корректно
только в случае кратности делимого делителю.
Пример (СОК с основаниями p1 = 3, p2 = 5, p3 = 7).
A = 88 = (1,3,4), B = 11 = (2,1,4). A:B = 88:11 = 8 = (2, 3, 1).
Выполним операции в СОК (inv – операция нахождения об-
ратного мультипликативного элемента).
A:B = (1, 3, 4) : (2, 1, 4) = (1, 3, 4)*inv(2, 1, 4) =
= (1, 3, 4)*(2, 1, 2) = (2, 3, 1).
Если делимое не кратно делителю, то способ деления путем
умножения на обратный мультипликативный элемент делителя
дает ошибочный результат в любом случае.
Операцию умножения чисел в СОК можно свести к операции
сложения, если воспользоваться понятиями «первообразный корень» и «индекс» числа, играющие в модулярной арифметике примерно такую же роль, как логарифмы в поле вещественных чисел.
Первообразный корень по модулю p – это целое число g, та-
кое, что
pow(g, phi(p)) mod p = 1
где pow(x, y) – функция возведения числа x в степень y,
x mod y – операция нахождения остатка от деления x на у.
phi(x) – функция Эйлера (не углубляясь глубоко в теорию це-
лочисленных функций, заметим, что phi(p) = p – 1 для любого
простого p).
Индекс числа a по модулю p – это показатель степени ind в
уравнении
pow(g, ind) mod p = a
- 21 -

Спутниковые и радиорелейные системы передачи данных
Полезным свойством индексов в модулярной арифметике яв-
ляется:
ind(a*b)=ind(a)+ind(b)
Индексы чисел a, b и их произведения a*b взяты по модулю p.
Сумма индексов берется по модулю p – 1.
Пример.
Пусть p = 5, тогда его первообразный корень g = 2.
Действительно,
pow(2, phi(5)) mod 5 = pow(2,4) mod 5 = 16 mod 5 =1.
Индексы чисел по модулю 5 занесем в таблицу.
a
ind(a)
0 1 2 3 4
- 4 1 3 2
Пусть a = 2, b = 3
ind(2) = 1,
idx(3) = 3
ind(2*3) = ind(6 mod 5) = ind(1) = 0
ind(2) + ind(3) = 1 + 3 = 4 mod 4 = 0
То есть индекс произведения, действительно равен сумме ин-
дексов сомножителей.
Обратный переход от индексов к числам может быть осу-
ществлен по таблице обратных индексов.
ind(a)
а
0 1 2 3 4
1 2 4 3 -
Назовем ортогональными числами в СОК числа A и B, даю-
щие нуль при нахождении произведения A*B и имеющие ровно
один ненулевой разряд в СОК-представлении.
Например, ортогональными числами в СОК с основаниями
p
= 3, p2 = 5, p3 = 7 будут числа A = (2,0,0) и B = (0,3,0). Всего для
1
данного набора оснований возможно 12 ортогональных чисел:
(1, 0, 0), (2, 0, 0), (0, 1, 0), (0, 2, 0), (0, 3, 0), (0, 4, 0), (0, 0, 1), (0, 0, 2),
(0, 0, 3), (0, 0, 4), (0, 0, 5), (0, 0, 6).
Заметим, что среди ортогональных чисел есть числа вида
(1, 0, 0, …, 0), (0, 1, 0, ..., 0), …, (0, 0, 0, …, 1), то есть имеющие
ровно одну единицу в разряде СОК-представления, а все остальные СОК-разряды – нулевые. Такие числа называются ортогональными базисами СОК.
- 22 -

Задания для практической работы
Практическая работа 1
Для полей Галуа, заданных простыми числами p
создать просмотровые таблицы:
1. Сложения.
2. Противоположных элементов.
3. Умножения.
4. Обратных элементов.
5. Индексов.
6. Антииндексов.
7. Значений ортогональных чисел.
p
1 7 19 23 43 59
2 3 13 37 41 71
3 2 17 31 43 61
4 5 17 37 47 71
5 2 13 37 47 61
6 3 13 29 41 71
7 2 17 37 53 71
8 5 11 29 53 59
9 2 13 37 41 67
10 2 11 37 41 67
11 5 11 37 41 67
12 7 17 37 43 61
13 7 11 31 41 61
14 2 19 23 41 59
15 2 11 37 41 61
16 2 17 37 41 67
17 2 17 31 43 67
18 7 19 31 47 71
19 2 17 31 41 71
20 5 13 23 53 71
21 5 17 23 47 67
22 2 17 29 41 59
p
2
p
3
p
4
, p2, p3, p4, p5,
1
p
5
- 23 -

Спутниковые и радиорелейные системы передачи данных
p
p
2
p
3
p
4
23 5 13 23 53 61
24 2 11 37 53 71
25 2 19 29 47 59
26 2 17 37 41 67
27 3 13 31 43 71
28 2 13 23 47 59
29 2 19 29 41 61
30 5 17 29 41 61
31 2 13 37 41 67
32 3 17 31 47 61
33 3 13 37 47 71
34 3 19 23 47 67
35 5 17 29 47 59
36 2 19 37 47 71
37 7 11 23 53 61
38 7 17 29 41 71
39 2 11 23 47 71
40 3 19 29 53 67
41 3 17 29 43 67
42 5 11 31 43 59
43 5 17 23 53 71
44 7 17 29 43 67
45 2 19 29 43 71
46 3 19 29 43 59
47 3 17 23 41 67
48 2 19 37 47 59
49 2 13 37 47 71
50 7 17 37 53 67
51 3 19 23 43 61
52 2 11 31 43 67
53 2 17 29 47 67
54 7 11 31 43 71
p
5
- 24 -

Практическая работа 1
p
p
2
p
3
p
4
p
55 3 17 37 43 71
56 3 17 23 43 61
57 5 11 37 53 61
58 3 13 23 41 71
59 3 17 23 47 67
60 2 19 31 43 67
61 3 11 29 53 61
62 3 17 29 47 59
63 7 19 37 41 71
64 3 13 37 41 67
65 3 13 37 47 71
66 2 13 29 43 61
67 2 13 37 47 61
68 5 19 37 43 71
69 5 17 29 47 59
70 5 13 29 41 61
71 7 13 29 47 67
72 7 17 37 43 71
73 7 17 23 41 71
74 5 17 37 53 71
75 5 13 37 47 61
76 5 13 31 53 61
77 7 11 29 47 59
78 2 13 31 41 67
79 3 11 23 43 61
80 5 17 31 43 71
81 2 11 37 47 67
82 3 17 37 43 61
83 3 19 31 47 61
84 2 11 31 41 67
85 7 17 31 47 71
86 3 19 29 53 59
5
- 25 -

Спутниковые и радиорелейные системы передачи данных
p
87 3 13 23 47 67
88 5 17 37 47 71
89 2 17 29 43 61
90 2 19 29 41 71
91 5 17 29 53 61
92 7 13 29 43 71
93 5 11 37 53 59
94 5 13 31 53 59
95 3 19 23 41 59
96 2 19 37 43 61
97 7 13 23 47 61
98 2 11 23 53 71
99 5 19 23 43 71
100 2 19 31 41 71
p
2
p
3
p
4
p
5
Контрольные вопросы
1. Что такое множество?
2. Что такое декартово произведение множеств?
3. Что такое отношение на множествах?
4. Что такое функция?
5. Что такое алгебраическая операция?
6. Что такое нейтральный, противоположный и обратный
элементы?
7. Что такое алгебраическая структура «поле»?
8. Что такое конечное поле Галуа?
9. Что такое первообразный корень?
10. Что такое индекс?
11. Что такое система остаточных классов (СОК)?
12. Что такое ортогональные базисы?
13. Что такое ортогональные числа?
- 26 -

Практическая работа 2
Цель занятия: изучение операции сложения чисел в СОК.
Знания и умения, приобретаемые студентом в результате осво-
ения темы, формируемые компетенции или их части: ПК-1, ПК-7.
В результате освоения темы обучающийся должен
• знать: сложение чисел в СОК сумматорами и просмотровой таблицей.
• уметь: сложить числа в СОК по заданным основаниям.
• владеть: знаниями, умениями и навыками сложения чи-
сел в СОК.
Теоретическая часть
Операция сложения является самой популярной в СОК. Она
хорошо распараллеливается и для свей реализации требует мало
ресурсов. Для сложения чисел в модулярной арифметике достаточно сложить остатки слагаемых и откорректировать суммы
(найти остаток от деления суммы на соответствующее основание СОК) по каждому из оснований СОК.
Пример.
Пусть задана СОК с основаниями p
Рабочий диапазон этой СОК: P = p
то есть для чисел из диапазона [0; 104] можно безопасно выполнять арифметические операции.
A = 75 = (75 mod 3, 75 mod 5, 75 mod 7) = (0, 0, 5).
B = 13 = (13 mod 3, 13 mod 5, 13 mod 7) = (1,3,6).
A + B = 75 + 13 = 88 = (88 mod 3, 88 mod 5, 88 mod 7) = (1, 3, 4).
С другой стороны, выполним независимо друг от друга три
операции модулярного сложения, соответственно разрядов слагаемых в СОК.
1. (0 + 1) mod 3 = 1
2. (0 + 3) mod 5 = 3
3. (5 + 6) mod 7 = 4
В результате имеем СОК-тройку (1, 3, 4), разряды которой совпадают с разрядами числа 88 после его прямого перевода в СОК.
= 3, p2 = 5, p3 = 7.
1
1*p2*p3
= 3*5*7 = 105,
- 27 -

Спутниковые и радиорелейные системы передачи данных
С точки зрения высокоскоростных реализаций операции сложения в СОК, нехорошо выполнять операцию взятия остатка от деления после расчета суммы соответствующих разрядов. В случае
примера – это была корректировка (5 + 6) mod 7 = 11 mod 7 = 4.
Операция mod «съедает» весь выигрыш от применения СОК.
Избавиться от операции mod при выполнении операции модулярного сложения можно двумя путями.
1. Построить специализированные алгоритмы модулярного
сложения для каждого из оснований СОК. Такой способ
хорош и, пожалуй, является наилучшим для построения
высокопроизводительных систем «в железе». Главным
недостатком будет его неуниверсальность и большой
объем предварительной исследовательской работы, особенно для большого числа «больших» оснований СОК.
2. Использование просмотровых таблиц «сложения» по
всем или нескольким модулям СОК, эти таблицы рассчитываемых заранее один раз при старте вычислительной
системы (возможно прошитых в ПЗУ этой системы). Недостатком данного способа служит большой расход памяти (например, для основания p
= 251, размер таблицы
4
сложения будет равен 251*251 = 63001 ячеек).
Задания для практической работы
Сложить числа A = (a
, a2, a3, a4, a5) и B = (b1, b2, b3, b4, b5)
1
в СОК по заданным основаниям p1, p2, p3, p4, p5.
pp2p3p4p
1 7 19 23 43 59 0 7 10 2 6 6 17 13 24 56
2 3 13 37 41 71 2 1 13 18 36 2 1 5 7 25
3 2 17 31 43 61 0 16 22 3 7 1 13 3 19 7
4 5 17 37 47 71 3 6 34 44 46 1 15 32 2 41
5 2 13 37 47 61 0 12 21 45 18 0 12 24 4 56
6 3 13 29 41 71 1 0 20 15 44 0 11 14 25 29
7 2 17 37 53 71 0 5 10 4 6 1 10 17 32 22
8 5 11 29 53 59 3 5 12 36 2 1 7 23 3 12
9 2 13 37 41 67 1 6 35 17 6 0 3 31 31 46
5
aa2a3a4a
bb2b3b4b
5
- 28 -
5

Практическая работа 2
pp2p3p4p
5
aa2a3a4a
bb2b3b4b
5
10 2 11 37 41 67 0 2 22 40 10 1 2 10 33 26
11 5 11 37 41 67 0 8 4 9 64 4 7 26 4 5
12 7 17 37 43 61 4 6 3 30 43 0 13 10 7 57
13 7 11 31 41 61 5 9 27 17 26 4 6 6 16 45
14 2 19 23 41 59 1 9 7 2 18 1 2 1 12 19
15 2 11 37 41 61 0 10 24 5 10 0 0 36 39 50
16 2 17 37 41 67 1 5 22 40 2 1 10 6 2 15
17 2 17 31 43 67 1 15 22 32 18 0 8 19 7 31
18 7 19 31 47 71 4 17 14 38 48 1 0 20 44 21
19 2 17 31 41 71 1 16 22 15 16 0 14 9 22 22
20 5 13 23 53 71 1 8 5 23 2 3 5 18 26 63
21 5 17 23 47 67 4 4 20 4 30 3 15 11 12 18
22 2 17 29 41 59 0 9 0 1 30 1 12 25 13 28
23 5 13 23 53 61 0 8 1 17 44 0 3 7 15 39
24 2 11 37 53 71 0 7 17 23 3 0 0 1 41 34
25 2 19 29 47 59 1 16 11 9 16 0 14 10 14 18
26 2 17 37 41 67 0 9 23 8 65 0 0 16 22 58
27 3 13 31 43 71 0 11 7 19 46 0 5 28 11 56
28 2 13 23 47 59 0 2 7 32 1 0 11 8 11 54
29 2 19 29 41 61 1 3 28 11 35 0 16 15 3 19
30 5 17 29 41 61 3 8 10 27 15 2 4 21 40 0
31 2 13 37 41 67 0 9 13 38 1 1 10 19 26 13
32 3 17 31 47 61 2 8 11 38 13 1 4 22 9 9
3 13 37 47 71 0 8 13 22 16 1 4 28 20 44
33
34 3 19 23 47 67 2 17 8 28 50 2 5 10 20 31
35 5 17 29 47 59 4 8 6 29 7 3 9 8 41 34
36 2 19 37 47 71 1 12 10 40 38 1 16 2 38 11
37 7 11 23 53 61 1 0 8 24 17 0 0 18 17 13
38 7 17 29 41 71 1 16 24 10 43 6 8 17 20 65
39 2 11 23 47 71 0 10 11 40 12 1 3 3 24 3
40 3 19 29 53 67 0 5 7 46 45 1 17 10 14 11
41 3 17 29 43 67 2 6 28 41 44 0 0 26 23 11
42 5 11 31 43 59 4 2 4 29 42 2 6 23 4 28
43 5 17 23 53 71 0 15 15 33 42 0 4 10 7 54
44 7 17 29 43 67 1 1 22 7 8 0 10 17 34 3
45 2 19 29 43 71 0 11 16 28 30 0 3 28 0 40
5
- 29 -

Спутниковые и радиорелейные системы передачи данных
pp2p3p4p
5
aa2a3a4a
bb2b3b4b
5
46 3 19 29 43 59 0 5 23 17 11 1 2 19 15 4
47 3 17 23 41 67 2 13 13 3 23 1 12 20 40 27
48 2 19 37 47 59 1 12 5 11 20 0 12 8 16 3
49 2 13 37 47 71 0 1 7 6 27 1 1 35 32 68
50 7 17 37 53 67 3 12 30 32 28 6 16 5 16 30
51 3 19 23 43 61 0 8 14 42 48 1 17 6 38 38
52 2 11 31 43 67 1 0 4 5 21 1 0 12 12 9
53 2 17 29 47 67 0 15 19 26 43 0 5 0 10 2
54 7 11 31 43 71 6 0 9 20 35 3 4 28 38 26
55 3 17 37 43 71 1 3 1 1 39 0 0 34 20 16
56 3 17 23 43 61 2 15 3 22 11 1 9 14 29 59
57 5 11 37 53 61 4 0 36 11 35 2 10 6 20 57
58 3 13 23 41 71 2 3 16 37 41 1 9 5 12 50
59 3 17 23 47 67 0 6 3 37 48 0 7 19 25 9
60 2 19 31 43 67 0 15 0 20 6 1 16 18 8 15
61 3 11 29 53 61 0 2 21 33 22 2 7 10 15 18
62 3 17 29 47 59 2 7 6 40 5 1 6 26 27 23
63 7 19 37 41 71 1 0 26 34 21 0 6 16 37 38
64 3 13 37 41 67 1 12 35 19 42 0 10 18 19 50
65 3 13 37 47 71 2 6 33 40 24 2 5 21 33 19
66 2 13 29 43 61 1 1 1 18 54 0 12 17 26 5
67 2 13 37 47 61 1 2 25 45 37 1 9 24 36 37
68 5 19 37 43 71 3 18 24 24 34 4 12 22 35 55
5 17 29 47 59 3 15 5 19 50 4 3 5 38 27
69
70 5 13 29 41 61 3 2 17 28 28 3 0 21 3 55
71 7 13 29 47 67 5 1 20 26 39 1 9 16 30 19
72 7 17 37 43 71 3 11 35 39 46 4 9 36 28 36
73 7 17 23 41 71 2 15 1 22 60 0 6 5 34 48
74 5 17 37 53 71 1 8 12 40 56 0 7 20 5 43
75 5 13 37 47 61 2 3 25 18 47 0 12 35 22 48
76 5 13 31 53 61 2 6 16 49 2 1 6 30 25 44
77 7 11 29 47 59 0 0 1 14 27 1 1 14 4 51
78 2 13 31 41 67 0 3 2 22 15 1 6 28 25 62
79 3 11 23 43 61 2 10 22 5 25 0 0 15 0 38
80 5 17 31 43 71 1 4 17 25 8 0 5 15 32 48
81 2 11 37 47 67 0 4 25 37 53 1 5 35 14 9
5
- 30 -
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
