【技术实现步骤摘要】
本专利技术涉及信息检索、模式识别、文本挖掘、入侵检测等领域,更具体地涉及一种改进字符串匹配的方法和系统。
技术介绍
在当今的信息化时代,网络资源飞速膨胀,在海量数据中找到需要的信息是亟待决绝的问题。字符串匹配是信息检索的核心,匹配的速度直接影响系统检索的性能。因此提高字符串匹配的速度尤为重要。现有的匹配算法主要有以下三种算法:顺序匹配算法BF(Brute-Force)。BF算法也称蛮力匹配算法,其采用一个二重循环,顺序匹配模式串。该算法需要将模式串逐一与文本串进行比较,导致产生大量冗余操作,包含过多不必要的比较,效率极低。前缀匹配算法KMP(Knuth-Morris-Pratt)。KMP算法采用从左至右的匹配方式,通过一个辅助函数跳过失配串,以实现优化。在字符失配时,取消机械的从头比对的方式,而是依据之前的检测信息进行计算,直接跳过不必要的检测,从而减少冗余。BM(Boyer-Moore)算法。BM算法在进行模式串比对时,采用从右至左的方式,当发现不匹配时,将模式串向右移动。BM不需要对文本串中的字符进行逐一比较,而会跳过其中的某些部分,对于每一次匹配失败,BM算法都能使用失败信息来排除尽可能多的无法匹配的位置。BM算法的匹配性能优于其余两种算法,因此在实际中最常使用。BM算法采用坏字符和好后缀规则来处理模式串的移动。坏字符的定义为:如果待搜索的模式串的最后一个字符与字符串 ...
【技术保护点】
一种改进字符串匹配的方法,包括:将文本串和模式串的头部对齐,以从右向左开始比较;根据BM算法的坏字符规则计算预移动距离;根据预移动距离来获取预备坏字符;确定是否扩增移动距离;当确定对移动距离进行扩增时,根据BM算法的坏字符规则计算经扩增的移动距离;根据预移动距离或经扩增的移动距离来移动模式串;以及确定是否继续从右向左比较。
【技术特征摘要】
1.一种改进字符串匹配的方法,包括:
将文本串和模式串的头部对齐,以从右向左开始比较;
根据BM算法的坏字符规则计算预移动距离;
根据预移动距离来获取预备坏字符;
确定是否扩增移动距离;
当确定对移动距离进行扩增时,根据BM算法的坏字符规则计算
经扩增的移动距离;
根据预移动距离或经扩增的移动距离来移动模式串;以及
确定是否继续从右向左比较。
2.根据权利要求1所述的方法,其中通过以下公式来计算预移动
距离shiftpre:
shiftpre=m-1-f-S(T[k+m-1-f])
其中,m表示待搜索的模式串的长度;f表示已匹配的字符的数目;
k表示模式串头部与文本串的相对位置;S(T[k+m-1-f])表示坏字符上
一次在模式串P中出现的位置,并且如果坏字符不存在于模式串中,则
S(T[k+m-1-f])值为-1。
3.根据权利要求1所述的方法,其中通过以下公式来获取预备坏
字符PREbadchar:
PREbadchar=T[(k+m-1-f)+m-1-S(T[k+m-1-f])]
其中,m表示待搜索的模式串的长度;f表示已匹配的字符的数目;
k表示模式串头部与文本串的相对位置;T(n)表示待匹配的文本串,长
度为n;S(T[k+m-1-f])表示坏字符上一次在模式串P中出现的位置,
并且如果坏字符不存在于模式串中,则S(T[k+m-1-f])值为-1。
4.根据权利要求1所述的方法,其中确定是否扩增移动距离包括:
将预备坏字符PREbadchar与字符P[m-1]进行比较;
当二者匹配时,确定不扩增移动距离;以及
当二者不匹配时,确定对移动距离进行扩增。
5.根据权利要求1所述的方法,其中通过以下公式来计算经扩增
的移动距离shift:
shift=shiftpre+(m-1)-S(PREbadchar),
其中shiftpre表示预移动距离,S(PREbadchar)表示预备坏字符PREbadchar上一次在模式串中出现的位置。
6.一种改进字符串匹配的系统,包括:
初始化模块,用于将文本串和模式串的头部对齐以从右向左开始...
【专利技术属性】
技术研发人员:蒋松林,
申请(专利权)人:北京京东尚科信息技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。