ImageVerifierCode 换一换
格式:DOC , 页数:13 ,大小:174.50KB ,
资源ID:3550368      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3550368.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(BM模式匹配算法原理.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

BM模式匹配算法原理.doc

1、BM 模式匹配算法原理(图解) 修改浏览权限 | 删除 首先,先简单说明一下有关 BM 算法的一些基本概念。BM 算法是一种精确字符串匹配算法(区别于模糊匹配)。BM 算法采用从右向左比较 的方法,同时应用到了两种启发式规则,即坏字符规则 和好后缀规则 ,来决定向右跳跃的距离。BM 算法的基本流程: 设文本串 T,模式串为 P。首先将 T 与 P 进行左对齐,然后进行从右向左比较 ,如下图所示:若是某趟比较不匹配时,BM 算法就采用两条启发式规则,即 坏字符规则 和好后缀规则 ,来计算模式串向右移动的距离,直到整个匹配过程的结束。 下面,来详细介绍一下坏字符规则 和好后缀规则 。首先,诠释一下

2、坏字符和好后缀的概念。请看下图:图中,第一个不匹配的字符(红色部分)为坏字符,已匹配部分(绿色)为好后缀。1)坏字符规则(Bad Character):在 BM 算法从右向左扫描的过程中,若发现某个字符 x 不匹配,则按如下两种情况讨论:i. 如果字符 x 在模式 P 中没有出现,那么从字符 x 开始的 m 个文本显然不可能与 P 匹配成功,直接全部跳过该区域即可。ii. 如果 x 在模式 P 中出现,则以该字符进行对齐。用数学公式表示,设 Skip(x)为 P 右移的距离,m 为模式串 P 的长度,max(x)为字符 x 在 P 中最右位置。例 1: 下图红色部分,发生了一次不匹配。计算移动

3、距离 Skip(c) = 5 - 3 = 2,则 P 向右移动 2 位。移动后如下图:2)好后缀规则( Good Suffix): 若发现某个字符不匹配的同时,已有部分字符匹配成功,则按如下两种情况讨论:i. 如果在 P 中位置 t 处已匹配部分 P在 P 中的某位置 t也出现,且位置 t的前一个字符与位置 t 的前一个字符不相同,则将 P 右移使 t对应 t 方才的所在的位置。ii. 如果在 P 中任何位置已匹配部分 P都没有再出现,则找到与 P的后缀 P相同的 P 的最长前缀 x,向右移动 P,使 x 对应方才 P后缀所在的位置。 用数学公式表示,设 Shift(j)为 P 右移的距离,m

4、 为模式串 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(mn)。最好情

5、况下的时间复杂度为 O(n/m),最坏情况下时间复杂度为 O(mn)。(二)所谓精确字符串匹配问题,是在文本 T 中找到所有与查询 P 精确匹配的子串。而 BM 算法可以非常有效地解决这个问题,让时间复杂度降到低于线形的水平。BM 算法主要用了三种巧妙而有效的方法,即从右到左扫描,坏字符规则和好后缀规则。从右到左扫描 的意思是从最后一个字符开始向前匹配,而不是习惯上的从开头向后匹配。坏字符规则 是,从右到左的扫描过程中,发现 Ti 与 Pj 不同,如果 P 中存在一个字符 Pk 与 Ti 相同,且 k0 and P(i)=T(i) dobegini:=i-1;h:=h-1;end;if i=0

6、 thenbegin输出 T 的这个位置上的字符串;k:= k+n-l(2);endelse移动 P(增加 k),k 取 好后缀规则和坏字符规则决定的最大值end;预处理阶段可以根据上一篇文章提到的 Zbox 方法进行处理,时间复杂度为线性。整个算法的时间复杂度最坏的情况是 O(m),m 是 T 的长度。(三)BM 算法的基本思想是从右向左进行比较。开始时仍是 P(Pattern)的最左边与 S(String)的最左边对齐,但首先进行 Pm 与 Tm 的比较。当某趟比较中出现不匹配时,BM 算法采用两条启发性规则计算模式串右移的距离,即坏字符规则和好后缀规则。1) 坏字符规则(Bad Character)P 中的某个字符与 T 中的某个字符不相同时使用坏字符规则右移模式串 P,P 右移的距离可以通过 delta1 函数计算出来。delta1 函数的定义如下:delta1(x) = - m; x= ptrn p2 = ptrn + plen - 2;p3 = p1;while (p3 = ptrn while (p3 = ptrn *sptr = shift + plen - sptr + p2 - p3;

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。