String 字符串Rabin-Karp初等数符号

String 字符串Rabin-Karp初等数符号,string,algorithm,numbers,rabin-karp,String,Algorithm,Numbers,Rabin Karp,我正在阅读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(mod 11)。另外,-13==22==2

我正在阅读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(mod 11)。另外,-13==22==2==(模块5)

整数可以根据其模n的余数分为n个等价类。包含整数a的模n的等价类是

[a] n={a+kn:kz}

例如,[3]7={…,-11,-4,3,10,17,};该集合的其他表示为[-4]7和[10]7

写入a属于[b]n与写入a==b(mod n)相同。所有这些等价类的集合都是


Zn={[a]n:0我会尝试将您推向正确的方向,即使这与编程无关

其中带-4的例子是一个等价类的例子,它是一个等价于给定数字的所有数字的集合。因此,在[3]7中,所有数字都等价于(模7)3,其中包括-4、17、710和无穷多个其他数字

您还可以将同一类命名为[10]7,因为每个与3相等(模7)的数字同时也与10相等(模7)

最后一个定义给出了一组不同的等价类,并指出对于模7,正好有7个等价类,可以由0到6的数字生成

Zn = {[a]n : n <= a < 2 * n}

这不是一个编程问题,但没关系

提到“a”应该介于0和n-1之间,但在示例中,它被给出为-4,而不是介于0和6之间,为什么


因为[-4]n对于某些x与[x]n是相同的等价类,因此0与字符串或算法无关,而与数学有很大关系,-4==3(mod 7)。有时可以方便地将其视为3,有时可以将其视为-4。“a相当于b mod c”简单地表示c除以a-b。