algorithm - Boyer-Moore 字符串匹配 - 良好的后缀移位

标签 algorithm string-matching boyer-moore

我了解坏符号表。在好的后缀表中,距离不应该计算为从最右边出现的模式到模式文本末尾的距离吗?在这种情况下,下表中的所有距离 (d2) 是否不应该都为 1(最后一个条目除外,该距离为 5),因为紧邻其左侧的模式将可用?

enter image description here

类似地,也从未理解下表。有什么帮助吗?

enter image description here

引用:

问题 - 第 6 页,问题 7。


答案 - 第 11 页


计算机算法的设计与分析- Anany Levitin ( https://umutzafer.files.wordpress.com/2012/01/solu7.pdf )

文本 - The design and analysis of computer algorithms- Anany Levitin (第263页)

最佳答案

好的后缀规则是寻找已经匹配的后缀实例,其中前一个字符不同。例如,在第一个表中的“好后缀”00 的情况下,移位会查找前面没有 0 的 00 实例。

为什么?因为我们知道“好后缀”前面的 0 不匹配;否则我们就不会尝试转变。

在第二个表中,找不到这样的实例。因此,我们会寻找与“好后缀”的后缀相匹配的模式的合理前缀。

关于algorithm - Boyer-Moore 字符串匹配 - 良好的后缀移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36426911/

相关文章:

python - 在街道数据(图表)中查找社区(集团)

algorithm - 如何将以下递归转换为自上而下的动态规划?

php - 使用 PHP 过滤掉重复 CSS 规则的最快方法是什么?

javascript - 在 JavaScript 中测试两个字符串是否完全匹配的最快方法

algorithm - 从视觉上理解博耶-摩尔

c++ - 如何计算指向不同 vector 数组中特定对象的指针的出现次数

C 中的 Char 置换算法,将输出存储在数组中

algorithm - 字符串匹配 - 字符权重

java - Apache和Boyer-Moore字符串搜索算法的StringUtils.contains

c++ - 适应 Boyer-Moore 实现