数据结构串的模式匹配本.ppt
《数据结构串的模式匹配本.ppt》由会员分享,可在线阅读,更多相关《数据结构串的模式匹配本.ppt(19页珍藏版)》请在三一办公上搜索。
1、第四章 串的模式匹配算法,本讲内容,4.3 串的模式匹配算法,1.朴素的模式匹配算法,2.KMP算法,1.模式串的next和nextval函数值 2.手工模拟KMP算法的执行过程,采用串的定长顺序存储结构,讨论不依赖于其他串操作的模式匹配算法(子串定位操作)。,朴素的模式匹配算法,Index(S,T,pos)算法思想,从主串S的第pos个字符起和模式T的第一个字符比较,若相等,则继续逐个比较后续字符;否则,从主串的下一个字符起再重新和模式T的字符比较。依次类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则称匹配成功,否则称匹配失败。匹配成功时,返回和模式T中第一个字符相等的
2、字符在主串S中的位置;匹配失败时,返回零。,朴素的模式匹配算法,S 串,pos,i,T 串,j,i,j,i,j,i,j,i,j,T 串,朴素的模式匹配,主串 S=ababcabcacbab,模式串T=abcac,pos=1,i=3第一趟匹配:a b a b c a b c a c b a b a b c j=3 i=2第二趟匹配:a b a b c a b c a c b a b a j=1 i=7 第三趟匹配:a b a b c a b c a c b a b a b c a c j=5,第四趟匹配:a b a b c a b c a c b a b a j=1 i=5 第五趟匹配:a b
3、a b c a b c a c b a b a j=1 i=11 第六趟匹配:a b a b c a b c a c b a b a b c a c(成功)j=6,i=4,int Index(SString S,SString T,int pos)/返回子串T在主串S中第pos个字符之后的位置。若不存在,/则函数值为0。其中,T非空,1posStrLength(S)。i=pos;j=1;while(i T0)return i-T0;else return 0;/Index,i-j+2;,算法分析,2.算法最坏情况下的时间复杂度为O(n*m),1.如果主串中可能存在多个和模式串“部分匹配”的子串
4、,因而引起主串中指针i的多次回溯。,上面的模式匹配只需三趟,主串S=ababcabcacbab,模式串T=abcac,i=3第一趟匹配:a b a b c a b c a c b a b a b c j=3(next3=1)i=3第二趟匹配:a b a b c a b c a c b a b a b c a c j=5(next5=2)i=7 第三趟匹配:a b a b c a b c a c b a b(a)b c a c j=2 怎么得来的呢?这就是KMP算法。,KMP算法,KMPKnuth,Morris,Pratt三人发明,特点:无需回溯;在O(nm)的时间量级上完成串的模式匹配操作;,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 模式 匹配
链接地址:https://www.31ppt.com/p-3787988.html