我正在阅读 Cormen 等人的算法简介中的字符串算法
以下是关于一些基本数论符号的文本。
注意:在下面的文本中,将 == 引用为模等价。
给定一个整数除以另一个整数的余数的定义明确的概念,提供特殊符号来表示余数相等是很方便的。如果 (a mod n) = (b mod n),我们写 a == b (mod n) 并说 a 等价于 b,模 n。换句话说,如果 a 和 b 除以 n 时具有相同的余数,则 a == b (mod n)。等效地,a == b (mod n) 当且仅当 n | (b-a)。例如,61 == 6(模 11)。此外,-13 == 22 == 2 == (mod 5)。
整数可以根据余数模n分为n个等价类。包含整数 a 的等价类模 n 是
[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中提到“a”应该在0和n-1之间,但在示例中它被给出为-4,它不在0和6之间,为什么?
除了上面提到的,对于 Rabin-Karp 算法,我们使用两个数模第三个数的等价性?这是什么意思?