2022年模式匹配KMP算法研究报告.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年模式匹配KMP算法研究报告.docx》由会员分享,可在线阅读,更多相关《2022年模式匹配KMP算法研究报告.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源模式匹配的 KMP算法争论同学姓名:黄飞指导老师:罗心摘 要在运算机科学领域,串的模式匹配 algorithmis always the focus of the study.In thespellcheck,languagetranslation,datacompression,searchengine,the network intrusion detection system, a computer virus signature matching DNA欢迎下载精品学习资源sequences and the application in the match,matched
2、to string matching.String matching is in search of a string of pattern or all appear.In this paper, the string is S = s1s2s3. Sn, string pattern for T= t1t2. tm.String matching way can be divided from the accurate matching, fuzzy matching, parallel matching etc., the famous matching algorithms are K
3、MP algorithm, BF algorithm, the algorithm and some BM algorithm.This paperinpreciseKMP algorithmformatchingaspectsarediscussedandsome improvementonitandusingtheimprovedKMP torealizethemultiple pattern matching.Key words : pattern matching, The string; Pattern strings;KMP algorithm1 引言KMP算 法是是对 一般模 式
4、匹配算法 的改进, 由 D.E.Knuth 与 V.R.Pratt 和J.H.Morris 同时发觉的因此人们称它为克努特 - 莫里斯 - 莫拉特操作 的时间数量级上完成串的模式匹配操作;其改进过程在于: 每当一趟匹配过程显现字符比较不相等时,不需回溯i指针,而是利用已经得到的部分匹配的结果 将模式串向右滑动一段尽可能远的距离后,连续进行比较;滑动的这一段距离我们将会用到函数 next,KMP算法的最大特点是指示主串的指针不须回溯,整个匹配过程中,对主串仅需从头到欢迎下载精品学习资源尾扫描一遍,这对处理从外设输入的巨大文件很有效,可以边度入边匹配,而无需回头重读;2、问题分析2.1 问题的分析
5、和任务的定义用 C/C+编写一个程序实现模式匹配的KMP算法;要求在一个字符串中搜寻某个子串,如搜寻到就返回子串的位置;如未搜寻到,就返回0; 第一要输入个主串和模式串,先依据 next 函数求模式串的next值,利用 KMP算法进行匹配,再用输出函数输出结果!2.2 设计过程本次课程设计利用模式匹配KMP算法实现串的相关操作:分别从键盘上任意输入 三组字符串作为主串,在任意数取三组字符串作为模式串,利用模式匹配KMP算法依次使三组模式串与三组主串匹配,在使用模式匹配KMP算法时会调用到Getnext 函数;2.3 规律设计对该 kmp 算法,定义的抽象数据类型如下: ADT String数据
6、对象: D=ai|aiCharacterSet,i=1,2,3,n,n 0 数据关系: R1=|ai-1,ai D,i=2, ,n基本操作: StrAssign&T,chars初始条件: chars 是字符串常量;操作结果:生成一个其值等于 chars 的串 T;StrCopy欢迎下载精品学习资源初始条件:串 S存在;操作结果:返回 S元素的个数,成为串的长度;IndexS,T,pos初始条件:串 S和 T 存在, T 是非空串, 1posStrLengthS.操作结果:如主串 S 中存在和串 T 相同的子串,就返回他在主串S 中的第 pos 个字符之后第一次显现的位置;否就函数值为0;Des
7、toryString&S 初始条件:串 S存在;操作结果:串 S被销毁;ADT String该算法是对进行操作,对串的储备结构用定长次序储备表示:类似于现性表的次序储备结构,用一组地址连续的储备单元储备串值得字符序列;在串的定长次序储备结构中,依据与定义大小,为每个定义的串安排一个固定长度的储备区,就可用定长数组如下描述;#define MAXSTRLEN 255typedef unsigned char SStringMAXSTRLEN+1该算法分为五三个模块:第一模块StrLength )函数函数 利用该函数求出模式串的 next函数值);第四模块 Index_KM)函数函数利用该函数输出
8、匹配结 果);个模块之间的调用关系如下图所示:图4.1 是对整个函数的流程图;图4.2是对 KMP算法的流程图;图 4.3 是求 next 的函数值的流程图;欢迎下载精品学习资源开头欢迎下载精品学习资源用intput输入串next函 数值欢迎下载精品学习资源欢迎下载精品学习资源StrLength 输出长m度,nget_nextNIndex_KM(P)i=pos-1,j=-1 m=StrLengths; n=StrLengtht;Nj=-1 | si=tjY输出匹配结果调用output 终止欢迎下载精品学习资源i=ltYi-lt+10欢迎下载精品学习资源图 2.1 模块调用流程图3、解决方案3.
9、1 为主串和模式串赋值分别定义三组字符串作为主串str1,str2,str3,利用 cin 函数依次为为三组字符串欢迎下载精品学习资源赋值,从键盘上任意输入字符分别赋给str1 str2 str3,;以同样的方法模模式串p1,p2,p3 赋值;3.2 求各串的长度StrLength 式成立,就当 tktj时应将模式向右滑动,使得第nextk个字符和“主串” 中的第 j 个字符相比较;如 nextk=k,且 t k tj ,就说明在主串中第 j+1 个字符之前存在一个最大长度为k的子串,使得 t1 t2 t k =tj-k+1 tj- k +2 tj 此: nextj+1=nextk+1同理如
10、t k tj ,就将模式连续向右滑动至使第nextk 个字符和 tj对齐, 依此类推,直至 tj和模式中的某个字符匹配胜利或者不存在任何k 1 k k 满意 , 此 时如 t1 tj+1, 就 有: nextj+1=1否就如 t1=tj+1, 就有:nextj+1=0综上所述,求 next 函数值过程的算法如下:void get _nextchar t,int next /* 求模式 t 的 next 值并寸入 next 数组中 */ int i=1,j=0;next0=0 ;欢迎下载精品学习资源while i while j=0|ti-1 = =tj-1 +i;+j ;nexti-1=j;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 模式 匹配 KMP 算法 研究 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内