rabin karp算法中“h”代表什么?

时间:2016-04-29 10:05:55

标签: algorithm rabin-karp

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位文本窗口的高位数字“1”的值。

这条线是什么意思? h代表什么?

1 个答案:

答案 0 :(得分:0)

您应首先查看d10的简单案例,且文字仅包含09之间的数字。

h是您用于左移高位数的值。例如,我们假设m3T = 2345。从234开始,您可以按如下方式计算345

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

在这种情况下,您可以看到h = 100用于将2转换为2位数,然后再从234中减去它。请注意,h的值为h = 103-1

现在,您可以概括任何d的想法,并获取h = dm-1

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