【发布时间】:2012-07-12 19:29:48
【问题描述】:
Boyer Moore 算法的预处理时间为 Θ(m + |Σ|),匹配时间为 Ω(n/m),O(n)。我知道 Boyer Moore Horspool 是 Simplified Boyer Moore 本身的一个进步,但是根据this Wikipedia article,它的平均情况复杂度是 O(N) 和最坏情况 O(MN)。所以在最坏的情况下,它应该比 Boyer Moore 算法慢。但是智利大学的this classic survey 表明,Boyer-Moore horspool 几乎每次都优于 Boyer Moore。我很迷惑!我应该使用哪个(对于小型和大型模式)进行字符串搜索,哪种算法在实际世界中具有更大的意义(我只是一名计算机科学专业的学生)?
【问题讨论】:
-
这是一个简单的时间与空间权衡。 满足您的要求,其中一个可能更好,但总的来说,两者都不是“更好”。为什么不尝试使用每个配置文件的 well documented, well tested implementation 来查看最适合您的数据的方法?
标签: c++ string algorithm search pattern-matching