Boyer和Moore算法,移位表计算

时间:2013-07-11 22:29:58

标签: algorithm pattern-matching boyer-moore

我整晚都没能为Boyer and Moore pattern matching algorithm中的搜索词“anabanana”计算一个简单的移位表。

我发现以下示例没有任何解释: enter image description here

有人可以帮助我理解和解释图像查找班次表的方法吗?

1 个答案:

答案 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中的最小值。

example of assorted steps

我希望这会有所帮助,虽然有点晚。