Главная страница

Дискретка. Учебник издание шестое Рекомендовано Министерством образования и науки Российской Федерации в качестве учебника для студентов высших технических учебных заведений


Скачать 1.99 Mb.
НазваниеУчебник издание шестое Рекомендовано Министерством образования и науки Российской Федерации в качестве учебника для студентов высших технических учебных заведений
АнкорДискретка
Дата25.04.2023
Размер1.99 Mb.
Формат файлаpdf
Имя файлаDISKMATH.pdf
ТипУчебник
#1089730
страница14 из 29
1   ...   10   11   12   13   14   15   16   17   ...   29
k

106
Глава 3. ЧИСЛОВЫЕ СИСТЕМЫ
Тогда D/p больше, чем произведение любых L − 1 чисел d
i
. Выберем теперь целое число r ∈ [0, (D/p) 1] так, чтобы число K
0
= K + r · p попало в интервал [D/p, D − 1]. Между разными людьми распределяются числа
K
i
≡ K
0
(mod d
i
), i = 1, 2, . . . , k.
Пример 3.8.5. Предположим, что требуется закодировать ключ K = 5
и при этом L = 2, k = 3, p = 7, d
1
= 11, d
2
= 13, d
3
= 17. Имеем
D = d
1
· d
2
= 11 · 13 = 143 > 119 = 7 · 17 = p · d
3
, как и требуется. Выберем число r ∈ [0, (143/7) 1] = [0, 19] так, что K
0
= K + r · p ∈ [D/p, D− 1],
т. е. 5+ 7r ∈ [20, 142]. Возьмем, например, r = 3, тогда K
0
= 26. Распре- деляемые числа равны
K
1
= 26 (mod 11) = 4,
K
2
= 26 (mod 13) = 0,
K
3
= 26 (mod 17) = 9. По любым двум из этих чисел можно восстановить K.
Например, для K
1
и K
3
имеем K
0
4 (mod 11), K
0
9 (mod 17). Используя китайский алгоритм, находим K
0
= 26, откуда K = K
0
− r · p = 5. ¤
§ 3.9.
Точные вычисления,
использующие модулярную арифметику
Используя результаты предыдущих параграфов, опишем способ выпол- нения точных арифметических действий с (большими) целыми числами, при котором целые числа представляются в виде кортежей остатков от деления данных чисел на попарно взаимно простые модули, а выполнение арифме- тических операций сводится к выполнению соответствующих операций над остатками.
Рассмотрим сначала случай одного модуля. Пусть дано выражение
f (x
1
, x
2
, . . . , x
h
), являющееся термом сигнатуры Σ = {+
(2)
, −
(1)
, ·
(2)
, (()
1
)
(1)
},
и требуется вычислить значение f (i
1
, i
2
, . . . , i
h
), где i
1
, i
2
, . . . , i
h
Z. Три- виальный подход состоит в непосредственном вычислении значения терма.
Однако промежуточные результаты могут не быть целыми числами (напри- мер, 1/3 = 0.333 . . . = 0.(3)), и отбрасывание цифр или округление может привести к неточности окончательного результата. Во избежание этого со- поставим вычислению значения f (i
1
, i
2
, . . . , i
h
) над Z соответствующее вы- числение значения f (i
0
1
, i
0
2
, . . . , i
0
h
) в поле Z
m
по обходному пути, показанному на рис. 3.2.
Вместо вычисления f (i
1
, i
2
, . . . , i
h
) над Z мы сначала получаем эквива- лентное выражение f
m
= f (i
0
1
, i
0
2
, . . . , i
0
h
) над Z
m
для некоторого простого m,
где i
0
j
≡ i
j
(mod m), j = 1, 2, . . . , h. Затем вычисляем выражение f
m
над Z
m

3.9. ТОЧНЫЕ ВЫЧИСЛЕНИЯ
107
Z
Выражение (f )
−−−−→
Z
m
Эквивалентное выражение (f
m
)


y
Вычисление над Z


y
Вычисление над Z
m
Результат (res) ←−−−− Эквивалентный результат (res
m
)
Рис. 3.2
и получаем эквивалентный результат res
m
, где res
m
res (mod m). В за- ключение отображаем res
m
обратно в множество целых чисел.
Отметим, что отношение res res
m
(mod m) не определяет однозначно окончательный результат res. Например, условие x ≡ 7 (mod 13) означает,
что x может быть равным 7, 20 и т. д. Однако если мы знаем, что 0 < x < 13,
то x может быть равным только 7. Для того чтобы однозначно определить res, нужно иметь априорную оценку его величины. Эта оценка используется в качестве модуля m, и все операции выполняются в кольце Z
m
. Если име- ется оценка на величину res, то ищем наименьшее неотрицательное решение уравнения res res
m
(mod m). Если же мы имеем оценку на |res|, то ищем наименьшее по абсолютной величине решение.
Сложности с данным методом возникают при выполнении операции деле- ния. Как уже отмечалось, в случае, когда p — простое число, кольцо hZ; +, ·i
является конечным полем. Поскольку обратный элемент к любому ненуле- вому элементу всегда существует, деление по модулю p определяется следу- ющим образом:
a
b
(mod p) = a · (b
1
(mod p)) (mod p),
где b
1
(mod p) — элемент, обратный к элементу b по модулю p, который будет также обозначаться просто через b
1
. Частное двух целых чисел в Z
p
также является целым числом, даже если b не делит a в Z.
Пример 3.9.1. 3/4 (mod 11) 3 · 4
1
(mod 11) 3 · 3 (mod 11) 9.
Таким образом, 3/4 9 (mod 11). Число, полученное в этом примере и рас- сматриваемое как промежуточный результат, имеет смысл для дальнейших вычислений, поскольку (3/4) · 4 (mod 11) 9 · 4 (mod 11) 3 (mod 11). ¤
Предположим теперь, что модуль p ограничивает окончательный результат res. Если res не является целым числом, принадлежащим Z
p
,

108
Глава 3. ЧИСЛОВЫЕ СИСТЕМЫ
то res
p
6= res, и для того чтобы получить последнее число, требуется допол- нительная информация (которую мы проиллюстрируем ниже двумя при- мерами). Если res лежит в Z
p
, то res
p
= res. Таким образом, арифметика одного модуля может быть использована для выполнения последователь- ности точных арифметических операций над целыми числами в Z
p
, даже если эта последовательность включает операции деления. Трудности могут возникнуть лишь при интерпретации результатов.
Если вычисляемое выражение может быть положительным или отри- цательным, необходимо использовать симметричную систему с носителем
{−
p−1 2
, . . . , −2, −1, 0, 1, 2, . . . ,
p−1 2
}, которая изоморфна неотрицательной си-
стеме с носителем {0, 1, . . . , p − 1}. Изоморфизм ϕ между этими системами осуществляется по формуле
ϕ(k) =
(
k,
если 0 6 k 6
p−1 2
,
k + p, если
p−1 2
6 k < 0.
Пример 3.9.2. На рис. 3.3 показано отображение ϕ при p = 11. Урав- нение x ≡ 17 (mod 11) имеет наименьшее неотрицательное решение x = 6
и наименьшее по абсолютной величине решение x = 5. ¤
При выполнении арифметических операций удобно сначала отобразить данные в неотрицательное множество, выполнить в нем все операции, а за- тем отобразить обратно в симметричное множество.
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
0 1 2 3 4 5 6 7 8 9 10
-5 -4 -3 -2 -1 0 1 2 3 4 5
Неотрицательное множество множество
Симметричное
Рис. 3.3

3.9. ТОЧНЫЕ ВЫЧИСЛЕНИЯ
109
Пример 3.9.3. Выполним точные арифметические операции в Z
11
для вычисления x = 1/3 4/3.
В этом примере априорная информация состоит в том, что результат ищется в симметричном множестве. Имеем x (mod 11) (1/3 + (4)/3)
(mod 11) (1/3 + 7/3) (mod 11) (1 · 3
1
+ 7 · 3
1
) (mod 11) (1 · 4+
+ 7·4) (mod 11) 32 (mod 11). Отображая результат обратно в симметрич- ное множество, получаем правильный ответ x = 1. В приведенном примере res
p
= res, поскольку с самого начала известно, что res лежит в симметрич- ном множестве для Z
11
. ¤
Пример 3.9.4. Вычислим x = 1/2 2/3, пользуясь той же априорной информацией, что и в предыдущем примере.
Имеем x (mod 11) (1/2 + (2)/3) (mod 11) (1/2 + 9/3) (mod 11)
(1 · 2
1
+ 9 · 3
1
) (mod 11) (1 · 6 + 9 · 4) (mod 11) 42 (mod 11) 9. Ес- ли мы отобразим результат в симметричное множество, то получим непра- вильный ответ: x = 2. Поэтому требуется дополнительная информация о том, что мы ищем рациональное число x (mod 11) (a/b) (mod 11), где
b =НОК(2, 3). Тогда a = xb (mod 11) 9 · 6 (mod 11) 10 (mod 11) ≡ −1.
Следовательно, x = (1)/6, что является правильным ответом. ¤
Перейдем теперь к арифметике нескольких модулей. Использование этой арифметики позволяет естественно решать проблему компьютерного представления и работы с большими целыми числами, с которой мы сталки- ваемся в арифметике одного модуля: как мы видели, модуль m должен быть достаточно большим, чтобы результат res определялся однозначно по его остатку res
m
(m > res). Поэтому при работе с большим m мы используем несколько модулей, кодирующих целые числа x (0 6 x 6 m − 1) в соответ- ствии с китайской теоремой об остатках.
Для вычисления заданного выражения f (i
1
, i
2
, . . . , i
h
), зависящего от це- лочисленных аргументов i
1
, i
2
, . . . , i
h
, сначала вычисляем f
m
k
(i
1k
, i
2k
, . . . , i
hk
),
где i
jk
— остаток от деления i
j
на m
k
(j = 1, 2, . . . , h, k = 1, 2, . . . , n) для ко- ротких модулей m
k
. При условии, что выражения f
m
k
определены над Z
m
k
,
вычисляем их над Z
m
k
и получаем эквивалентные результаты res
m
k
,
k = 1, 2, . . . , n. В завершение, пользуясь китайским алгоритмом, получаем окончательный результат res. Модули m
k
выбираются таким образом, чтобы
m
1
· m
2
· . . . · m
n
> res. Если дана положительная оценка на res, то ищет- ся наименьшее неотрицательное решение системы уравнений по китайскому алгоритму, если же оценивается |res|, то ищется наименьшее по абсолютной

110
Глава 3. ЧИСЛОВЫЕ СИСТЕМЫ
Z
Выражение (f )
−−−−→
Z
m
k
Эквивалентное выражение (f
m
k
)


y
Вычисление над Z


y
Вычисление над Z
m
k
Результат (res) ←−−−− Эквивалентный результат (res
m
k
)
Рис. 3.4
величине решение. На рис. 3.4 представлена диаграмма, иллюстрирующая приведенный алгоритм.
Рассмотрим более подробно арифметику нескольких модулей. Описанные в § 3.2 системы счисления являются линейными, позиционными и весовыми.
Это означает, что всем позициям соответствуют веса, зависящие от одного основания P : P
0
, P
1
, P
2
и т. д. Вместо этого многомодульная система счис- ления использует взаимно простые позиционные основания, m
1
, m
2
, . . . , m
n
Это позволяет однозначно представлять m
1
· m
2
· . . . · m
n
различных чисел x
в виде вектора остатков [a
1
, a
2
, . . . , a
n
] относительно вектора оснований
β = [m
1
, m
2
, . . . , m
n
], где x ≡ a
i
(mod m
i
), i = 1, 2, . . . , n. Как и в случае одного модуля, мы можем определить наименьшую неотрицательную чис-
ловую систему (которую будем называть стандартным набором остат-
ков) и при условии, что все модули нечетные, наименьшую по абсолютной
величине числовую систему или симметричную систему остатков относи- тельно данного вектора оснований β. Если [a
1
, a
2
, . . . , a
n
] — стандартный на- бор остатков числа x относительно вектора оснований β = [m
1
, m
2
, . . . , m
n
],
то запишем
x (mod β) = [a
1
, a
2
, . . . , a
n
].
Пример 3.9.5. Если n = 3, m
1
= 3, m
2
= 5, m
3
= 7, то в этой системе с помощью остатков можно представить 3· 5 · 7 = 105 различных чисел. Век- тор [2, 3, 1] однозначно определяет десятичное число 8 в неотрицательной системе остатков относительно вектора оснований β = [3, 5, 7]. В симмет- ричной системе число 8 представляется вектором [1, −2, 1]. Имеем
8 (mod β) = [2, 3, 1]. ¤
Из китайской теоремы об остатках вытекает
Теорема 3.9.1. Два целых числа n
1
и n
2
имеют одинаковые стандарт-
ные наборы остатков относительно вектора оснований β = [m
1
, m
2
, . . . , m
n
]
тогда и только тогда, когда n
1
≡ n
2
(mod m
1
m
2
. . . m
n
). ¤

3.9. ТОЧНЫЕ ВЫЧИСЛЕНИЯ
111
Пример 3.9.6. Рассмотрим вектор оснований β = [3, 5, 7]. Так как
9 114 (mod 3 · 5 · 7), то 9 (mod β) = [0, 4, 2] = 114 (mod β). ¤
Из теоремы 3.9.1 следует существование биекции между множествами
Z
β
­ {k (mod β) | k ∈ Z} и Z
M
, где M = m
1
· m
2
· . . . · m
n
. Более того,
из китайской теоремы об остатках следует
Теорема 3.9.2. Алгебры hZ
β
; +, ·i и hZ
M
; +, ·i являются изоморфными
конечными коммутативными кольцами. ¤
Следовательно, многомодульная арифметика hZ
β
; +, ·i эквивалентна
арифметике hZ
M
; +, ·i по модулю M.
Главное преимущество многомодульной числовой системы состоит в от- сутствии переносов при выполнении операций сложения и умножения. Ариф- метика замкнута в каждой позиции, т. е. арифметические действия выполня- ются покоординатно. Поэтому сложение и умножение длинных целых чисел можно выполнять так же быстро, как и коротких чисел.
Для выполнения деления определим элемент b
1
(mod β), обрат- ный к элементу b = [b
1
, b
2
, . . . , b
n
] по модулю вектора оснований
β = [m
1
, m
2
, . . . , m
n
], следующим образом:
b
1
(mod β) = [b
1 1
(mod m
1
), b
1 2
(mod m
2
), . . . , b
1
n
(mod m
n
)].
Теперь, если a = [a
1
, a
2
, . . . , a
n
], то
a
b
(mod β) = a · b
1
(mod β) =
= [a
1
· b
1 1
(mod m
1
), a
2
· b
1 2
(mod m
2
), . . . , a
n
· b
1
n
(mod m
n
)].
Как и в случае одного модуля, если b не делит a при соответствующей интерпретации в кольце целых чисел, то результат не может быть проин- терпретирован без дополнительной информации. Однако он допустим в ка- честве промежуточного результата.
Основная трудность при работе с многомодульными числовыми систе- мами заключается в сравнении величины целых чисел. Конечно, можно ис- пользовать симметричную систему остатков, вычесть из одного числа другое и затем определить знак разности. К сожалению, проблема этим не решает- ся, поскольку остатки в симметричной системе не несут информации о знаке числа. Один из способов определения знака числа x состоит в обратном пре- образовании к обычному виду, что разрушает саму идею многомодульной

112
Глава 3. ЧИСЛОВЫЕ СИСТЕМЫ
арифметики. Задача определения знака числа может быть решена гораз- до лучшим способом с помощью преобразования числа
1   ...   10   11   12   13   14   15   16   17   ...   29


написать администратору сайта