KMP:比较过程中主串不回溯。复杂度O(m+n);
关键是:使用了在匹配过程中 已经 产生的信息。当模式字符和 主串失配时,(尽可能的-->确实就是)在模式中找到 下一个 需要和 主串中该位置字符 进行匹配的字符的位置。next[]函数的求法是关键。
改进算法-->模式中Pi位置的字符匹配主串 (Y) 失效了,那么模式中下一个匹配(Y)的 字符应该可能是Y(不是Pi)。即那么next[i]中的字符不是 Pi。
KMP的改进算法
高效的算法都是充分利用了已经获取的(潜在的,需要挖掘->或者需要记录,或者需要预先的处理)信息。类似的还有动态规划。