大学数据结构课件10.KMP.pptVIP

  • 2
  • 0
  • 约2.53千字
  • 约 6页
  • 2016-12-23 发布于江苏
  • 举报
kmp算法 kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与J.H.Morris和 V.R.Pratt同时发现,因此人们称它为克努斯——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是根据给定的模式串p(pattern),定义一个next函数。next函数包含了模式串本身局部匹配的信息。 KMP算法的基本思想   一般的KMP算法 假设 主串: s: ‘s(1) s(2) s(3) ……s(n)’ 模式串 :p: ‘p(1) p(2) p(3)…... p(m)’ 现在我们假设 主串第i个字符与模式串的第j(j=m)个字符‘失配’(不同)后,主串第i个字符与模式串的第k(kj)个字符继续比较(为什么?) 此时,s(i)≠p(j), 有 主串:s(1) … s(i-j+1) s(i-j+2) … s(i-1) s(i) … … || (相配) || ... || ≠(失配) (1) 匹配串: p(1) p(2) ... p(j-1) p(j) … 由此,我们得到关系式:   ‘p(1) p(2) … p(j-1)’ = ’ s(i-j+1) s(i-j+2) … s(i-1)’

文档评论(0)

1亿VIP精品文档

相关文档