文件名称:数据结构拓展——KMP算法
文件大小:129KB
文件格式:PDF
更新时间:2021-09-14 11:51:41
数据结构 KMP算法 学习资源
在朴素的模式匹配算法中,当目标串和模式串的字符比较不相等时,进行下一次比较的 是目标串本趟开始处的下一个字符,而模式串则回到起始字符,这种回溯显然是费时的。如 果仔细观察,可以发现这样的回溯常常不是必须的。 由 D.E.Knuth、J.H.Morris 和 V.R.Pratt 三人共同提出了一个改进的模式匹配算法,称为 KMP 算法。当某一位匹配失败时,可以根据已匹配的结果进行判断。当模式串中的第 k 位 与目标串的第 i 位比较发生不匹配时,需要将模式串向右滑动到哪里继续与目标串的第 i 位 进行比较?即目标串始终无须回溯,模式串返回到前面的什么位置,视情况而定。如图 4-4 所示的例子。KMP 算法避免了不必要的主串回溯,减少了模式串回溯的位数,从而使算法 复杂度提升到 O(s.curlen + t.curlen)。