1 / 12
文档名称:

串匹配bm算法、kmp算法、bf算法.doc

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

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

分享

预览

串匹配bm算法、kmp算法、bf算法.doc

上传人:2786321826 2021/12/30 文件大小:91 KB

下载得到文件列表

串匹配bm算法、kmp算法、bf算法.doc

相关文档

文档介绍

文档介绍:. .
. ! .
实验报告一 串匹配问题
班级:_计算机师 _学 号: 2姓 名:_
一、实验题目:给定一个文本, 在该文本中查找并定位任意给定字符串。
实验目的:
(1) 深刻理解并掌握蛮力法的设计思想;
(2) 提高应用蛮力法设计算法的技能;
(3) 理解这样一个观点: 用蛮力法设计的算法, 一般来说, 经过适度的努力后, 都可以对算法的第一个版本进展一定程度的改进, 改进其时间性能。
三、实验要求:
(1) 实现 BF算法;
(2) 实现 BF算法的改进算法: KMP 算法和 BM 算法;
(3) 对上述3个算法进展时间复杂性分析, 并设计实验程序验证分析结果。
算法描述〔对算法主要局部进展伪代码描述或画出流程图〕
BF算法:
根本思想:从主串S的第一个字符开场和模式T的第一个字符进展比拟,假设相等,那么继续比拟两者的后续字符;假设不相等,那么从主串S的第二个字符开场和模式T的第一个字符进展比拟,重复上述过程,假设T中的字符全部比拟完毕,那么说明本趟匹配成功;假设最后一轮匹配的起始位置是n-m,那么主串S中剩下的字符缺乏够匹配整个模式T,匹配失败。这个算法称为朴素的模式匹配算法,简称BF算法。
KMP算法:
根本思想:
1. 在串S和串T中分别设比拟的起始下标i和j;
2. 循环直到S中所剩字符长度小于T的长度或T中所有字符均比拟完毕
如果S[i]=T[j],那么继续比拟S和T的下一个字符;否那么
. .
. ! .
将j向右滑动到next[j]位置,即j=next[j];
如果j=0,那么将i和j分别加1,准备下一趟比拟;
,那么返回匹配的起始下标;否那么返回0;
BM算法:
根本思想:BM算法与KMP算法的主要区别是匹配操作的方向不同。虽然BM算法仅把匹配操作的字符比突顺序改为从右向左,但匹配发生失败时,模式T右移的计算方法却发生了较大的变化。
. .
. ! .
  开场
主串S长度→m
模式T长度→n
0→i
i<m
0→b
i→a
S[a]=T[b]且b≠n
a加1
b加1
b=n
Y
N
Y
Y
Y
N
N
N
BF算法
完毕
开场
主串S长度→m
模式T长度→n
0→a
0→b
a≦M-NM-Nm-n
S[a]=T[b]且b≠n
a加1
b加1
b=n
Y
Y
Y
N
N
N
KMP算法
完毕
next[b]→b
a-b→a
b=-1
b加1
 
. .
. ! .
开场
i≦主串S长度-1
模式T长度-1→j
j≧0且S[i]=T[j]
i减1
j减1
j<0
Y
Y
Y
N
N