1 / 13
文档名称:

BM模式匹配算法原理.doc

格式:doc   大小:157KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

BM模式匹配算法原理.doc

上传人:drp539606 2019/6/24 文件大小:157 KB

下载得到文件列表

BM模式匹配算法原理.doc

文档介绍

文档介绍:BM模式匹配算法原理(图解)修改浏览权限|删除首先,先简单说明一下有关BM算法的一些基本概念。BM算法是一种精确字符串匹配算法(区别于模糊匹配)。BM算法采用从右向左比较的方法,同时应用到了两种启发式规则,即坏字符规则和好后缀规则,来决定向右跳跃的距离。BM算法的基本流程:设文本串T,模式串为P。首先将T与P进行左对齐,然后进行从右向左比较,如下图所示:   若是某趟比较不匹配时,BM算法就采用两条启发式规则,即坏字符规则和好后缀规则,来计算模式串向右移动的距离,直到整个匹配过程的结束。      下面,来详细介绍一下坏字符规则和好后缀规则。    首先,诠释一下坏字符和好后缀的概念。  请看下图:    图中,第一个不匹配的字符(红色部分)为坏字符,已匹配部分(绿色)为好后缀。   1)坏字符规则(BadCharacter):         在BM算法从右向左扫描的过程中,若发现某个字符x不匹配,则按如下两种情况讨论:              ,那么从字符x开始的m个文本显然不可能与P匹配成功,直接全部跳过该区域即可。              ,则以该字符进行对齐。        用数学公式表示,设Skip(x)为P右移的距离,m为模式串P的长度,max(x)为字符x在P中最右位置。                    例1:        下图红色部分,发生了一次不匹配。                    计算移动距离Skip(c)=5-3=2,则P向右移动2位。       移动后如下图:                     2)好后缀规则(GoodSuffix):        若发现某个字符不匹配的同时,已有部分字符匹配成功,则按如下两种情况讨论:             '在P中的某位置t'也出现,且位置t'的前一个字符与位置t的前一个字符不相同,则将P右移使t'对应t方才的所在的位置。             '都没有再出现,则找到与P'的后缀P''相同的P的最长前缀x,向右移动P,使x对应方才P''后缀所在的位置。        用数学公式表示,设Shift(j)为P右移的距离,m为模式串P的长度,j为当前所匹配的字符位置,s为t'与t的距离(以上情况i)或者x与P''的距离(以上情况ii)。                 以上过程有点抽象,所以我们继续图解。         例2:         下图中,已匹配部分cab(绿色)在P中再没出现。                 再看下图,其后缀T'(蓝色)与P中前缀P'(红色)匹配,则将P'移动到T'的位置。                 移动后如下图:                   自此,两个规则讲解完毕。    在BM算法匹配的过程中,取SKip(x)与Shift(j)中的较大者作为跳跃的距离。    BM算法预处理时间复杂度为O(m+s),空间复杂度为O(s),s是与P,T相关的有限字符集长度,搜索阶段时间复杂度为O(m·n)。最好情况下的时间复杂度为O(n/m),最坏情况下时间复杂度为O(m·n)。(二)所谓精确字符串匹配问题,是在文本T中找到所有与查询 P精确匹配的子串。而BM算法可以非常有效地解决这个问题,让时间复杂度降到低于线形的水平。  BM算法主要用了三种巧妙而有效的方法,即从右到左扫描,坏字符规则和好后缀规则。  从右到左扫描的意思是从最后一个字符开始向前匹配,而不是****惯上的从开头向后匹配。  坏字符规则是,从右到左的扫描过程中,发现Ti与Pj不同,如果P中存在一个字符Pk与Ti相同,且k<i那么就将直接将P向右移使Pk与Ti对齐,然后再从右到左进行匹配。如果P中不存在任何与Ti相同的字符,则直接将P的第一个字符与Ti的下一个字符对齐,再从右到左进行比较。  如图:  T:    abcbadftate  P:    cbaxad  P:        cbaxad    用R(x)表示字符x在P中出现的最右位置,此例中R(b)=2。  可以看出使用从右到左扫描和坏字符规则可以跳过T中的很多位置不去检查,从而使时间复杂度低于线性。  好后缀规则是,从右到左的扫描过程中,发现Ti与Pj不同,检查一下相同的部分 t是否在P中的其他位置t'出现,a)如果t与t'的前一个字母不相同,就将P向右移,使 t'与T中的t对齐。b)如果 t'没有出现,则找到与 t的后缀相同的P的最长前缀x,向右移动P,使 x与T中 t的后缀相对应。  如图a):   N:                     1  

最近更新

大型分层压裂技术在大牛地气田的研究与应用的.. 2页

大功率激光焊接过程状态复合驱动在线检测方法.. 2页

大件物流运输方案关键环节研究的开题报告 2页

民生银行财务分析PPT课件 16页

新教师培训心得体会范文(30篇) 71页

多节段脊髓型颈椎病两种前路术式手术疗效的临.. 2页

2024年濮阳市高职单招综合素质考前练习试题及.. 10页

胫腓骨骨折手法整复 19页

胆囊疾病课件 53页

初中物理力学经典题例 (3) 1页

2024年四川信息职业技术学院单招综合素质考试.. 57页

辣椒缺素症 12页

初中是国民教育中一个重要的阶段 4页

2024年咸阳职业技术学院单招职业技能测试题库.. 72页

2024年河北艺术职业学院单招职业适应性测试题.. 72页

2024年湘潭医卫职业技术学院单招综合素质考试.. 74页

2024年青海建筑职业技术学院单招职业适应性测.. 56页

2023年秋学期教育科学版2023—2024学年度第一.. 7页

2022~2023保险高管考试题库及答案参考26 22页

纪检监察干部“加强党的政治建设”专题学习研.. 3页

矛盾纠纷大排查大化解专项工作实施方案 3页

部编版语文八年级下册《期中测试题》含答案 16页

国际海运危险货物规则 145页

2023-2023年最新医学核心期刊(北大图书馆) 4页

塔吊拆除技术交底 2页

企业安全生产标准化基本规范(GBT33000-2022) 4页

幼儿园治安突发事件事件处置预案 6页

1405018-20-0000-00_10kV~750kV交流盘形(瓷、.. 31页