"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
代表什么?
你应该先看一个更简单的例子,其中 d
是 10
并且文本只包含 0
和 9
之间的数字。
h
是用于左移 高位数字的值。例如,假设 m
是 3
和 T = 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
。
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.
这行是什么意思? h
代表什么?
你应该先看一个更简单的例子,其中 d
是 10
并且文本只包含 0
和 9
之间的数字。
h
是用于左移 高位数字的值。例如,假设 m
是 3
和 T = 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
。