买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】NFA到DFA的转换方法及装置_奇安信科技集团股份有限公司;奇安信网神信息技术(北京)股份有限公司_201911415263.8 

申请/专利权人:奇安信科技集团股份有限公司;奇安信网神信息技术(北京)股份有限公司

申请日:2019-12-31

公开(公告)日:2023-08-15

公开(公告)号:CN111078963B

主分类号:G06F16/903

分类号:G06F16/903

优先权:

专利状态码:有效-授权

法律状态:2023.08.15#授权;2020.05.22#实质审查的生效;2020.04.28#公开

摘要:本发明实施例提供一种NFA到DFA的转换方法及装置,所述方法包括:基于创建临时跳转闭包NFA状态编号数组的方式,确定与NFA状态集合对应的跳转NFA状态编号有序列表;根据所述跳转NFA状态编号有序列表创建DFA状态;构建各DFA状态之间的跳转关系,完成NFA到DFA的转换。本发明实施例由于采用基于创建临时跳转闭包NFA状态编号数组的方式确定与NFA状态集合对应的跳转NFA状态编号有序列表,因此,相对于传统的基于Map数据结构的处理方式,本发明实施例具有“无须计算哈希值”和“无须比较多次”的优点,因此,能够节省CPU资源,减少NFA转DFA的执行时间,进而可以提升正则表达式匹配的整体性能。

主权项:1.一种NFA到DFA的转换方法,其特征在于,包括:基于创建临时跳转闭包NFA状态编号数组的方式,确定与NFA状态集合对应的跳转NFA状态编号有序列表;所述临时跳转闭包NFA状态编号数组的长度为NFA状态集合中包含的NFA状态的总量,数组中的有效值为与NFA状态集合中的各个NFA状态对应的跳转闭包NFA状态编号;所述跳转NFA状态编号有序列表中包含有与NFA状态集合中的各个NFA状态对应的跳转闭包NFA状态编号;根据所述跳转NFA状态编号有序列表创建DFA状态;根据各DFA状态中包含的NFA状态之间的跳转关系,构建各DFA状态之间的跳转关系,完成NFA到DFA的转换,其中,所述构建各DFA状态之间的跳转关系,完成NFA到DFA的转换,具体包括:当跳转边列表包含多个跳转边时,执行处理过程:若开始字符等于倒数第二条跳转边的结束字符+1,且跳转的DFA状态与倒数第二条跳转边的DFA状态相同,则将倒数第二条跳转边的结束字符更新为结束字符;若开始字符等于倒数第二条跳转边的结束字符+1,且跳转的DFA状态与倒数第二条跳转边的DFA状态不相同,则在跳转边列表的倒数第一个位置添加跳转边开始字符,结束字符,跳转的DFA状态;若开始字符不等于倒数第二条跳转边的结束字符+1,则在跳转边列表的倒数第一个位置添加跳转边倒数第二条跳转边的结束字符+1,开始字符-1,null,以及,在跳转边列表的最后一个位置添加跳转边开始字符,结束字符,跳转的DFA状态;检测结束字符是否等于字符集最大索引,若等于,则将倒数第一条跳转边从跳转边列表中移除,若不等于,则将倒数第一条跳转边的开始字符修改为结束字符+1,或者所述构建各DFA状态之间的跳转关系,完成NFA到DFA的转换,具体包括:当跳转边列表仅包含一个跳转边时,执行处理过程:若开始字符等于0且结束字符等于字符集最大索引,则清空跳转边列表,并向跳转边列表中添加一个跳转边开始字符,结束字符,跳转的DFA状态;若开始字符等于0且结束字符不等于字符集最大索引,则清空跳转边列表,并向跳转边列表中添加两个跳转边开始字符,结束字符,跳转的DFA状态和结束字符+1,字符集最大索引,null;若开始字符不等于0且结束字符等于字符集最大索引,则清空跳转边列表,并向跳转边列表中添加两个跳转边0,开始字符-1,null和开始字符,结束字符,跳转的DFA状态;若开始字符不等于0且结束字符不等于字符集最大索引,则清空跳转边列表,并向跳转边列表中添加三个跳转边0,开始字符-1,null、开始字符,结束字符,跳转的DFA状态和结束字符+1,字符集最大索引。

全文数据:

权利要求:

百度查询: 奇安信科技集团股份有限公司;奇安信网神信息技术(北京)股份有限公司 NFA到DFA的转换方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。