KMP算法中next和nextval数组的计算方法

本文介绍了KMP算法中next和nextval数组的计算方法,以字符串S='aabaabaabaac'和P='aabaac'为例,展示了S和P的next和nextval值。在匹配过程中,使用BF算法和KMP算法,并指出KMP(nextval)的匹配过程与next相同,因为没有涉及不同失败值的情况。
摘要由CSDN通过智能技术生成

设字符串S=aabaabaabaac    P=aabaac

1.      给出SPnext值和nextvai;

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

答:
1. 给出 S P next 值和 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值