algorithm - Boyer和Moore算法,移位表计算

标签 algorithm pattern-matching boyer-moore

我整个晚上都没能为搜索词“anabanana”计算一个简单的转换表,以便在 Boyer and Moore pattern matching algorithm 中使用。 .

我在没有任何解释的情况下找到了以下示例: enter image description here

有谁能帮我理解和解释图像的查找移位表的方法吗?

最佳答案

我想我明白这里做了什么,所以我会尝试解释一下。

“Wort”行是您正在分析的模式,(在我看来)没有必要考虑上面的“Text”行。相反,假设有一个额外的行包含模式中从左到右的字符从零开始的位置。 长度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

我希望这会有所帮助,尽管有点晚了。

关于algorithm - Boyer和Moore算法,移位表计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604641/

相关文章:

haskell - 可交换模式匹配

c - Boyer-Moore-Horspool 实现

c - 了解 Boyer-Moore 字符串搜索算法的 "Good Suffix Shift"-表

c - 类似于 strstr 的高效版本

database - HyperLogLog算法讲解

Scala 模式匹配在 2.10 中的递归类型上失败

f# - 记录模式匹配

algorithm - 矩阵乘法子问题图顶点度

algorithm - 生成求和矩阵游戏的算法

c++ - Boost boyer_moore 搜索语料库类型的示例类?