用户操作
[即时聊天] [发私信] [加为好友]
ChenSuminID:Suminchen
113次访问,排名2万外,好友0人,关注者0人。
简简单单
Suminchen的文章
原创 1 篇
翻译 0 篇
转载 0 篇
评论 0 篇
最近评论
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 KMP算法中next和nextval数组的计算方法收藏

       | 

      设字符串S=aabaabaabaac    P=aabaac

      1.      给出SPnext值和nextvai;

      2.      S作主串,P为模式串,试给出利用BF算法和KMP算法的匹配过程.

      答:
      1.给出SPnext值和nextvai;

      失效函数采用的是清华殷人昆的数据结构上的函数。(有的人和他有点区别,本质一样)

      f(j)=k,0<=k<j,且使得p0p1p2…pk = p(j-k)p(j-k+1)…pj;f(j)=-1,其他情况。

      S=”aabaabaabaac”next值为”-1,0,-1,0,1,2,3,4,5,6,7,-1”

      T=”aabaac”next值为”-1,0,-1,0,1,-1”

      Nextval值是对next值的一种修正,因为在pi的字符和p(f(i-1)+1)的字符相同,导致从在模式T的指针从ip(f(i-1)+1)也是一种浪费,所以在pip(f(i-1)+1)位置相同的地方,将p(i-1)f(i-1)值换成f(f(i-1)),从低位向高位计算替换。.

      Snextval值为”-1,0,-1,-1,0,-1,-1,0,-1,-1,7,-1”

      Tnextval值为”-1,0,-1,-1,1,-1”

      2.      S作主串,P为模式串,试给出利用BF算法和KMP算法的匹配过程.

      BF

       

      a

      a

      b

      a

      a

      b

      a

      a

      b

      a

      a

      c

      1

      a

      a

      b

      a

      a

      c

       

       

       

       

       

       

      2

       

      a

      a

      b

      a

      a

      c

       

       

       

       

       

      3

       

       

      a

      a

      b

      a

      a

      c

       

       

       

       

      4

       

       

       

      a

      a

      b

      a

      a

      c

       

       

       

      5

       

       

       

       

      a

      a

      b

      a

      a

      c

       

       

      6

       

       

       

       

       

      a

      a

      b

      a

      a

      c

       

      7

       

       

       

       

       

       

      a

      a

      b

      a

      a

      c

      KMP(next)

       

      a

      a

      b

      a

      a

      b

      a

      a

      b

      a

      a

      c

      1

      a

      a

      b

      a

      a

      c

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

      2

       

       

       

      a

      a

      b

      a

      a

      c

       

       

       

       

       

       

       

       

       

       

       

       

      3

       

       

       

       

       

       

      a

      a

      b

      a

      a

      c

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

      此题KMP(nextval)的过程与next相同,因为没有涉及到他们不同的失败值。

       

      发表于 @ 2008年01月16日 21:45:00|评论(loading...)|编辑

       | 

      评论:没有评论。

      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © Suminchen