[发明专利]一种基于图形处理单元的非确定有限自动机的匹配方法及装置有效
申请号: | 201210290345.6 | 申请日: | 2012-08-15 |
公开(公告)号: | CN102902713A | 公开(公告)日: | 2013-01-30 |
发明(设计)人: | 董群峰 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京凯特来知识产权代理有限公司 11260 | 代理人: | 郑立明;赵镇勇 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 图形 处理 单元 确定 有限 自动机 匹配 方法 装置 | ||
1.一种基于图形处理单元的非确定有限自动机的匹配方法,其特征在于,包括:
计算非确定有限自动机NFA中所有状态两两之间的相容性,并根据所述相容性对所述各个状态进行编码形成虚拟NFA,以获得虚拟NFA对应的虚拟NFA状态转换表;其中,所述相容性是指,若NFA中的两个状态在NFA匹配过程中不同时处于活跃状态,则该两个状态相容,否则,为不相容;
将所述虚拟NFA状态转换表存储在图形处理单元GPU的全局存储器中,并基于该虚拟NFA状态转换表匹配经过交织处理的待处理数据包中数据。
2.根据权利要求1所述的方法,其特征在于,所述计算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的尾部;
判断第一队列queue是否非空,如果是,过程结束,否则,继续再执行所述弹出第一队列queue首部的状态对(i,j)的步骤。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述相容性对所述各个状态进行编码形成虚拟NFA的步骤包括:
根据所述相容性将NFA中的所有状态分组,获得至少一个相容组,所述相容组中的任意两个状态之间相容;
将得到的所述相容组合并获得超级相容组,再对所述超级相容组进行编码形成虚拟状态,并获得虚拟NFA。
4.根据权利要求3所述的方法,其特征在于,所述根据所述相容性将NFA中的所有状态分组,获得至少一个相容组的步骤包括:
获得空的第二队列queue,在建立的无向图中一次或多次选取边度数最大的一条边,将该边对应的两个顶点对应的状态压入所述第二队列queue,并从该无向图当中去除这条边,更新剩余无向图当中各项顶点度数和边度数;其中,所述无向图的顶点为NFA的一个状态,边为NFA中两个不相容的状态对应的顶点之间的连线,顶点度数为与该顶点相连的边的总数目,边度数为该边所关联的两个顶点的顶点度数之和;
在建立的无向图中一次或多次选取边度数最大的一条边的过程中,若当前被选中边从无向图当中移除,剩余图变为空,则这条边不压入第二队列queue,拆分这条边的两个关联顶点,各自构成一个单元素的独立集,再使用第二队列queue中收集的边对应的状态对构成新的无向图,并执行所述获得空的第二队列queue的步骤,所述的独立集对应一个相容组;若剩余无向图中不存在边并且非空,则将无向图中剩余顶点构成一个顶点独立集,将第二队列queue中与该独立集中的状态相容的NFA状态加入该独立集中,再使用第二队列queue中剩余的顶点构成新的无向图,并执行所述获得空的第二队列queue的步骤;若第二队列queue空,则过程结束。
5.根据权利要求3所述的方法,其特征在于,所述将得到的所述相容组合并获得超级相容组的步骤包括:
按照相容组状态数的大小进行降序排序,得到降序排列的相容组集合;
从所述降序排列的相容组集合中依次顺序取出相容组并加入到当前占用比特数最少的超级相容组当中,同时更新该超级相容组占用的比特数,其中,每个超级相容组初始占用的比特数为0。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210290345.6/1.html,转载请声明来源钻瓜专利网。