版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、KMP算法,20XX。XX.XX,报告者:XXX,KMP算法,1。KMP背景简介,3 .KMP核心跳转表next,2 .简单匹配到KMP,4 .next计算得出f (j),KMP算法,1 .在KMP背景介绍、文本编辑中经常查找特定的字符或模式。例如,HTTP协议的字节流具有各种关键字节流字段,需要模式匹配算法来解释HTTP数据。结果是字符串匹配问题。KMP算法是Knuth、Morris和Pratt联合建议的模式匹配算法,它可以在联机时间内完成匹配查找,而不会影响任何模式和目标序列,是一种非常好的模式匹配算法。KMP算法,ii。目标字符串(target)t=b a b c a b c a b c
2、 a b c a b c a b c a c a b c a b c a b c模式字符串(pattern)p=a b c a b c a b c a b。如何更有生产力?朴素匹配,我们查找16号,KMP算法查找6号匹配模式字符串,朴素匹配时间复杂度o (m * n)。KMP的时间复杂度为O(n)。KMP算法,3 .KMP算法内核移动表next,实际上,模式字符串通常包含特定的信息前缀。对于模式字符串,前缀字符串也可以是模式字符串(称为“包含前缀”问题)中的非前缀子字符串。那一次要跑多远?这与跳转表next保存的值相关。例如,模式字符串a b c a b c a b例如,名为a b c a的四
3、个字符是模式字符串中的子字符串a b c (a b c a) c a b,因此,在将匹配到第八个字符的目标字符串与模式字符串匹配时,如果不匹配到第八个字符,则目标字符串中当前字符之前的四个字符也是指目标字符串之前的四个字符。与模式字符串的前四个字符相同,因此当模式字符串向后移动时,通过将模式字符串的第五个字符直接与当前字符对齐来执行比较,模式字符串可以一次向前跳跃多个字符。KMP算法,3 .KMP算法核心跳转表next,模式字符串p=a b c a b c a b,跳转表:KMP算法,3。KMP算法核心跳转表next,KMP匹配步骤3示例:时,pattern字符串中的第一个字符与target6
4、对齐。将目标字符串从6依次匹配到3,然后为target13=a,pattern8=c,如果匹配失败,则为next8=5,因此将模式字符串移动到8-next8=3个字符之后,将pattern5与target13对齐,然后从target13反向匹配,再执行操作。直到找到图案字符串或遍历整个目标字符串时,目标字符串中的输入字符才会在图案字符串中反向移动。KMP算法,4 .next的计算引入了f(j),跳台next如何计算?如何以更少的成本计算呢?图案字符串的第j个字符patternnj,f(j)介绍了概念f(j),即满足构成patter n1k-1=patter nnj-(k-1)j-1(k j)的
5、所有k的最大值F(j)=k k最小k为2,因此指定f (1)=0。如果没有前缀,则f(j)=1,图案字符串p=a b c a c a b的f(j)计算如下:KMP算法,4 .next的计算引入了f(j),f(j)语义。对于图案字符串中的第j个字符patternnj,f(j)是为pattern 1k-1=patternnj-(k-1)j-1(k j)设置的所有k的最大值。F(j)=k,例如,如果11位模式字符串为a b a b c d a b a b g,则f(11)=5!=3 .如何理解k最大值?通过上图,我们很容易看出,k越小,跳跃的速度越大,符合条件的匹配结果跳跃的可能性就越大,所以在保证
6、快速算法的同时,必须保证准确性!KMP算法,4 .next的计算必须引入f(j),以pattern8为例,说明f(j)和nextj之间的关系,匹配才会失败。F(8)=5,pattern14=pattern47,此时我们有pattern8: 1。必须集中精力处理pattern8!您可以将targetn与patternnf (8)=pattern5对齐,然后反向匹配8=f (8),因为只有与pattern5匹配时target n失败。KMP算法,4 .next的计算引入f (j),2 .pattern8=pattern5表示targetn-4n,因为targetn与pattern8不匹配!=pat
7、tern48,将targetn与pattern5对齐时,targetn-4n可能也不等于pattern15。这时我们必须集中在f(5)上。KMP算法,4 .next的计算结果为f (j),2 .pattern8=pattern5 f(5)=2表示pattern1=pattern4。这是pattern14=pattern47,因此pattern4=pattern7=pattern1。现在,我们将比较pattern8和pattern2。2.1如果pattern8!=pattern2将target2与pattern2对齐,然后比较两个项目是否相同。此时,next 8=nexttf (8)=next 5=f (5)。KMP算法,4 .next的计算引入了f (j),如果2.2 pattern8=patternf(2),还需要查看patternnf (2),直到回到模式字符串头。KMP算法,4 .next的计算引入了f(j),通过以上分析,可以总结出基于f(j)查找nextj的递归公式:patternj!=patt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 排球运动员体能恢复的AI辅助疗法
- 旅游企业项目策划与执行经理面试
- 基于大数据的科研团队决策支持系统案例
- 绿色环保技术创新典型案例分析
- 第3单元第14课《网络安全小卫士》教案【滇人版】《信息科技》五年级上册
- 食品安全供货保证与突发事件应对
- 绿色环保类实验室技术应用与发展趋势
- 高校毕业生就业形势分析与建议
- 绿色能源与可再生能源的未来展望
- 财务数据泄露风险防范应急预案演练方案
- 2023年国网内蒙古东部电力限公司招聘高频考点题库(共500题含答案解析)模拟练习试卷
- GB/T 42399.2-2023无损检测仪器相控阵超声设备的性能与检验第2部分:探头
- L1-L3题库(中兴华为诺基亚认证考试)
- 社交APP设计方案
- 最经典的能力素质模型词典与华为绩效考核表
- GB/T 29904-2013人造板工业清洁生产评价指标体系
- GB/T 21698-2008复合接地体技术条件
- GB/T 1425-2021贵金属及其合金熔化温度范围的测定热分析试验方法
- 香港保安考试试题
- 机械设计之凸轮机构
- 专题02 中国经济史-高中历史 思维导图
评论
0/150
提交评论