字符串匹配问题(本科生教材).pptVIP

  • 2
  • 0
  • 约2.42千字
  • 约 22页
  • 2017-08-20 发布于河南
  • 举报
字符串匹配问题(本科生教材)

KMP算法;1、前缀函数;2、例2; c d a b a b a b a b ?; ? 当p.c[q]与t.c[j]不相等时,模式串p向右滑动多少个位置,再比较,既不丢失可能的匹配,又不做回溯? 以例2为例,展示匹配和滑动的过程! 1) 求p0,p1,…,pq-1中最大相同的前缀与后缀的长度k; 2) next[q]=k 即: 当p.c[q]与t.ch[j]不相等时,模式串p向右滑动q- k 个位置,继续比较p.c[q]和t.c[j]。;依次类推,直至出现下列两种情形之一。 (1) q退到某个next值,next[next…next[ ]]]时,比较i位置的字符,如相等,若此时若还不是完全匹配(q≠m),则q与j值各自增加1,继续比较下一字符 (2)如,k=-1时,模板退回到第1个位置、主串向前进一个,继续比较。 当算法中出现p.ch[q]=t.ch[i],且q=m时,显然找到了一个匹配p[0..m-1]=t[i-m..i-1]这是算法返回主串中出现匹配的第一个字符的位置i-m.;3、KMP算法;模板向后滑动 ;模板向后滑动 ;4、求前缀函数;由p的前缀函数的定义易知next[0]=-1 next[1]=0 。 用数学归纳法来计算前缀函数next的值: 对于

文档评论(0)

1亿VIP精品文档

相关文档