数据结构串的模式匹配本.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第四章

串的模式匹配算法

本讲内容1.模式串的next和nextval函数值单击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果,请言简意赅地阐述您的观点。您的内容已经简明扼要,字字珠玑,但信息却千丝万缕、错综复杂,需要用更多的文字来表述;但请您尽可能提炼思想的精髓,否则容易造成观者的阅读压力,适得其反。2.手工模拟KMP算法的执行过程采用串的定长顺序存储结构,讨论不依赖于其他串操作的模式匹配算法(子串定位操作)。4.3串的模式匹配算法朴素的模式匹配算法KMP算法

朴素的模式匹配算法Index(S,T,pos)算法思想从主串S的第pos个字符起和模式T的第一个字符比较,若相等,则继续逐个比较后续字符;否则,从主串的下一个字符起再重新和模式T的字符比较。依次类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则称匹配成功,否则称匹配失败。匹配成功时,返回和模式T中第一个字符相等的字符在主串S中的位置;匹配失败时,返回零。

朴素的模式匹配算法01i串02ipos03ij04i串jjjij串

朴素的模式匹配主串S=’ababcabcacbab’,模式串T=’abcac’,pos=1↓i=3第一趟匹配:ababcabcacbababc↑j=3↓i=2第二趟匹配:ababcabcacbaba↑j=1↓i=7第三趟匹配:ababcabcacbababcac↑j=5

单击此处添加大标题内容↓i=4第四趟匹配:ababcabcacbaba↑j=1↓i=5第五趟匹配:ababcabcacbaba↑j=1↓i=11第六趟匹配:ababcabcacbababcac(成功)↑j=6

intIndex(SStringS,SStringT,intpos){//返回子串T在主串S中第pos个字符之后的位置。若不存在,//则函数值为0。其中,T非空,1≤pos≤StrLength(S)。i=pos;j=1;while(i=S[0]j=T[0]){ if(S[i]==T[j]){++i;++j;}//继续比较后继字符 else{i=j=1;}//指针后退重新开始匹配}if(jT[0])returni-T[0];elsereturn0;}//Indexi-j+2;

算法分析算法最坏情况下的时间复杂度为O(n*m)如果主串中可能存在多个和模式串“部分匹配”的子串,因而引起主串中指针i的多次回溯。

上面的模式匹配只需三趟主串S=’ababcabcacbab’,模式串T=’abcac’↓i=3第一趟匹配:ababcabcacbababc↑j=3(next[3]=1)↓i=3第二趟匹配:ababcabcacbababcac↑j=5(next[5]=2)↓i=7第三趟匹配:ababcabcacbabbcac↑j=2怎么得来的呢?这就是KMP算法。

KMP算法特点:无需回溯;在O(n+m)的时间量级上完成串的模式匹配操作;KMP—Knuth,Morris,Pratt三人发明

KMP算法假设主串S为’s1s2s3…sn’,模式串T为’p1p2…pm’,若si与pj发生失配,则有:’si-j+1…si-1’=’p

文档评论(0)

135****1732 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档