模式匹配与KMP算法-Read.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式匹配与KMP算法-Read.ppt

模式匹配与KMP算法 Zn /znzhou/ OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 哪个是今天要讨论的模式匹配 the The quick brown fox jumps over the lazy dog jay The quick brown fox jumps over the lazy dog 模式匹配 Finding all occurrences of a pattern in a text eg. abc in acbcdabc OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 The naive string-matching algorithm ababcabcacbab abcac How does it work? a b a b c a b c a c b a b a b a b c a b c a c b a b a b a b c a b c a c b a b a b c a c a b c a c a b c a c 第一次匹配 第二次匹配 第三次匹配 a b a b c a b c a c b a b a b a b c a b c a c b a b a b a b c a b c a c b a b a b c a c a b c a c a b c a c 第六次匹配 第五次匹配 第四次匹配 int Normal(int pos) { int i,j; i=pos;j=0; while(s[i]!=0jlength) { if(s[i]==t[j]){i++;j++;} else{i=i-j+1;j=0;} } if(j==length) return i-length; else return -1; } 复杂度分析 一般情况 效率可以近似认为O(m+n) 极端特殊情况 O(mn) OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 What’s KMP? Knuth-Morris-Pratt Professor Emeritus of The Art of Computer Programming at Stanford University, welcomes you to his home page. Donald E. Knuth,1938年出生于Wisconsin。1960年,当他毕业于Case Institute of Technology数学系时,因为成绩过于出色,被校方打破历史惯例,同时授予学士和硕士学位。他随即进入大名鼎鼎的加州理工学院数学系,仅用三年时间便取得博士学位,此时年仅25岁。 毕业后留校任助理教授,28岁时升为副教授。30岁时,加盟斯坦福大学计算机系,任正教授。从31岁那年起,他开始出版他的历史性经典巨著:The Art of Computer Programming。他计划共写7卷,然而仅仅出版三卷之后,已经震惊世界,使他获得计算机科学界的最高荣誉Turing Award!此时,他年仅38岁!后来,此书与牛顿的“自然哲学的数学原理”等一起,被评为“世界历史上最伟大的十种科学著作”之一。 The KMP string-matching algorithm abbcaccabbaabcababcdbac abcd How does it work? a b a b c a b c a c b a b a b a b c a b c a c b a b a b a b c a b c a c b a b a b c a c a b c a c a b c a c 第三次匹配 第二次匹配 第一次匹配 Next[j] j 0 1 2 3 4 模式串 a b c a c Next[j] -1 0 0 0 1 a b a b c a b c a c b a b a b c a c a b c a c a b c a c int KMP(char*t,int pos) { int i,j; i=pos; j=0; while(s[i]!=0jlength) { if(j==-1||t[j]==s[i]){i++;j++;} else{j=next[j];} } if(j==length) return i-j; else return -1; } 复杂度分析 O(m+n) How to gain next[j]? 以眼杀人--观察法 a b a a b c a c -1 1 1 2 0

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档