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