【问题标题】:Does KMP algorithm perform less comparisons than the simplified Boyer-Moore algorithm?KMP 算法执行的比较是否比简化的 Boyer-Moore 算法少?
【发布时间】:2010-11-24 03:21:54
【问题描述】:

KMP (Knuth-Morris-Pratt) 算法执行的比较是否比简化的 Boyer-Moore 算法少?

【问题讨论】:

  • 多年前我对这些进行了一些测试。 B-M 每次都赢过 KMP。

标签: string-search boyer-moore


【解决方案1】:

Boyers Moore 算法通常应该执行较少的比较以引用 here

应该相当清楚的是,如果通常情况下给定的字母根本不会出现在搜索字符串中,那么这个算法只需要大约 N/M 个字符比较(N=length(s1), M= length(s2)) - 对 KMP 算法的重大改进,它仍然需要 N。但是,如果不是这种情况,那么我们可能需要再次进行 N+M 比较(使用算法的完整版本)。幸运的是,对于许多应用程序,我们接近 N/M 性能。如果搜索字符串非常大,那么很可能会出现给定的字符,但与其他算法相比,我们仍然得到了很好的改进(如果字符随机分布在字符串中,则大约为 N*2/alphabet_size)。

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多