一种基于图形处理单元的非确定有限自动机的匹配方法及装置制造方法及图纸

技术编号:8271438 阅读:185 留言:0更新日期:2013-01-31 03:39
本发明专利技术公开了一种基于图形处理单元的非确定有限自动机的匹配方法及装置,其包括:首先,计算非确定有限自动机NFA中所有状态两两之间的相容性,并根据所述相容性对所述各个状态进行编码形成虚拟NFA,获得虚拟NFA对应的虚拟NFA状态转换表;其中,所述相容性是指,若NFA中的两个状态在NFA匹配过程中不同时处于活跃状态,则该两个状态相容,否则,为不相容;之后,将所述虚拟NFA状态转换表存储在图形处理单元GPU的全局存储器中,并基于该虚拟NFA状态转换表匹配经过交织处理的待处理数据包中数据。本发明专利技术实施例的实现可以有效降低匹配过程中的复杂程度,提高基于NFA的匹配速度,很好地当前克服了现有技术中存在的问题。

【技术实现步骤摘要】
本专利技术涉及计算机应用
,尤其涉及一种基于GPU (graphic processingunit,图形处理单兀)的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状态建立NXN的二维表,N为NFA的状态数目,NFA状态依次为0,1,2,…,N-I ;在该二维表中,第i+Ι行和第j+Ι列的表项由[i,j]表示;如果状态i和j是相容的,则表项[i,j]内容设置为true,如果状态i和j是不相容的,则表项[i,j]内容设置为false ;其中,分别将表项, [1,1], [2,2],…,[N_1,N_1]的内容置为false ;建立初始为空的第一队列queue并进行初始化,依次将状态对(0,O),(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 U Dj,并将该并集当中的任意两个状态所组成的状态对(s,t)对应的所述二维表表项内容置为false,若状态对(s,t)所对应的二维表表项中的内容之前记录为true,则还需要将状态对(s, t)压入第一队列queue的尾部;判断第一队列queue是否非空,如果是,过程结束,否则,继续再执行所述弹出第一队列queue首部的状态对(i, j)的步骤。可选地,所述根据所述相容性对所述各个状态进行编码形成虚拟NFA的步骤包括根据所述相容性将NFA中的所有状态分组,获得至少一个相容组,所述相容组中的任意两个状态之间相容;将得到的所述相容组合并获得超级相容组,再对所述超级相容组进行编码形成虚拟状态,并获得虚拟NFA。可选地,所述根据所述相容性将NFA中的所有状态分组,获得至少一个相容组的步骤包括获得空的第二队列queue,在建立的无向图中一次或多次选取边度数最大的一条边,将该边对应的两个顶点对应的状态压入所述第二队列queue,并从该无向图当中去除这条边,更新剩余无向图当中各项顶点度数和边度数;其中,所述无向图的顶点为NFA的一个状态,边为NFA中两个不相容的状态对应的顶点之间的连线,顶点度数为与该顶点相连的边的总数目,边度数为该边所关联的两个顶点的顶点度数之和;在建立的无向图中一次或多次选取边度数最大的一条边的过程中,若当前被选中边从无向图当中移除,剩余图变为空,则这条边不压入第二队列queue,拆分这条边的两个关联顶点,各自构成一个单元素的独立集,再使用第二队列queue中收集的边对应的状态对构成新的无向图,并执行所述获得空的第二队列queue的步骤,所述的独立集对应一个相容组;若剩余无向图中不存在边并且非空,则将无向图中剩余顶点构成一个顶点独立集,将第二队列queue中与该独立集中的状态相容的NFA状态加入该独立集中,再使用第二队列queue中剩余的顶点构成新的无向图,并执行所述获得空的第二队列queue的步骤;若第二队列queue空,则过程结束。可选地,所述将得到的所述相容组合并获得超级相容组的步骤包括按照相容组状态数的大小进行降序排序,得到降序排列的相容组集合;从所述降序排列的相容组集 合中依次顺序取出相容组并加入到当前占用比特数最少的超级相容组当中,同时更新该超级相容组占用的比特数,其中,每个超级相容组初始占用的比特数为O。6、根据权利要求3所述的方法,其特征在于,所述获得虚拟NFA的步骤包括在超级相容组中,对各个相容组包含的状态进行编码,获得相容组的组内状态的编码作为组状态编码结果,还对超级相容组的组编号进行编码,获得组编号编码结果;将所述组状态编码结果与所述组编号编码结果联结,构成该超级相容组中虚拟状态的完整的编码,获得虚拟NFA的状态,还建立所述虚拟NFA状态之间的转换关系,获得包含虚拟NFA状态和虚拟NFA状态之间的转换关系的虚拟NFA,用于获得虚拟NFA对应的虚拟NFA状态转换表。可选地,建立所述虚拟NFA状态之间的转换关系的处理包括以所述虚拟状态作为源状态,对于输入字符进行状态转换,根据所本文档来自技高网
...

【技术保护点】
一种基于图形处理单元的非确定有限自动机的匹配方法,其特征在于,包括:计算非确定有限自动机NFA中所有状态两两之间的相容性,并根据所述相容性对所述各个状态进行编码形成虚拟NFA,以获得虚拟NFA对应的虚拟NFA状态转换表;其中,所述相容性是指,若NFA中的两个状态在NFA匹配过程中不同时处于活跃状态,则该两个状态相容,否则,为不相容;将所述虚拟NFA状态转换表存储在图形处理单元GPU的全局存储器中,并基于该虚拟NFA状态转换表匹配经过交织处理的待处理数据包中数据。

【技术特征摘要】
2012.03.29 CN 201210089447.11.一种基于图形处理单元的非确定有限自动机的匹配方法,其特征在于,包括 计算非确定有限自动机NFA中所有状态两两之间的相容性,并根据所述相容性对所述各个状态进行编码形成虚拟NFA,以获得虚拟NFA对应的虚拟NFA状态转换表;其中,所述相容性是指,若NFA中的两个状态在NFA匹配过程中不同时处于活跃状态,则该两个状态相容,否则,为不相容; 将所述虚拟NFA状态转换表存储在图形处理单元GPU的全局存储器中,并基于该虚拟NFA状态转换表匹配经过交织处理的待处理数据包中数据。2.根据权利要求I所述的方法,其特征在于,所述计算NFA中所有状态两两之间的相容性的步骤包括 针对NFA状态建立NXN的二维表,N为NFA的状态数目,NFA状态依次为O,1,2,…,N-I ;在该二维表中,第i+Ι行和第j+Ι列的表项由[i,j]表示;如果状态i和j是相容的,则表项[i,j]内容设置为true,如果状态i和j是不相容的,则表项[i,j]内容设置为false ;其中,分别将表项, [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 U Dj,并将该并集当中的任意两个状态所组成的状态对(s,t)对应的所述二维表表项内容置为fal se,若状态对(s,t)所对应的二维表表项中的内容之前记录为true,则还需要将状态对(s, t)压入第一队列queue的尾部; 判断第一队列queue是否非空,如果是,过程结束,否则,继续再执行所述弹出第一队列queue首部的状态对(i, j)的步骤。3.根据权利要求I或2所述的方法,其特征在于,所述根据所述相容性对所述各个状态进行编码形成虚拟NFA的步骤包括 根据所述相容性将NFA中的所有状态分组,获得至少一个相容组,所述相容组中的任意两个状态之间相容; 将得到的所述相容组合并获得超级相容组,再对所述超级相容组进行编码形成虚拟状态,并获得虚拟NFA。4.根据权利要求3所述的方法,其特征在于,所述根据所述相容性将NFA中的所有状态分组,获得至少一个相容组的步骤包括 获得空的第二队列queue,在建立的无向图中一次或多次选取边度数最大的一条边,将该边对应的两个顶点对应的状态压入所述第二队列queue,并从该无向图当中去除这条边,更新剩余无向图当中各项顶点度数和边度数;其中,所述无向图的顶点为NFA的一个状态,边为NFA中两个不相容的状态对应的顶点之间的连线,顶点度数为与该顶点相连的边的总数目,边度数为该边所关联的两个顶点的顶点度数之和; 在建立的无向图中一次或多次选取边度数最大的一条边的过程中,若当前被选中边从无向图当中移除,剩余图变为空,则这条边不压入第二队列queue,拆分这条边的两个关联顶点,各自构成一个单元素的独立集,再使用第二队列queue中收集的边对应的状态对构成新的无向图,并执行所述获得空的第二队列queue的步骤,所述的独立集对应一个相容组;若剩余无向图中不存在边并且非空,则将无向图中剩余顶点构成一个顶点独立集,将第二队列queue中与该独立集中的状态相容的NFA状态加入该独立集中,再使用第二队列queue中剩余的顶点构成新的无向图,并执行所述获得空的第二队列queue的步骤;若第二队列queue空,则过程结束。5.根据权利要求3所述的方法,其特征在于,所述将得到的所述相容组合并获得超级相容组的步骤包括 按照相容组状态数的大小进行降序排序,得到降序排列的相容组集合; 从所述降序排列的相容组集合中依次顺序取出相容组并加入到当前占用比特数最少的超级相容组当中,同时更新该超级相容组占用的比特数,其中,每个超级相容组初始占用的比特数为O。6.一种基于图形处理单元的非确定有限自动机的匹配装置,其特征在于,包括 虚拟NFA建立模块,用于计算非确定有限自动机NFA中所有状态两两之间的相容性,并根据所述相容性对所述各个状态进行编码形成虚拟NFA,获得虚拟...

【专利技术属性】
技术研发人员:董群峰
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

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

1