最详细最容易理解的BM算法简介资料讲解.ppt

最详细最容易理解的BM算法简介资料讲解.ppt

ID:61288743

大小:765.00 KB

页数:35页

时间:2021-01-24

最详细最容易理解的BM算法简介资料讲解.ppt_第1页
最详细最容易理解的BM算法简介资料讲解.ppt_第2页
最详细最容易理解的BM算法简介资料讲解.ppt_第3页
最详细最容易理解的BM算法简介资料讲解.ppt_第4页
最详细最容易理解的BM算法简介资料讲解.ppt_第5页
资源描述:

《最详细最容易理解的BM算法简介资料讲解.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、最详细最容易理解的BM算法简介朴素的思想-坏字符算法S=“FINDINAHAYSTACKNEEDLEINA”T=“NEEDLE”FINDINAHAYSTACKNEEDLEINANEEDLE朴素的思想-坏字符算法S=“FINDINAHAYSTACKNEEDLEINA”T=“NEEDLE”FINDINAHAYSTACKNEEDLEINANEEDLENEEDLE朴素的思想-坏字符算法S=“FINDINAHAYSTACKNEEDLEINA”T=“NEEDLE”FINDINAHAYSTACKNEEDLEINANEEDLENEEDLEN

2、EEDLE朴素的思想-坏字符算法S=“FINDINAHAYSTACKNEEDLEINA”T=“NEEDLE”FINDINAHAYSTACKNEEDLEINANEEDLENEEDLENEEDLENEEDLE朴素的思想-好后缀算法CASE1S=*******BABCDE********T=ABCDEFGBCDE朴素的思想-好后缀算法CASE1S=*******BABCDE********T=ABCDEFGBCDET=ABCDEFGBCDE朴素的思想-好后缀算法CASE2S=*******BABCDE********T=CDECD

3、EGBCDE朴素的思想-好后缀算法CASE2S=*******BABCDE********T=CDECDEGBCDET=CDECDEGBCDE坏字符算法FINDINAHAYSTACKNEEDLEINANEEDLENEEDLENEEDLENEEDLE上面的N,S,N是坏字符,显然在该算法中存在两种情况:1.坏字符不在模式串中2.坏字符在模式串中Case1坏字符不在模式串中*******TLE********NEEDLENEEDLEShift=strlen(模式串)-position(坏)Shift=6-2Case2a坏字符在模

4、式串中*******NLE********NEEDLENEEDLEShift=最右的坏字符位置–position(坏)Shift=5-2Case2b坏字符在模式串中*******ELE********NEEDLECase2b坏字符在模式串中*******ELE********NEEDLENEEDLE会有倒退NEEDLE不能预处理上面两种设计思想都可行,各有优缺点预处理-坏字符Shift=bmBc[S[i]]-(m-1-i)voidpreBmBc(char*S,intm,intbmBc[]){inti;for(i=0;i

5、IZE;++i)//ASIZE=256bmBc[i]=m;for(i=0;i<=m-1;++i)bmBc[S[i]]=m-i-1;}m-i-1预处理-坏字符voidpreBmBc(char*S,intm,intbmBc[]){inti;for(i=0;i

6、ti;for(i=0;i

7、算法中有的是使用了不后退的思路。好后缀算法当好后缀在模式串中重复出现时S=*******BABCDE********T=ABCDEFGBCDE好后缀算法当好后缀在模式串中重复出现时S=*******BABCDE********T=ABCDEFGBCDET=ABCDEFGBCDE好后缀算法模式串中没有子串匹配好后缀S=*******BABCDE********T=CDECDEGBCDE好后缀算法模式串中没有子串匹配好后缀S=*******BABCDE********T=CDECDEGBCDET=CDECDEGBCDE此时需要寻

8、找模式串的一个最长前缀CDE,并让该前缀等于好后缀BCDE的后缀,寻找到该前缀后,让该前缀和好后缀对齐即可。好后缀算法模式串中没有子串匹配上好后缀,并且在模式串中找不到最长前缀,让该前缀等于好后缀的后缀时S=*******BABCDE********T=AACDEFGBCDE好后缀算法模式

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。