




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、最详细最容易理解的bm算法简介boyer-moore算法简介最详细最容易理解的bm算法简介与之前算法的比较 暴力算法 与 kmp算法 都是基于前缀比较的算法 bm算法则是基于后缀比较,而且bm算法其实上包含两个并行的算法: 坏字符算法 好后缀算法相同点:这些算法都是对文本串从左往右分析的最详细最容易理解的bm算法简介 朴素的思想-坏字符算法 s =“findinahaystackneedleina” t =“needle” findinahaystackneedleina needle最详细最容易理解的bm算法简介 朴素的思想-坏字符算法 s =“findinahaystackneedlein
2、a” t =“needle” findinahaystackneedleina needle needle最详细最容易理解的bm算法简介 朴素的思想-坏字符算法 s =“findinahaystackneedleina” t =“needle” findinahaystackneedleina needle needle needle最详细最容易理解的bm算法简介 朴素的思想-坏字符算法 s =“findinahaystackneedleina” t =“needle” findinahaystackneedleina needle needle needle needle最详细最容易理解的b
3、m算法简介 朴素的思想-好后缀算法 s= *babcde* t= abcdefgbcde最详细最容易理解的bm算法简介 朴素的思想-好后缀算法 s= *babcde* t= abcdefgbcde t= abcdefgbcde最详细最容易理解的bm算法简介 朴素的思想-好后缀算法 s= *babcde* t= cdecdegbcde最详细最容易理解的bm算法简介 朴素的思想-好后缀算法 s= *babcde* t= cdecdegbcde t= cdecdegbcde最详细最容易理解的bm算法简介坏字符算法 findinahaystackneedleina needle needle need
4、le needle 上面的n,s,n是坏字符,显然在该算法中存在两种情况:1.坏字符不在模式串中 2.坏字符在模式串中最详细最容易理解的bm算法简介case 1 *tle* needle needle shift = strlen(模式串)-position(坏) shift = 6 - 2最详细最容易理解的bm算法简介case 2a *nle* needle needle shift =最右的坏字符位置position(坏) shift = 5 - 2最详细最容易理解的bm算法简介case 2b *ele* needle最详细最容易理解的bm算法简介case 2b *ele* needle
5、needle 会有倒退 needle 不能预处理 上面两种设计思想都可行,各有优缺点最详细最容易理解的bm算法简介预处理-坏字符 shift = bmbcsi-(m-1-i) void prebmbc(char *s, int m, int bmbc) int i; for (i = 0; i asize; +i) /asize=256 bmbci = m; for (i = 0; i =m - 1; +i) bmbcsi = m - i - 1;m-i-1最详细最容易理解的bm算法简介预处理-坏字符 void prebmbc(char *s, int m, int bmbc) int i;
6、for (i = 0; i asize; +i) /asize=256 bmbci = m; for (i = 0; i =m - 1; +i) bmbcsi = m - i - 1; 这是会有倒退的算法设计,优点在于能够对模式串预处理最详细最容易理解的bm算法简介预处理-坏字符 void prebmbc(char *s, int m, int bmbc) int i; for (i = 0; i asize; +i) /asize=256 bmbci = m; for (i = 0; i =0;-i) q=i; while(q=0&pq=pm-1-(i-q) -q; suffixi=
7、i-q;最详细最容易理解的bm算法简介预处理-好后缀void prebmgs(char *x, int m, int bmgs) int i, j, suffxsize; suffixes(x, m, suff); /对模式串进行预处理 for (i = 0; i = 0; -i) if (suffi = i + 1) /如果找到一个最大前缀 for (; j m - 1 - i; +j) if (bmgsj = m) bmgsj = m - 1 - i; for (i = 0; i = m - 2; +i) bmgsm - 1 - suffi = m - 1 - i;最详细最容易理解的bm算
8、法简介预处理-好后缀void prebmgs(char *x, int m, int bmgs) int i, j, suffxsize; suffixes(x, m, suff); /对模式串进行预处理 for (i = 0; i = 0; -i) if (suffi = i + 1) /如果找到一个最大前缀 for (; j m - 1 - i; +j) if (bmgsj = m) bmgsj = m - 1 - i; for (i = 0; i = m - 2; +i) bmgsm - 1 - suffi = m - 1 - i;模式串中没有子串匹配上好后缀,但找模式串中没有子串匹配上
9、好后缀,但找不到一个最大前缀的情况不到一个最大前缀的情况最详细最容易理解的bm算法简介预处理-好后缀void prebmgs(char *x, int m, int bmgs) int i, j, suffxsize; suffixes(x, m, suff); /对模式串进行预处理 for (i = 0; i = 0; -i) if (suffi = i + 1) /如果找到一个最大前缀 for (; j m - 1 - i; +j) if (bmgsj = m) bmgsj = m - 1 - i; for (i = 0; i = m - 2; +i) bmgsm - 1 - suffi
10、= m - 1 - i;模式串中没有子串匹配上好后缀,但找模式串中没有子串匹配上好后缀,但找不到一个最大前缀的情况不到一个最大前缀的情况模式串中没有子串匹配上好后缀,但找模式串中没有子串匹配上好后缀,但找得到一个最大前缀的情况得到一个最大前缀的情况最详细最容易理解的bm算法简介预处理-好后缀void prebmgs(char *x, int m, int bmgs) int i, j, suffxsize; suffixes(x, m, suff); /对模式串进行预处理 for (i = 0; i = 0; -i) if (suffi = i + 1) /如果找到一个最大前缀 for (;
11、j m - 1 - i; +j) if (bmgsj = m) bmgsj = m - 1 - i; for (i = 0; i = m - 2; +i) bmgsm - 1 - suffi = m - 1 - i;模式串中没有子串匹配上好后缀,但找模式串中没有子串匹配上好后缀,但找不到一个最大前缀的情况不到一个最大前缀的情况模式串中没有子串匹配上好后缀,但找模式串中没有子串匹配上好后缀,但找得到一个最大前缀的情况得到一个最大前缀的情况模式串中有子串匹配上好后缀模式串中有子串匹配上好后缀最详细最容易理解的bm算法简介预处理-好后缀void prebmgs(char *x, int m, int
12、 bmgs) int i, j, suffxsize; suffixes(x, m, suff); /对模式串进行预处理 for (i = 0; i = 0; -i) if (suffi = i + 1) /如果找到一个最大前缀 for (; j m - 1 - i; +j) if (bmgsj = m) bmgsj = m - 1 - i; for (i = 0; i = m - 2; +i) bmgsm - 1 - suffi = m - 1 - i;最详细最容易理解的bm算法简介算法主体int bm_search(char* s ,char* t)j = 0;while (j = 0 & ti =si + j; -i) if (i 0) match; else j += max(bmgsi, bmbcti-(m-1-i);最详细最容易理解的bm算法简介算法主体i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 裁判员考试成果展示试题及答案
- 预防农业病虫害流行的措施试题及答案
- 模具设计师入门指南试题及答案
- 2024年体育经纪人市场竞争态势分析试题及答案
- 从容应对农业植保员资格考试试题及答案
- 2024年种子繁育员的教育培训路径试题及答案
- 针对植保员职业考试的独到见解试题及答案
- 游泳救生员资格考试的动态试题及答案
- 2024年植保员职业资格考题盘点试题及答案
- 游泳救生员职业资格考试前的必读试题及答案分析
- 居间合同协议书范本标准版
- 2024年孝感市(中心)人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- VL3000系列高性能矢量型变频器用户手册上海沃陆电气有限公司
- 极端天气应急
- 家具采购安装方案、家具采购服务方案和计划
- 2023年中国计量科学研究院招聘笔试真题
- 影视产业人才培养-洞察分析
- 儿童系统性红斑狼疮诊断与治疗评析
- 度假酒店的规划与开发
- 《中国文化遗产》课件
- 2022年高考数学强基计划讲义共16个【学生版】
评论
0/150
提交评论