gpt4 book ai didi

algorithm - 如何优化 Knuth Morris Pratt 字符串匹配算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:01 27 4
gpt4 key购买 nike

如果我们发现不匹配,我们可以在不比较的情况下猜测文本中的下一个字符是否不匹配,

文字: abacabba

图案:阿爸

现在,当它比较模式中的第二个“b”和文本中的第二个“a”时,存在不匹配,有什么方法可以避免“c”接替“a”,因为它也是不匹配的。以及 KMP 如何在下面提到的文本和模式上运行

文本:aaaaaaa

图案:aa

最佳答案

如果您想跳过文中的比较以提高效率,那么您应该选择Boyer Moore Algorithm。从右到左比较。它可以有 Ω(n/m) 的最佳情况运行时间和 O(n) 的最坏情况。 Ω(n/m) 是预测和跳过无用比较的结果。

Knuth Morris Pratt算法进行从左到右的比较,其中无法知道下一个字符,并且 KMP 前缀表也仅传达有关模式的信息。

您甚至可以考虑 Boyer Moore Horspool具有比 Boyer Moore 更好的渐近行为的算法(当模式尺寸较大时)。

您可以查看所有主要字符串搜索算法的详细模拟图 here .

关于algorithm - 如何优化 Knuth Morris Pratt 字符串匹配算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5873935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com