Algorithm 我们为什么不这样转变呢?

Algorithm 我们为什么不这样转变呢?,algorithm,string-matching,knuth-morris-pratt,Algorithm,String Matching,Knuth Morris Pratt,在研究字符串的Knuth–Morris–Pratt算法时: ABC ABCDAB ABCDAB 对于模式: ABCDABD 我被困在一个台阶上。我将突出显示我当前遇到的问题 ABC ABCDAB ABCDAB ABCDABD ABC ABCDAB ABCDAB ABCDABD ABC ABCDAB ABCDAB ABCDABD ABC ABCDAB ABCDAB ABCDABD--------------------(WHY THIS ?) 我不明白上面

在研究字符串的Knuth–Morris–Pratt算法时:

ABC ABCDAB ABCDAB
对于模式:

ABCDABD
我被困在一个台阶上。我将突出显示我当前遇到的问题

ABC ABCDAB ABCDAB
ABCDABD

ABC ABCDAB ABCDAB
   ABCDABD

ABC ABCDAB ABCDAB
    ABCDABD

ABC ABCDAB ABCDAB
        ABCDABD--------------------(WHY THIS ?)
我不明白上面的步骤。我希望上述步骤是:

ABC ABCDAB ABCDAB
          ABCDABD

请解释“正确”步骤的逻辑/原因。

当“”与“D”比较时,发现不匹配。这个算法“记住”前面的“AB”是比较的,所以它需要检查不匹配的字符是否是“C”


KMP方法的思想在《算法导论》一书中进行了解释。它非常类似于无限状态机方法,这可能有助于您理解它。

模式中的第二个AB匹配,因此我们移动,使第一个AB现在位于第二个AB所在的位置。为什么你认为我们可以更进一步?@n.m.你能告诉我在与knuth morris algo合作时要查找的标准吗。我不完全明白,尽管我试着读了这本书