[发明专利]基于散列的串匹配方法及其选择模式串子窗口的方法无效
申请号: | 201110162453.0 | 申请日: | 2011-06-16 |
公开(公告)号: | CN102243656A | 公开(公告)日: | 2011-11-16 |
发明(设计)人: | 邵妍;刘燕兵;王勇;刘庆云;郭莉;谭建龙;陈训逊;汪立东 | 申请(专利权)人: | 中国科学院计算技术研究所;国家计算机网络与信息安全管理中心 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 匹配 方法 及其 选择 模式 窗口 | ||
技术领域
本发明涉及信息检索领域。本发明尤其涉及串匹配方法。
背景技术
精确串匹配(后面简称“串匹配”)问题是计算机科学研究领域的一个经典问题。它指在文本T=t1t2…tn中找出某个给定的模式串集合P={p1,p2,…pr}的所有出现位置,其中T和pi(1≤i≤r)是在有限字符表∑上的字符序列。串匹配技术一直都是计算机科学的研究热点之一,它在网络入侵检测、计算机病毒特征码匹配、网络信息内容安全、信息检索等多个领域中有着广泛的应用。
串匹配方法的分类有多种,按照其关键技术来分,可以分为以下三类:基于自动机的匹配方法、基于散列的匹配方法和基于位并行的匹配方法。其中,基于散列的串匹配方法具有存储空间小,匹配速度快的优点,是实际系统中应用最广泛的方法之一,其中的典型代表包括Karp和Rabin在参考文献1(Efficient randomized pattern-matching algorithms.IBM Journal of Research and Development 31(1987).1987,3:249-260.)中提出的方法(通常称为Karp-Rabin方法),以及Wu和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[hi]来记录模式串集合中各模式串长度为m的子串的散列值hi的出现次数;对于每个模式串,逐个扫描其长度为m的子串pi,子串pi的散列值表示为hi,选取Count[hi]最小的子串pi来作为该模式串的子窗口。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所;国家计算机网络与信息安全管理中心,未经中国科学院计算技术研究所;国家计算机网络与信息安全管理中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110162453.0/2.html,转载请声明来源钻瓜专利网。