版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6-5模式匹配v第六章查找技术模式匹配模式匹配的应用场景1:模式匹配模式匹配的应用场景2:模式匹配问题有什么特点?(2)改进取得的积累效益:模式匹配操作被频繁调用,执行频率高。(1)算法的一次执行时间:问题规模通常很大,常常在大量信息中进行匹配;模式匹配(字符串匹配):在主串S中寻找子串T
的过程,T也称为模式S="s1s2…sn"T="t1t2…tm"如果匹配成功,返回T
在S
中的位置;否则返回0模式匹配BF算法KMP算法6-5-1BF算法v第六章查找技术基本思想1.在串S和串T中设比较的起始下标i和j;2.循环直到S或T的所有字符均比较完2.1如果S[i]等于T[j],继续比较S和T的下一个字符;2.2否则,将i和j回溯,准备下一趟比较;3.如果T中所有字符均比较完,则返回匹配的起始比较下标;否则返回0;ji…ij
主串Ss1s2si
sn模式T
t1t2tjij例1主串S="ababcabcacbab",模式T="abcac"ababcabcacbabi=2,j=2失败;i回溯到1,j回溯到0ijijij第1趟abcac运行实例i=1,j=0失败;i回溯到2,j回溯到0ababcabcacbab第2趟abcaciji=6,j=4失败i回溯到3,j回溯到0ababcabcacbabij第3趟abcacababcabcacbab第4趟abcaciji=3,j=0失败i回溯到4,j回溯到0例1主串S="ababcabcacbab",模式T="abcac"运行实例例1主串S="ababcabcacbab",模式T="abcac"运行实例ababcabcacbabij第5趟abcaci=4,j=0失败i回溯到5,j回溯到0ijababcabcacbab第6趟abcaci=10,j=5,T中全部字符都比较完毕,匹配成功算法实现intBF(charS[],charT[]){inti=0,j=0;
while(S[i]!='\0'&&T[j]!='\0'){if(S[i]==T[j]){i++;j++;}else{i=i–j+1;j=0;}}
if(T[j]=='\0')return(i–j+1);
elsereturn0;}intBF(charS[],charT[]){inti=0,j=0,start=0;
while(S[i]!='\0’&&T[j]!='\0'){if(S[i]==T[j]){i++;j++;}else{
start++;i=start;j=0;}}
if(T[j]=='\0')returnstart+1;
elsereturn0;}性能分析S="s1s2…sn"T="t1t2…tm"在匹配成功的情况下,考虑两种极端情况:设匹配成功发生在si处,则:例如:S="aaaaaaaaaabcdccccc"T="bcd"最好情况:不成功的匹配都发生在串T
的第1个字符设匹配成功发生在si处,则:例如:S="aaaaaaaaaaaabccccc"T="aaab"最坏情况:不成功的匹配都发生在串T
的最后一个字符性能分析S="s1s2…sn"T="t1t2…tm"在匹配成功的情况下,考虑两种极端情况:分析BF算法为什么BF算法的性能较低?ji…ij
主串Ss1s2si
sn模式T
t1t2tj在每趟匹配不成功时存在大量回溯,没有利用已经部分匹配的结果如何在匹配不成功时主串不回溯?主串不回溯,模式就需要向右滑动一段距离i模式T
t1t2tj如何确定模式的滑动距离?分析BF算法如何在匹配不成功时主串不回溯?主串不回溯,模式就需要向右滑动一段距离
主串Ss1s2si
snababcabcacbabij第1趟a
bcac
i=2,j=2失败;
∵s[1]=t[1];t[0]≠t[1]∴t[0]≠s[1]ababcabcacbab第2趟abcac
分析BF算法ababcabcacbabij第1趟abcac
i=2,j=2失败;
∵s[1]=t[1];t[0]≠t[1]∴t[0]≠s[1]ababcabcacbabi第3趟jabcac
分析BF算法ababcabcacbab第3趟a
bcac
iji=6,j=4失败∵s[3]=t[1];t[0]≠t[1]∴t[0]≠s[3]ababcabcacbab第4趟abcac
分析BF算法ababcabcacbab第3趟abcac
iji=6,j=4失败∵s[4]=t[2];t[0]≠t[2]∴t[0]≠s[4]ababcabcacbab第5趟abcac
分析BF算法ababcabcacbab第3趟abcac
iji=6,j=4失败∵s[4]=t[2];t[0]≠t[2]∴t[0]≠s[4]ababcabcacbab第6趟abcac
iji=6,j=4失败∵s[5]=t[3];t[0]=t[3]∴t[0]=s[5]分析BF算法KMP算法结论:i可以不回溯,模式向右滑动到新的比较起点k如何由当前部分匹配结果确定模式向右滑动的新比较起点k?ababcab…abcac
ijabcac
ababcab…ik下一趟(1)T[0]~T[k-1]=S[i-k]~S[i-1]ababcab…abcac
ijabcac
ababcab…ik下一趟(1)T[0]~T[k-1]=S[i-k]~S[i-1](2)T[j-k]~T[j-1]=S[i-k]~S[i-1]T[0]~T[k-1]=T[j-k]~T[j-1]KMP算法结论:i可以不回溯,模式向右滑动到新的比较起点k如何由当前部分匹配结果确定模式向右滑动的新比较起点k?长度为k的前缀(1)k与j具有函数关系,由当前失配位置j,可以计算出滑动位置kT[0]~T[k-1]=T[j-k]~T[j-1]说明了什么?T[0]~T[k-1]=T[j-k]~T[j-1]的物理意义是什么?长度为k的后缀T[0]~T[j]中前缀和后缀相等的真子串唯一吗?(2)滑动位置k仅与模式串T有关ababac
ababac
ababac
k=1k=3KMP算法max{k|1≤k<j
且T[0]…T[k-1]=T[j-k]…T[j-1]}模式应该向右滑多远才能保证算法的正确性?abababacijababacabababacijababacabababacababacijk=1:k=3:KMP算法失效数组-1j=0max{k|1≤k<j
且T[0]…T[k-1]=T[j-k]
…T[j-1]}集合非空0其它情况next[j]=设next[j]表示在匹配过程中与T[j]比较不相等时,下标j的回溯位置下标:01234模式串T:ababck=next[j]:
j=0时,k=-1j=1时,k=0-10j=2时,T[0]≠T[1],因此,k=00j=3时,T[0]=T[2],T[0]T[1]≠T[1]T[2],因此,k=11j=4时,T[0]≠T[3],T[0]T[1]=T[2]T[3],T[0]T[1]T[2]≠T[1]T[2]T[3],因此,k=22ababaababcb
i=4,j=4失败;
j=next[4]=2ij第1趟ababcnext[j]={-1,0,0,1,2}ababaababcb
ij第2趟ababc运行实例ababaabab
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东广州开发区财政投资建设项目管理中心招聘政府初级雇员3人考试备考题库及答案解析
- 2026年上海市疾病预防控制中心(上海市预防医学科学院)高级岗位公开招聘考试备考题库及答案解析
- 2026广东南粤集团人力资源有限公司招聘运营专员(项目制人员)1人笔试模拟试题及答案解析
- 2026中国华电科工集团有限公司、财务共享中心校园招聘(第二批)笔试模拟试题及答案解析
- 2025年湖北省荆门市高职单招职业适应性测试考试试题及答案解析
- 2026中国华电集团海南有限公司校园招聘3人(第二批)考试备考题库及答案解析
- 2026广东清远市连山县永和镇招聘各村委会计生指导员5人笔试备考题库及答案解析
- 2026福建招聘泉州中泉国际经济技术合作(集团)有限公司劳务外包工作人员3人考试备考题库及答案解析
- 2026年2月西安图书馆就业见习人员招聘(7人)笔试备考题库及答案解析
- 2025年江海职业技术学院辅导员招聘笔试试题及答案解析
- 2026马年春节开学第一课课件:用英语讲述我的中国年
- 有机薄膜太阳能电池的研究进展-大学毕业论文
- 医药代表MR业务计划模板课件
- 中考英语阅读理解强化100篇含答案
- 园艺植物种子生产-主要蔬菜植物种子生产(园艺植物种子生产)
- 文献检索与毕业论文写作PPT完整全套教学课件
- 香味的分类(比洛分类法)
- 母线槽安装施工方案
- GB/T 9581-2011炭黑原料油乙烯焦油
- 中华优秀传统文化
- 大湾区综合性国家科学中心实施方案
评论
0/150
提交评论