[发明专利]一种基于图形处理单元的非确定有限自动机的匹配方法及装置有效
申请号: | 201210290345.6 | 申请日: | 2012-08-15 |
公开(公告)号: | CN102902713A | 公开(公告)日: | 2013-01-30 |
发明(设计)人: | 董群峰 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京凯特来知识产权代理有限公司 11260 | 代理人: | 郑立明;赵镇勇 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 图形 处理 单元 确定 有限 自动机 匹配 方法 装置 | ||
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种基于GPU(graphic processing unit,图形处理单元)的NFA(non-deterministic finite automaton,非确定性有限自动机)的匹配方法及装置。
背景技术
在计算机技术领域中,正则表达式是用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。目前,许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式在现代计算机应用领域使用十分广泛,正则表达式因其简洁、高效、强大的文本处理能力得到普遍认可和采用。
一个正则表达式是一个模式,描述符合一系列句法规则的字符串;在具体匹配操作当中,通常是将正则表达式通过标准的Thompson算法或者Glushkov算法等算法转换为NFA(non-deterministic finite automaton,非确定性有限自动机)或者DFA(deterministic finite automaton,确定性有限自动机),然后借助有限自动机完成匹配操作。基于有限自动机的正则表达式匹配技术需要解决的两大难题:存储体积和匹配速度,亦即时间复杂度和空间复杂度;在这两个衡量指标上DFA和NFA互有优劣。
其中,DFA中每个源状态对于输入字符转移到一个唯一的目的状态,即在DFA运行过程中,有且仅有一个活跃状态,DFA的匹配特征是确定和简单的,但是DFA需要存储状态的空间可能呈现指数级膨胀,最极端的情况下,具有N个状态的NFA其等价的DFA可能有多大2N个状态。
相比DFA,相应的NFA的存储体积不存在指数膨胀问题,与正则表达式规则集大小呈现线性增长关系,但是在NFA匹配过程中,NFA包含的每一个状态对于一个输入字符,可能会有多个目的状态被激活,因此在NFA的运行过程中会有数目不确定的状态处于激活状态,这些活跃状态组成一个活跃状态集合,因此,在NFA的匹配过程中,需要维护一个活跃状态集合,针对输入字符的转换表现为状态集合之间的转换,相应的匹配过程比DFA下的匹配过程复杂,导致NFA匹配效率较低。目前还没有一种方式能够降低NFA匹配过程中的复杂程度,以有效提高相应的NFA匹配过程中的效率。
发明内容
本发明的目的是提供一种基于图形处理单元的非确定有限自动机的匹配方法及装置,从而可以降低NFA匹配过程中的复杂程度,有效提高NFA匹配效率。
本发明的目的是通过以下技术方案实现的:
一种基于图形处理单元的非确定有限自动机的匹配方法,包括:
计算非确定有限自动机NFA中所有状态两两之间的相容性,并根据所述相容性对所述各个状态进 行编码形成虚拟NFA,以获得虚拟NFA对应的虚拟NFA状态转换表;其中,所述相容性是指,若NFA中的两个状态在NFA匹配过程中不同时处于活跃状态,则该两个状态相容,否则,为不相容;
将所述虚拟NFA状态转换表存储在图形处理单元GPU的全局存储器中,并基于该虚拟N FA状态转换表匹配经过交织处理的待处理数据包中数据。
可选地,所述计算NFA中所有状态两两之间的相容性的步骤包括:
针对NFA状态建立N×N的二维表,N为NFA的状态数目,NFA状态依次为0,1,2,…,N-1;在该二维表中,第i+1行和第j+1列的表项由[i,j]表示;如果状态i和j是相容的,则表项[i,j]内容设置为true,如果状态i和j是不相容的,则表项[i,j]内容设置为false;其中,分别将表项[0,0],[1,1],[2,2],…,[N-1,N-1]的内容置为false;
建立初始为空的第一队列queue并进行初始化,依次将状态对(0,0),(1,1),(2,2),…,(N-1,N-1)压入第一队列queue中;
弹出第一队列queue首部的状态对(i,j),使用状态i,j遍历全部可能的输入字符0-255查询NFA状态,其中,以当前输入字符作为转换字符,以状态i为源状态,查询该NFA状态获得目的状态集合Di,以状态j为源状态,查询该NFA状态获得目的状态集合Dj;检查状态集合Di和状态集合Dj的并集Di∪Dj,并将该并集当中的任意两个状态所组成的状态对(s,t)对应的所述二维表表项内容置为false,若状态对(s,t)所对应的二维表表项中的内容之前记录为true,则还需要将状态对(s,t)压入第一队列queue的尾部;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210290345.6/2.html,转载请声明来源钻瓜专利网。