"h"在rabin karp算法中代表什么?

What does "h" represent in rabin karp algorithm?

t(s+1) = (d*(t(s) -T[s+1]h) + T[s+m+1])mod q

d是字母的大小
T[1...n]是要搜索的文字
P[1...m]是图案(m是图案的大小)
q是素数

h = d^m-1 (mod q)是m位文本window.

中高位数字“1”的值

这行是什么意思? h代表什么?

你应该先看一个更简单的例子,其中 d10 并且文本只包含 09 之间的数字。

h 是用于左移 高位数字的值。例如,假设 m3T = 2345。从 234 可以计算出 345 如下:

345 = 10*(234 - 2*100) + 5

你可以看到在这种情况下 h = 100 用于在从 234 中减去它之前将 2 移动 2 位。注意h的值为h = 10<sup>3-1</sup>

现在,您可以将这个想法概括为任何 d,并得到 h = d<sup>m-1</sup>.

然后,通过进行模运算,每次计算任何值时只需添加 mod q