[发明专利]一种基于图搜索方法加速epsilon闭包计算的方法及系统有效
| 申请号: | 202010412344.9 | 申请日: | 2020-05-15 |
| 公开(公告)号: | CN111753150B | 公开(公告)日: | 2023-10-13 |
| 发明(设计)人: | 张春燕;刘燕兵;卢毓海;谭建龙;郭莉 | 申请(专利权)人: | 中国科学院信息工程研究所 |
| 主分类号: | G06F16/9032 | 分类号: | G06F16/9032 |
| 代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 陈艳 |
| 地址: | 100093 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 搜索 方法 加速 epsilon 计算 系统 | ||
本发明公开一种基于图搜索方法加速epsilon闭包计算的方法及系统,涉及计算机领域,针对传统闭包计算整体消耗时间长的缺陷,为了优化闭包算法,利用图搜索的方法,在NFA构造DFA的过程中对现有的方法进行优化,加速了DFA的构造过程。
技术领域
本发明涉及计算机领域,具体涉及一种基于图搜索方法加速epsilon闭包计算的方法及系统。
背景技术
正则表达式匹配通常应用在扫描过滤场景下,在安全检测、信息过滤等应用中发挥着重要作用。通常实现正则表达式匹配需要将多个正则表达式进行解析,形成解析树,根据解析树构造NFA(Nondeterministic Finite Automaton,非确定有限状态自动机),再从NFA转化为DFA(Deterministic Finite Automaton,确定有限状态机)。当待匹配的字符串需要匹配时,从DFA初始状态进行匹配,如果匹配成功,则到达终止状态,报告此正则表达式匹配成功;如果匹配不成功,则无法到达终止状态,或者在其转移过程中就匹配失败。当然,也有直接应用NFA对字符串进行匹配,但是由于空转移或转移状态的不确定性,匹配时间会延长。图1是文本中搜索正则表达式的经典方法。本发明中只讨论将NFA转化为DFA,并使用DFA搜索的匹配方式。
通常从NFA构造DFA的方法仅依赖于那些可到达的状态。该算法使NFA的状态集合标识DFA中的状态,简单的办法是使用布尔数组来表示这些集合。下述的伪代码给出了对NFA中的每个状态s计算epsilon闭包E(s)的算法,其结果是状态s对应的一个状态集合。该算法由开始E(s)={s}开始,重复遍历整个自动机寻找epsilon转移。对于每一个epsilon转移,将目标状态的epsilon闭包加入源状态的epsilon闭包。一直重复这个过程,直到没有新的状态(或闭包)出现。
正则匹配领域中将此种方法称为epsilon闭包算法。而这种方法针对正则表达式为或的规则下效率比较低。正则表达式为(AT|GA)((AG|AAA)*),其按照Thompson方法构造的NFA如图2所示,按照传统的epsilon闭包算法构造的DFA如图3所示,构造过程见表1。
表1最终NFA的epsilon闭包E(s)
现有的技术方案对于正则规则为或(例如AA|GA中的“|”)时,在构造NFA时会造成很多空转移状态,在进行闭包运算时,很容易造成状态空间的爆炸,即在从NFA构造DFA的传统算法中会有大量频繁加入的状态集合,使得整个构建DFA过程的时间变得很长。
发明内容
本发明针对传统闭包计算整体消耗时间长的缺陷,提出一种基于图搜索方法加速epsilon闭包计算的方法及系统,为了优化闭包算法,利用图搜索的方法,在NFA构造DFA的过程中对现有的方法进行优化,加速了DFA的构造过程。
为实现上述目的,本发明采用的技术方案如下:
一种基于图搜索方法加速epsilon闭包计算的方法,包括以下步骤:
将NFA状态下空转移集合的出边状态和入边状态按照入边状态编号由大到小排序,将排序第一的状态作为当前状态开始计算;
每次循环当前状态时,首先默认所有状态都未被标注过,利用一个栈来标注出已经计算过的空转移状态,标注出所有NFA未进栈的状态和已进栈的状态,将当前状态压入栈中并标注为已进栈,未入栈表示还未标注;然后弹出栈顶元素并加入到当前闭包集合中,对弹出栈顶元素的状态能到达并未标注过的空转移边,即出边状态压进栈中,便于后续遍历栈中含有空转移边状态;
如果对应入边的出边状态已经进栈,则继续遍历,否则查询该出边状态的闭包集合并判断是否为空,如果不为空,则将出边状态对应的闭包集合加入到当前状态的闭包集合中,否则将出边状态压入栈中并标记为已经进栈;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010412344.9/2.html,转载请声明来源钻瓜专利网。





