【发布时间】:2016-04-29 10:05:55
【问题描述】:
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 代表什么?
【问题讨论】:
标签: 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 代表什么?
【问题讨论】:
标签: algorithm rabin-karp
您应该首先查看一个更简单的情况,其中d 是10,并且文本仅包含0 和9 之间的数字。
h 是您用于左移高位数字的值。例如,假设m 是3 和T = 2345。从234,可以计算出345如下:
345 = 10*(234 - 2*100) + 5
您可以看到,在这种情况下,h = 100 用于将 2 移动 2 位,然后再从 234 中减去它。注意h的值为h = 10<sup>3-1</sup>
现在,您可以将这个想法推广到任何d,并得到h = d<sup>m-1</sup>。
然后,通过进行模运算,您只需在每次计算任何值时添加mod q。
【讨论】: