我閱讀有關算法導論字符串算法由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:k Z}。
例如,[3] 7 = {。 。 。 ,-11,-4,3,10,17,...。 。 };其他指標是[-4,7和10]。
寫a屬於[b] n與寫a == b(mod n)相同。該組的所有這樣的等價類是
鋅= {[α] N:0 < =一個< = N - 1} .---------->公式1個
我的問題在上面的文本中,在等式1中提到了「a」應當在0和n-1之間,但是在實例中它被給出爲-4而不在0和6之間,爲什麼?
除了上面提到的是,對於Rabin-Karp算法,我們使用兩個數的等價模以第三個數?這是什麼意思?
這與字符串或算法無關,與數學有很大關係。 – Amadan 2011-12-29 08:56:39
-4 == 3(mod 7)。有時將它想象成3,有時是-4。而「a相當於b mod c」僅僅意味着c將a-b分開。 – btilly 2011-12-29 09:01:59