KMP 算法执行的比较是否比简化的 Boyer-Moore 算法少?

发布于 2024-10-04 02:19:11 字数 64 浏览 3 评论 0原文

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

Does the KMP (Knuth–Morris–Pratt) algorithm perform fewer comparisons than the simplified Boyer-Moore algorithm?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

饮惑 2024-10-11 02:19:11

Boyers Moore 算法通常应该以较少的比较来执行,引用自此处

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

The Boyers Moore algorithm should usually perform with less comparisons to quote from here

It should be reasonably clear that, if it is normally the case that a given letter doesnt appear at all in the search string, then this algorithm only requires approx N/M character comparisons (N=length(s1), M=length(s2)) - a big improvement on the KMP algorithm, which still requires N. However, if this is not the case then we may need up to N+M comparisons again (with the full version of the algorithm). Fortunately, for many applications we get close to the N/M performance. If the search string is very large, then it is likely that a given character WILL appear in it, but we still get a good improvement compared with the other algorithms (approx N*2/alphabet_size if characters are randomly distributed in a string).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文