[发明专利]一种高速精确单模式字符串匹配的方法无效
申请号: | 200910072467.6 | 申请日: | 2009-07-07 |
公开(公告)号: | CN101609455A | 公开(公告)日: | 2009-12-23 |
发明(设计)人: | 姚念民;范洪博 | 申请(专利权)人: | 哈尔滨工程大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150001黑龙江省哈尔滨市南岗区南通*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 高速 精确 模式 字符串 匹配 方法 | ||
(一)技术领域
本发明涉及信息处理领域中一种用于提高处理文本数据搜索性能的方法,具体地说是一种精确单模式字符串匹配的方法。
(二)背景技术
字符串匹配问题指在给定符号序列中找出具有某种性质的符号子序列的问题。字符串匹配问题是计算机科学的基本问题之一,其应用范围极其广泛。在几乎所有涉及文本处理的领域或者可以规划为文本处理的领域中均包含字符串匹配的相关要求(如搜索引擎、语言翻译、OCR识别、拼写检查等领域)。特别是在入侵检测/病毒检测、网络信息过滤与检索、计算生物学/生物信息学等重要领域中,字符串匹配问题已经成为这些领域的核心问题。但目前,字符串匹配技术的发展落后于计算机硬件、计算机网络的发展,现有字符串匹配方法难以满足应用程序对串匹配性能的需要,字符串匹配的速度已经成为决定字符串匹配类应用软件性能的瓶颈与关键。
在字符串匹配领域的各类问题中,精确单模式串匹配问题为字符串匹配领域各类问题的基础。而且精确单模式匹配本身的应用也最为广泛。因此,在字符串匹配领域中,提出一种更高速的精确单模式串匹配方法有特别重要的意义。目前有案可查的进行精确单模式匹配的方法有上百种。
在实际匹配中,在英文语料(或ASCII字符集)中进行检索最为常见,同时待匹配的模式也很少见到超过32(目前32位计算机的机器字长)的,在此条件下,截止至本专利申请时,目前最高速的精确单模式匹配方法之一为Holub J与DurianB于2005年提出的SBNDM2算法。(Fast variants of bit parallel approachto suffix automata.In:The Second Haifa Annual International Stringology ResearchWorkshop of the Israeli Science Foundation,CRI,University ofHaifa,Israel,2005.)SBNDM2算法隶属于采用子串匹配机制和位并行机制完成搜索的BNDM类算法。若能在SBNDM2算法的基础上,针对其不足进行改进,有可能获得更高性能的精确单模式串匹配的方法。
SBNDM2算法在匹配过程中维护了一个位向量,该位向量中被设置的位记录了已读入字符串的所有出现位置,根据此位向量能够快速判断已读入字符串是否为模式的子串,算法利用此结果实现模式匹配。算法匹配时从滑动窗口尾部反向读入字符。如果已读入字符串为模式的子串,则可以继续从窗口中反向读入字符直到发现模式匹配(即已读入字符长度与模式等长);否则,将产生一个跳跃,将窗口首字符与发现的模式最长子串首字符对齐。
SBNDM2包含预处理和搜索两个主要阶段。为实现利用位并行机制进行字符串匹配,SBNDM2的预处理阶段生成字符集中每个字符的位掩码(以无符号整数形式存储),掩码记录了该字符在模式的所有出现位置。SBNDM2将匹配的过程分裂为两个相对独立的循环。内层循环(称Scan Loop)一次读入窗口最末的2个字符,然后利用已读入字符的位掩码生成位向量,并检查这两个字符是否是模式的子串。若已读入的两个字符不是模式的子串,则跳跃(模式长度-1)个字符,并重复Scan Loop;反之,则进入外层循环(称Match Loop)。外层循环在窗口内继续自后向前逐个读入字符,每读入一个字符就利用该字符的位掩码更新位向量,并根据更新后的位向量检查已读入字符串是否是模式的子串,直到发现某字符读入后不再是模式的子串为止,然后跳跃窗口首字符至该字符之后,重新进入Scan Loop。若窗口首字符读入后,已读入字符串仍然是模式的子串,则说明发生了模式匹配。SBNDM2算法的具体实现参见附录1。
SBNDM2算法存在如下几点不足:
1)在Match Loop中,SBNDM2算法在每读入一个字符时需要7条具体操作,其中两条分支操作。理论上,Match Loop中完成一次字符读入只需要5项操作,其中分支指令1条,不过至今尚未有能达到此最简形式的算法出现。如果能简化Match Loop到5条指令,其中分支指令1条的最简形式,将能有效提高算法性能。
2)在SBNDM2算法中,在每次跳跃的过程中都必须进行一次下标越界的检查以确定待读入字符是否已经超出文本的边界。由于一般待匹配的文本都比较大,出现下标越界的概率很小,如此频繁的下标越界检查将降低算法的性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910072467.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:液晶显示装置
- 下一篇:钩端螺旋体病诊断试剂盒