【问题标题】:KMP's failure functionKMP的失效函数
【发布时间】:2011-09-29 11:02:55
【问题描述】:

我最近学习了 KMP 字符串匹配算法,我几乎都学会了。但我没有得到的是如何在 O( length_of_pattern ) 中构建失败函数。我不需要代码,如果可能的话,我需要一个清晰的解释。提前致谢!

【问题讨论】:

    标签: string algorithm function performance pattern-matching


    【解决方案1】:

    来自this site

    KMP 算法通过使用先前执行的比较计算指示最大可能偏移 s 的失效函数 f 来预处理模式 P。

    具体而言,失效函数 f(j) 定义为 P 的最长前缀的长度,即 P[i 的后缀。 . j]。

    这是一个伪代码,我想你可以在网站上得到详细的解释

            KNUTH-MORRIS-PRATT FAILURE (P)
    
                Input:    Pattern with m characters
                Output: Failure function f for P[i . . j]
    
                i ← 1
                j ← 0
                f(0) ← 0
                while i < m do    /// your complexity will be O(length of pattern)
                    if P[j] = P[i]
                        f(i) ← j +1
                         i ← i +1
                          j← j + 1
                    else if (j != 0)
                         j ← f(j - 1)
                    else
                        f(i) ← 0
                        i ← i +1
    

    希望它能回答你的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 2013-08-06
      • 1970-01-01
      • 2015-10-13
      • 2021-09-05
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多