下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 KMP的扩展 n n n 扩展KMP算法即利用已得到的信息来减少冗余的比较。 给定母串S,和子串T。 定义n=|S|, m=|T|,extendi=Si.n与T的最长公共 前缀长度。请在线性的时间复杂度内,求出所有的 extend1.n。例如S=aaaaaaaaaabaaa, T=aaaaaaaaaaa。 n n extend2=9。为了计算extend2,我们是不是也要进 行10次比较运算呢?不然。 因为通过计算extend1=10,我们可以得到这样的信息: S1.10=T1.10 S2.10=T2.10。 2015/8/6 6 n n n n 计算extend2的时候,实际上是S2开始匹
2、配T。因为 S2.10=T2.10,所以在匹配的开头阶段是“以T2.10 为母串,T为子串”的匹配 设辅助函数nexti表示Ti.m与T的最长公共前缀长度。 对上述例子,next2=10。也就是说:T2.11=T1.10; T2.10=T1.9;S2.10=T1.9。这就是说前9位的 比较是完全可以避免的!我们直接从S11T10开始 比较。这时候一比较就发现失配,因此extend2=9。 下面提出一般的算法。 设extend1.k已经算好,并且在以前的匹配过程中到达 的最远位置是p。最远位置严格的说就是i+extendi-1的 最大值,其中i=1,2,3,k;不妨设这个取最大值的i是a。 (下图黄色表示已经求出来了extend的位置 2015/8/6 7 2015/8/6 8 n n n n 整个算法描述结束。 上述算法是线性算法。原因如下: 容易看出,在计算的过程中,凡是访问过的点,都 不需要重新访问了。一旦比较,都是比较以前从不曾探 访过的点开始。因此总的时间复杂度是O(n+m,是线性 的。 还剩下一个问题:next这个辅助数组怎么计算?复杂 度是多少?我们发现计算next实际上以T为母串、T为 子串的一个特殊“扩展的KMP”。用next本身计算next, 具体可以参考标准KMP。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年企业年度报告编制及解析
- 2026年紫金矿业法务岗AI面试题
- 2026年网络信息安全知识与防范措施
- 2026年南昌银行合规知识考试题库及绿色债券合规
- 2026年农药化肥科学使用与农业面源污染防治知识考核
- 2026年国家战略科技力量与新质生产力题库
- 2026年医院医保患者满意度测评指标体系
- 2026年工会经费审查委员会办公室面试题库
- 2026年上海银行秋招面试半结构化常见问题及回答
- 2026年安监系统版安全生产法知识竞赛题库
- 营地搭建技术课件
- 2026年高考历史一轮复习:必修《中外历史纲要(下)》知识点考点提纲
- 2025年职业病防治考试试卷及答案
- T/CEMTA 1-2021工业炸药塑膜、纸塑袋包装技术规范
- 浙江烟草笔试试题2024
- (三诊)成都市2022级高中高三毕业班第三次诊断性检物理试卷(含答案)
- 工程合同标前协议
- 【规范药房创建资料】药品调配差错报告制度
- 外研版小学英语三到六年级知识清单(复习专用)
- 2025年云南省安全员-C证(专职安全员)考试题库
- 华为采购质量优先及三化一稳定推进
评论
0/150
提交评论