KMP算法和扩展KMP算法.pptVIP

  • 25
  • 0
  • 约2.37千字
  • 约 10页
  • 2019-02-18 发布于安徽
  • 举报
* * KMP算法和扩展KMP算法 * * BF算法 其实就是朴素算法加了个高端的名字… 流程:例如将“BBC ABCDAB ABCDABCDABDE”与串“ABCDABD”匹配; 1、首先,字符串“BBC ABCDAB ABCDABCDABDE”的第一个字符与搜索词“ABCDABD”的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。 2、因为B与A不匹配,搜索词再往后移。 就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。接着比较字符串和搜索词的下一个字符,还是相同。直到字符串有一个字符,与搜索词对应的字符不相同为止。这时,最自然的反应是,将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把搜索位置移到已经比较过的位置,重比一遍。 * * KMP引入 一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是“ABCDAB”。KMP算法的想法是,设法利用这个已知信息,不要把“搜索位置”移回已经比较过的位置,继续把它向后移,这样就提高了效率。 怎么做到这一点呢?可以针对搜索词,算出一张《部分匹配表》 下面介绍《部分匹配表》是如何产生的。 首先,要了解两个概念:前缀和后缀。 前缀指除了最后一个字符以外,一个字符串的全部头部组合;后缀指除了第一个字符以外,一个字符串的全部尾部组合。 * * 部分匹配表  部分匹配值就是前缀和后缀的最长的

文档评论(0)

1亿VIP精品文档

相关文档