Я читаю об алгоритмах String во Введении к алгоритмам Кормена и т. Д.
Ниже приведен текст о некоторых теоретических обозначениях элементарных чисел.
Примечание: В приведенном ниже тексте ссылка == как эквивалент по модулю.
Учитывая четко определенное понятие остатка одного целого числа при делении на другое, удобно предусмотреть специальную запись для обозначения равенства остатков.Если (a mod n) = (b mod n), мы пишем a == b (mod n) и говорим, что a эквивалентно b по модулю n.Другими словами, a == b (mod n), если a и b имеют одинаковый остаток при делении на n.Эквивалентно, a == b (mod n) тогда и только тогда, когда n |(б - а).Например, 61 == 6 (мод 11).Также -13 == 22 == 2 == (mod 5).
Целые числа можно разделить на n классов эквивалентности в соответствии с их остатками по модулю n.Класс эквивалентности по модулю n, содержащий целое число a, равен
[a] n = {a + kn: k Z}.
Например, [3] 7 = {.,,-11, -4, 3, 10, 17,.,.};другие обозначения для этого набора - [-4] 7 и [10] 7.
Запись a принадлежит [b] n - это то же самое, что запись a == b (mod n).Множество всех таких классов эквивалентности равно
Zn = {[a] n: 0 <= a <= n - 1} .----------> Уравнение 1
Мой вопрос в приведенном выше тексте в уравнении 1, где упоминается, что «а» должно быть между 0 и n-1, но в примере оно задается как -4, а не между 0 и 6, почему?
В дополнение к вышесказанному упоминается, что для алгоритма Рабина-Карпа мы используем эквивалентность двух чисел по модулю третьего числа?Что это значит?