1 / 4
文档名称:

BM模式匹配算法原理.doc

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

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

分享

预览

BM模式匹配算法原理.doc

上传人:小辰GG 2022/5/29 文件大小:147 KB

下载得到文件列表

BM模式匹配算法原理.doc

相关文档

文档介绍

文档介绍:BM模式匹配算法-原理(图解)
首先,先简单说明一下有关BM算法的一些基本概念。
BM算法是一种精确字符串匹配算法(区别于模糊匹配)。
BM算法采用从右向左比较的方法,同时应用到了两种启发式规则,即坏字符规则和好后缀规则,来决定向右跳BM模式匹配算法-原理(图解)
首先,先简单说明一下有关BM算法的一些基本概念。
BM算法是一种精确字符串匹配算法(区别于模糊匹配)。
BM算法采用从右向左比较的方法,同时应用到了两种启发式规则,即坏字符规则和好后缀规则,来决定向右跳跃的距离。
BM算法的基本流程:设文本串「模式串为P。首先将T与P进行左对齐,然后进行A右向左比较,如下图所示:
若是某趟比较不匹配时,BM算法就采用两条启发式规则,即坏字符规则和好后缀规则,来计算模式串向右移动的距离,直到整个匹配过程的结束。
下面,来详细介绍一下坏字符规则和好后缀规则。
首先,诠释一下坏字符和好后缀的概念。
请看下图:
T
a
b
c
e
c
a
b
e
n
P
a
b
c
a
b
图中,第一个不匹配的字符(红色部分)为坏字符,已匹配部分(绿色)为好后缀。
1)坏字符规则(BadCharacter):
在BM算法从右向左扫描的过程中,若发现某个字符x不匹配,则按如下两种情况讨论:
,那么从字符x开始的m个文本显然不可能与P匹配成功,直接全部跳过该区域即可。
,则以该字符进行对齐。
用数学公式表示,设Skip(x)%P右移的距离,m为模式串P的长度,max(x)为字符x在P中最右位置。
skip[x;=
m;P[j](l<j<m)、即x在P中未出现
m-max(x);[k|P[k]=xfl<k<m};x在P中出现
例1:
下图红色部分,发生了一次不匹配。
a
b
c
e
c
abe
a
b
c
a
J
计算移动距离Skip(c)=5-3=2,则P向右移动2位。
移动后如下图:
2)好后缀规则(GoodSuffix):
若发现某个字符不匹配的同时,已有部分字符匹配成功,则按如下两种情况讨论:
如果在P中位置t处已匹配部分P'在P中的某位置t'也出现,且位置t'的前一个字符与位置t的前一个字符不相同,则将P右移使t'对应t方才的所在的位置。
如果在P中任何位置已匹配部分P'都没有再出现,则找到与P'的后缀P"相同的P的最长前缀x,向右移动P,使x对应方才P"后缀