KMP算法中next和nextval数组的计算方法
来源:互联网 发布:小站tpo mac下载 编辑:程序博客网 时间:2024/05/17 08:57
设字符串S=’aabaabaabaac’ P=’aabaac’
1. 给出S和P的next值和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的指针从i到p(f(i-1)+1)也是一种浪费,所以在pi和p(f(i-1)+1)位置相同的地方,将p(i-1)的f(i-1)值换成f(f(i-1)),从低位向高位计算替换。.
S的nextval值为”-1,0,-1,-1,0,-1,-1,0,-1,-1,7,-1”
T的nextval值为”-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相同,因为没有涉及到他们不同的失败值。
- KMP算法中next和nextval数组的计算方法
- KMP算法中nextval数组的计算方法
- KMP算法中next和nextval数组的求解
- KMP算法中nextval数组的计算方法收藏
- KMP算法中next数组、nextval数组的手工计算
- KMP算法中next数组的计算方法
- KMP算法中nextval的计算方法!
- KMP算法中next数组和nextval数组值的推导
- KMP模式匹配算法中next和nextval的求解
- KMP模式匹配算法中next和nextval的求解
- KMP模式匹配算法中next和nextval数组的快速求解
- KMP中的next和nextval的算法
- kmp中next和nextval的区别
- kmp中next和nextval的区别 .
- kmp中next和nextval的区别
- KMP算法求next数组和nextval数组
- 手动计算KMP算法的Next数组与NextVal数组
- KMP算法中next数组的手工计算方法
- 分布式的Flex开发
- Windows SDK入门浅谈 — 写给初学者
- 从SOCKADDR_STORAGE结构中取IP地址和端口
- WTL文档
- 自动匹配输入框
- KMP算法中next和nextval数组的计算方法
- 分析Windows和Linux动态库
- 隐藏显示在任务栏中的对话框程序
- 转php+mysql编码的一篇文章
- Ubuntu 7.04下Virtualbox安装及网络桥接
- 开始写技术文章
- Bowling
- ShellExecute的使用方法
- spring frame 事务回滚的测试