1 / 8
文档名称:

KMP模式匹配算法探讨.doc

格式:doc   大小:19KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

KMP模式匹配算法探讨.doc

上传人:卢卡斯6687 2022/7/8 文件大小:19 KB

下载得到文件列表

KMP模式匹配算法探讨.doc

相关文档

文档介绍

文档介绍:KMP形式婚配算法探供
  摘要介绍了KMP算法并与朴真查觅算法举止了比拟,提出了前缀函数的没有雅面,并利用改革的前缀函数改革KP算法,终了结开KMP的改革算法给出了屡次婚配的算法。
  闭键词串婚配,前缀函数,KP算法
  正在策画x{i|0iq且t[1..i]是t[1..q]的后缀}()
  肯定KP前缀函数的算法以下:
  #defineAXSIZE100
  Typedefunsignedharstring[AXSIZE+1];//0号单元用去存放串的少度
  vidf(sstringt,int*array)
  {
  =t[0];//为当前形式串的少度
  array=(int*)all((+1)*sizef(int));//0号元没有用
  array[1]=0;k=0;
  fr(q=2;q=;q++)
  {hile(k0t[k+1]!=t[q])k=array[k];
  if(t[k+1]==t[q])k=k+1;
  array[q]=k;
  }
  }
  闭于KP算法的前缀函数f(x)的例如睹表1。
  表1形式串abaaba
  
  I
  1
  2
  3
  4
  5
  6
  7
  8
  Ti
  a
  b
  a
  a
  b
  a
  f(i)
  1
  1
  2
  1
  当形式串中有i个字符串婚配成功,第i+1个字符没有婚配时,那么从i-f(i)个字符从头开端比拟,多么没有单不必回溯,而且一次可以背前滑动i-f(i)个字符,年夜年夜前进了形式婚配的从命。上里给出朴真婚配算法战KP婚配算法的比拟,睹表2。
  表2朴真婚配算法战KP婚配算法比拟表
  朴真算法
  KP算法
  工夫庞漂亮
  ((n-+1))
  (+n)
  背前挪动字符个数
  1
  q-f(q)
  回溯次数
  q-1
  无
  其中:n为主串少度,为形式串少度,q为婚配成功的字符个数。
  2KP算法的改革
  正在KP算法的理想利用中,创造该算法也存正在着没有够,结开上里的表一去道说KP形式婚配算法的改革。假定形式串前4个字符与主串的第i+1..i+4婚配成功,第5个字符婚配得利,此时前缀函数f(4)=1,下一次婚配将从第i+4开端,并间接将形式串中的第2个字符与主串中的第i+5个字符举止比拟,从表1中可知,婚配势必得利,此次比拟是过剩的。那分析此时的前缀函数f(x)其真没有是最劣,需要对前缀函数举止改革。本量上,所谓对KP算法的改革便是对其前缀函数的改革。
  从表1可以看出,当t[5]与主串中的s[i+5]没有婚配时,t[4+1]=t[f(4)+1]此时f(4)=1,即t[5]=t[2],所以下一次婚配可以跳过i+4-f(f(4))=i+4个字符举止婚配,建正后的前缀函数记为
  真现此前缀函数的算法是先挪用f()函数,,算法以下:
  Vidff(sstringt,int*array)
  {
  =t[0];
  f(t,array);
  fr(q=1;q=;q++)
  {
  k=f[q];
  hile(k0t[k+