我整晚都没能为Boyer and Moore pattern matching algorithm中的搜索词“anabanana”计算一个简单的移位表。
我发现以下示例没有任何解释:
有人可以帮助我理解和解释图像查找班次表的方法吗?
答案 0 :(得分:3)
我想我明白这里做了什么,所以我会尝试解释。
“Wort”行是您正在分析的模式,(在我看来)不需要考虑上面的“Text”行。而是假设一个额外的行,从左到右包含模式中char的从零开始的位置。
所描绘的模式m
的长度p[]
为9。
我下面的每一行都命名为p_i[]
,其中i是右侧的索引
进一步说明基于2:
在图案下方的下方行标记与上图中的字符匹配的所有字符。 (在这里划掉)
for i=1 to m do
search in the rows below for a subpattern where p[m-i]<>p_j[m-1] (*)
and p[m-i+1, ..., m-1]=p_j[m-i+1, ..., m-1]
index j is your shift value for shift[i]
od
(*)注意:当移位的模式p_j
向右移动太远时,将会有空的字符进行比较。在这种情况下,您可以根据需要始终假设==
或<>
。始终使用所有可能的j
中的最小值。
我希望这会有所帮助,虽然有点晚。