【问题标题】:Which algorithm is better, Z-algo or KMP-algo for pattern search?哪种算法更好,Z-algo 或 KMP-algo 用于模式搜索?
【发布时间】:2017-01-11 05:00:45
【问题描述】:

两种算法的时间复杂度都是 O(m+n)。

n 和 m 是文本的长度和要搜索的模式。

Z算法的空间复杂度是O(m+n),KMP算法的空间复杂度是O(n)。

我想知道哪种算法实际上更快,应该普遍使用哪种算法?

【问题讨论】:

  • 在实践中,一些 O(m*n) 的算法甚至更快,例如 Boyer-Moore-Horspool。但是字符串搜索的性能在很大程度上取决于模式的大小和使用的字母的大小,因此没有算法的全局排名。
  • 根据您自己的文本和模式分布对它们进行基准测试。在某些情况下,这些算法甚至无法击败暴力搜索。
  • 感谢您的意见。

标签: pattern-matching string-matching


【解决方案1】:

实际上,KMP 是一个更好的选择,它在计算多个匹配时也很有效。 如前所述,它也是节省空间的。 并且它们背后的逻辑相同,因此速度差异将最小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多