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

时间:2010-11-24 03:21:54

标签: string-search boyer-moore

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

1 个答案:

答案 0 :(得分:3)

Boyers Moore算法通常应该使用较少的比较来引用here

  

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