基于散列的串匹配方法及其选择模式串子窗口的方法组成比例

技术编号:6842542 阅读:276 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种基于散列的串匹配方法及其选择模式串子窗口的方法。通过选择每个模式串的最优子窗口来计算该模式串的散列值,并以此来建立散列表。从而在大量的模式串有相同的前缀、后缀或子串的情况下,确保模式串尽量均匀地散列到散列表中,提高散列表的均匀性,保证基于散列的串匹配方法的高效运行。

【技术实现步骤摘要】

本专利技术涉及信息检索领域。本专利技术尤其涉及串匹配方法。
技术介绍
精确串匹配(后面简称“串匹配”)问题是计算机科学研究领域的一个经典问题。 它指在文本T = Lt2…、中找出某个给定的模式串集合P= {P1,P2,"Ij的所有出现位置,其中I^Ppi(KiSr)是在有限字符表Σ上的字符序列。串匹配技术一直都是计算机科学的研究热点之一,它在网络入侵检测、计算机病毒特征码匹配、网络信息内容安全、 信息检索等多个领域中有着广泛的应用。串匹配方法的分类有多种,按照其关键技术来分,可以分为以下三类基于自动机的匹配方法、基于散列的匹配方法和基于位并行的匹配方法。其中,基于散列的串匹配方法具有存储空间小,匹配速度快的优点,是实际系统中应用最广泛的方法之一,其中的典型代表包括 Karp 禾口 Rabin 在参考文献 1 (Efficient randomized pattern-matching algorithms. IBM Journal of Research and Development 31(1987). 1987,3 :249-260.) 中提出的方法(通常称为Karp-Rabin方法),以及■和Manber在参考文献2 (S. Wu, U. Manber. A fast algorithm for multi-pattern searching. Technical Report Department of Computer Science Chung-Cheng University. 1994, 5.)中提出的方法(通常称为Wu-Manber方法)。基于散列的串匹配方法的基本思想是在预处理阶段计算模式串的散列值,并以散列表的形式存储起来;在匹配过程中,并不直接比较模式串及文本子串,而比较二者对应的散列值,从而将匹配过程转化为查表的过程。基于散列的串匹配方法的基本流程如图1 所示。在方法的预处理阶段,首先,计算模式串集合中最短的模式串长度,记为m。此后,截取各个模式串长度为m的子串。上述过程实际上就是选择模式串子窗口的过程。图1所示的模式串子窗口选择方法是直接截取模式串长度为m的前缀。最后,通过散列函数,计算所截取的模式串子串的散列值,建立散列表。在匹配阶段,首先计算文本子串的散列值,然后查找散列表,如果存在散列值相同的模式串,再进一步比对文本和模式串本身。现有的基于散列的串匹配方法只是简单地将模式串的子窗口选择为模式串的前缀或后缀。这样,如果在模式串间存在大量的前缀、后缀或子串的情况下,就会出现不同的模式串截取出相同子串的情况,进而造成大量的模式串散列到散列表的同一位置,使散列表中某些链表过长,极大地影响了散列表的均勻性。使得串匹配方法在校验阶段的时间代价会大幅提高,显著影响方法的整体性能。
技术实现思路
因此,本专利技术的目的在于克服上述现有技术的缺陷,通过合理地选择模式串子窗口来提高基于散列的串匹配方法的性能。—方面,在本专利技术的一个实施例中提供了一种用于基于散列的串匹配中的选择模式串子窗口的方法,所述方法包括以下步骤步骤1)求得模式串集合中最短模式串长度m ;步骤2~)对于模式串集合中的每个模式串,计算其所有长度为m的子串的散列值, 组成散列值集合;步骤;3)确定所述模式串集合与所述散列值集合中的元素的一一对应关系,所述对应关系应满足模式串所对应的散列值是根据该模式串的一个长度为m的子串计算出散列值,同时将这个子串设置为该模式串的子窗口。根据本专利技术实施例的选择模式串子窗口的方法,所述步骤;3)包括统计各模式串长度为m的子串的散列值的出现次数;对于每个模式串,选择出现次数最少的其子串的散列值与该模式串相对应并将该子串设置为该模式串的子窗口。根据本专利技术实施例的选择模式串子窗口的方法,所述步骤3)包括用数组 Count 来记录模式串集合中各模式串长度为m的子串的散列值、的出现次数;对于每个模式串,逐个扫描其长度为m的子串Pi,子串Pi的散列值表示为Iii,选取Count [hj最小的子串Pi来作为该模式串的子窗口。在其他实施例中,步骤幻中也可以采用最大流法或匈牙利法来确定所述模式串集合与所述散列值集合中的元素的一一对应关系。又一方面,在本专利技术的一个实施例中提供了一种基于散列的串匹配方法。该方法首先采用上述实施例中所提供的选择模式串子窗口的方法来选择模式串集合中各个模式串对应的子窗口 ;然后,对模式串集合中每个模式串,截取该模式串的子窗口来计算该模式串的散列值,并建立散列表。其他步骤与现有的基于散列的串匹配方法相同。与现有技术相比,本专利技术的实施例所提供的串匹配方法通过选择每个模式串的最优子窗口来计算该模式串的散列值,并以此来建立散列表,从而可以在大量的模式串有相同的前缀、后缀或子串的情况下,确保模式串尽量均勻地散列到散列表中,相比现有的基于散列的串匹配方法,性能有很大提高。附图说明以下参照附图对本专利技术实施例作进一步说明,其中图1为现有的基于散列的串匹配方法基本流程示意图;图2为根据本专利技术实施例的模式串及其子串的散列值的对应关系示意图;图3为根据本专利技术一个实施例的模式串及其子串的散列值的对应关系示意图;图4为根据现有的直接截取模式串前缀的串匹配方法所建立的散列表的示意图;图5为根据本专利技术的实施例的基于散列的串匹配方法所建立的散列表的示意图;图6为Karp-Rabin方法与本专利技术的基于散列的串匹配方法的一个实施例的匹配速度对比示意图;图7为根据本专利技术实施例的基于散列的串匹配方法相比Karp-Rabin方法的性能改善示意图;图8为mi-Manber方法与本专利技术的基于散列的串匹配方法的又一个实施例的匹配速度对比示意图;图9为根据本专利技术实施例的基于散列的串匹配方法相比mi-Manber方法的性能改善示意图。 具体实施例方式为了使本专利技术的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术, 并不用于限定本专利技术。在本专利技术的一个实施例中提供了选择模式串的最优子窗口的方法。所谓模式串的最优子窗口,就是一个模式串最“独特”的部分,最具有代表性、最能将该模式串与其他模式串区分开的子串。选择模式串的最优子窗口,就是要寻找一组模式串及其子串的散列值一一对应关系,使得每个模式串尽可能对应不同的散列值,最大程度的减少不同模式串对应相同散列值的情况的发生。图2为模式串及其子串的散列值的对应关系的示意图。在本专利技术的实施例中将要截取的模式串子串的长度称为模式串子窗口大小,表示为m,散列函数表示为H。如图2所示,模式串及其长度为m的子串的散列值的对应关系可以用无向图来表示。模式串集合表示为P = {Pn P2,...,Pj,集合P中的元素Pi,即各模式串,组成顶点集V1,即图2中左侧一列顶点。模式串所有长度为m的子串的散列值组成顶点集V2,即图2中右侧一列顶点。无向图中所有的边组成集合E,i = ,v)e£,其中u e Vl, ν e V2,当且仅当ν是u的子串的散列值,即ν = H(u的长度为m的子串)。从上文可见,图2实际上是一个二部图,即G =〈VpVyE〉。因此,选择模式串的最优子窗口,实际上就是在上述二部图中选出边集M中任意两条边都没有公本文档来自技高网
...

【技术保护点】
1.一种用于基于散列的串匹配中的选择模式串子窗口的方法,所述方法包括:步骤1)求得模式串集合中最短模式串长度m;步骤2)对于模式串集合中的每个模式串,计算其所有长度为m的子串的散列值,组成散列值集合;步骤3)确定所述模式串集合与所述散列值集合中的元素的一一对应关系,所述对应关系应满足模式串所对应的散列值是根据该模式串的一个长度为m的子串计算出散列值,同时将这个子串设置为该模式串的子窗口。

【技术特征摘要】

【专利技术属性】
技术研发人员:邵妍刘燕兵王勇刘庆云郭莉谭建龙陈训逊汪立东
申请(专利权)人:中国科学院计算技术研究所国家计算机网络与信息安全管理中心
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1