【技术实现步骤摘要】
本专利技术涉及计算机应用
,尤其涉及一种基于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 ...
【技术保护点】
一种基于图形处理单元的非确定有限自动机的匹配方法,其特征在于,包括:计算非确定有限自动机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,获得虚拟...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。