rabin karp算法中的“h”代表啥?
Posted
技术标签:
【中文标题】rabin karp算法中的“h”代表啥?【英文标题】:What does "h" represent in rabin karp algorithm?rabin karp算法中的“h”代表什么? 【发布时间】: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
代表什么?
【问题讨论】:
【参考方案1】:您应该首先查看一个更简单的情况,其中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
。
【讨论】:
以上是关于rabin karp算法中的“h”代表啥?的主要内容,如果未能解决你的问题,请参考以下文章