【问题标题】:What are the differences between suffix links and failure links?后缀链接和失效链接有什么区别?
【发布时间】:2013-10-19 09:46:24
【问题描述】:

这学期我正在学习算法,并阅读了关于构建后缀树的Aho-Corasick string matching algorithmUkkonen's algorithm

除了失败链接检查前缀和后缀链接检查后缀之外,我阅读了它们但无法理解这两者的主要基本区别。

这两种算法有什么区别?

【问题讨论】:

  • 你已经有了很好的答案。虽然如果你还没有读过,我建议你看看Ukkonen's paper。它非常清楚地解释了您正在努力解决的概念,并逐步进行(使用“简单”的 trie,然后使用实际的后缀树)

标签: algorithm pattern-matching suffix-tree exact-match aho-corasick


【解决方案1】:

我认为你对后缀链接和失效链接的理解是错误的。在这两种情况下,后缀/失败链接都是从 trie/后缀树中的一个节点到 trie/后缀树中的另一个节点的指针,具有以下属性:如果原始节点表示字符串 x,则字符串 y 由后缀/失败链接指向的节点是 y 是字符串 x 的最长可能后缀的节点。

这两种算法的主要区别在于算法产生的内容,而不是后缀/失败链接的含义。 Aho-Corasick 生成了一个带有额外转换信息注释的 trie,它可以尽可能快地找到字符串集合的所有实例。产生的故障链接用于算法的构建和模式匹配步骤。 Ukkonen 的算法生成后缀树,仅在构建期间使用后缀链接,而不是在树上的大多数查询期间。

希望这会有所帮助!

【讨论】:

  • Downvoter - 我有什么特别需要改进的地方吗?
  • :不知道有什么用?!
  • @Phpdna 您有什么特别想知道的吗?如果有帮助,我可以尝试用更多信息更新答案。
【解决方案2】:

不同之处在于后缀/字典链接就像是指向子父级的指针。失败链接来自广度优先搜索。两个链接都是后缀。

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 2010-09-16
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多