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