知识点串的模式匹配课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《知识点串的模式匹配课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 知识点 模式 匹配 课件
- 资源描述:
-
1、o子串定位运算又称为模式匹配或串匹配,此运算的应子串定位运算又称为模式匹配或串匹配,此运算的应用非常广泛。例如,文本编辑程序中,经常要查找某用非常广泛。例如,文本编辑程序中,经常要查找某一特定单词出现的位置。解此问题的有效算法能极大一特定单词出现的位置。解此问题的有效算法能极大地提高文本编辑程序的响应性能。地提高文本编辑程序的响应性能。串的模式匹配定义串的模式匹配定义:在主串中寻找子串在串中的位置。在主串中寻找子串在串中的位置。在模式匹配中,子串称为在模式匹配中,子串称为模式串模式串,主,主串称为串称为目标串目标串。o4.3 串的模式匹配算法串的模式匹配算法(知识点三知识点三)o4.3.1 求
2、子串位置的定位函数求子串位置的定位函数 例如:对某文本进行编辑时,可以运用如下步骤:(1)编辑;(2)查找“输入查找文本(字符串)”;(3)找出对应 的串 AbcdefghijklmnopqrstuvwT串pos=4 defghijkS串按照上述主串按照上述主串S和子串和子串T求子串位置的定位函数求子串位置的定位函数 int Index(SString S,SString T,int pos)/返回子串返回子串T在主串在主串S中第中第pos个字符之后的位置。若不存在,个字符之后的位置。若不存在,/则函数值为则函数值为0。其中,。其中,T非空,非空,1posStrLength(S)。i=pos;
3、j=1;while(i=S0&j T0)return i-T0;else return 0;/Index p79算法4.5主串主串s=ababcabcacbab,模式,模式T=abcac bi=11J=6主串主串s 模式串T=abcac 模式串T=abcac 模式串T=abcac i=6if(Si=Tj)+i;+j;/继续比较后继字符继续比较后继字符 else i=i-j+2;j=1;核心语句核心语句返回值为11-5=6因为T0=5 算法算法4.5 特点一:特点一:特点二:特点二:特点特点 三:三:算法算法4.5 因为一种有回溯的模式匹配算法一种有回溯的模式匹配算法;所以,在最坏情况下的时间复
4、杂度是所以,在最坏情况下的时间复杂度是O(n*m)。o4.3.2 又称又称 KMP模式匹配算法。模式匹配算法。KMP算法优点:算法优点:可以在可以在O(M+N)的时间复杂度内完成模式匹配操作,即的时间复杂度内完成模式匹配操作,即对对模式匹配算法的改进,取消了主串的回溯模式匹配算法的改进,取消了主串的回溯。KMP算法基本思想算法基本思想:每当匹配过程中出现字符比较每当匹配过程中出现字符比较不等时,不等时,i不回溯。不回溯。i=3,j=3时,失败时,失败即即s3 t3 ;;S1=t1 ;s2=t2;因为因为t1t2;所以所以t1s2a b a b c a b c a c b a bija b c
5、a c a b a b c a b c a c b a ba b c a c a b a b c a b c a c b a ba b c a c iji=7,j=5失败失败s4=t2;t1t2t1s4a b a b c a b c a c b a ba b c a c a b a b c a b c a c b a ba b c a c iji=7,j=5失败失败s5=t3;t1t3t1s5a b a b c a b c a c b a ba b c a c a b a b c a b c a c b a ba b c a c iji=7,j=5失败失败s5=t3;t1t3t1s5匹配成功匹
6、配成功a b a b c a b c a c b a ba b c a c 两式联立可得:两式联立可得:ijSi-(k1).si-1P1-pk-1Pj-(k-1)Pj-1当 si pj失匹时ijik 两式联立可得:两式联立可得:相等,因此,匹配仅需从从第从第1位往右位往右经过经过k-1位位从从j-1位往左位往左经过经过k-1位位目前需要解决的问题是目前需要解决的问题是(1)若)若i不需回溯,则不需回溯,则 j应该退回到何处?应该退回到何处?(2)设退回到)设退回到 nextj,则则nextj=?(3)对于给定的模式串,如何求解)对于给定的模式串,如何求解nextj是问题是问题的关键。的关键。(
7、4)nextj与与s串无关,只与串无关,只与t串有关串有关0 当当 j=1max k|1 k j 且且 “p1p2 pk 1 =“pj k+1 pj k+2 pj 1 (相同的前缀子串与后缀子串的最大长度相同的前缀子串与后缀子串的最大长度+1)1 其他其他 Next j=Next j 函数定义和计算模式如下:例例:o设有模式串设有模式串T=“abaabcac“,计算计算nextj j 1 2 3 4 5 6 7 8模式串模式串 a b a a b c a c nextj 0 1 1 2 2 3 1 2 int Index_KMP(SString S,SString T,int pos)/1po
8、sStrLength(S)i=pos;j=1;while(i=S0&j T0)return i-T0;/匹配成功 else return 0;/Index_KMP算法4.6 P82主串S=“acabaabaabcacaabc”模式串T=“abaabc”begin(j T0)?endreturn i-T0i=S0&j=T0)?yi=pos;j=1;(j=0|Si=Tj)?yi=i+1 ;j=j+1;NNj=nextjNy返返回回0算法是在已知模式串的算法是在已知模式串的nextnext函数值的基础上执行函数值的基础上执行的,那么,如何求得模式串的的,那么,如何求得模式串的nextnext函数值呢
展开阅读全文