一种从有限自动机生成简短正则表达式的方法

文档序号:1846552 发布日期:2021-11-16 浏览:18次 >En<

阅读说明:本技术 一种从有限自动机生成简短正则表达式的方法 (Method for generating short regular expression from finite automaton ) 是由 高俊涛 刘云峰 文必龙 王志宝 王永安 于 2021-08-23 设计创作,主要内容包括:本发明公开了一种从有限自动机生成简短正则表达式的方法,包括:S1、对于候选状态消减序列空间,定义临时变量S*存储当前最优状态消减序列,定义临时变量L存储当前最短正则表达式长度;S2、用表达式自动机描述状态消减的中间结果,根据表达式自动机规模估算生成的正则表达式的长度;S3、基于临时变量S*和L,对候选状态消减序列空间进行剪枝处理,提高状态消减序列的搜索效率;S4、按照搜索到的最优状态消减序列,采用状态消减法将有限自动机转换成简短的正则表达式。本发明能被应用于软件行为建模、基于模型的测试、软件工程、计算与语言的研究等领域,显著地提高自动机生成较短正则表达式的效率。(The invention discloses a method for generating a short regular expression from a finite automaton, which comprises the following steps: s1, for the candidate state reduction sequence space, defining a temporary variable S to store the current optimal state reduction sequence, and defining a temporary variable L to store the length of the current shortest regular expression; s2, describing an intermediate result of state reduction by using an expression automaton, and estimating the length of the generated regular expression according to the scale of the expression automaton; s3, pruning the candidate state subduction sequence space based on temporary variables S and L, and improving the searching efficiency of the state subduction sequence; and S4, converting the finite automaton into a short regular expression by adopting a state subtraction method according to the searched optimal state subtraction sequence. The method can be applied to the fields of software behavior modeling, model-based testing, software engineering, calculation, language research and the like, and the efficiency of generating the shorter regular expression by the automaton is obviously improved.)

一种从有限自动机生成简短正则表达式的方法

技术领域

本发明涉及正则语言模型的计算机技术领域,尤其是指一种从有限自动机生成简短正则表达式的方法。

背景技术

正则表达式与有限自动机具有相同的表达能力,同属于正则语言模型。既可以将正则表达式转换成等价的有限自动机,也可以将有限自动机转换成等价的正则表达式。由于正则表达式比较适合人类阅读,现在已成为计算机各类系统工具和开发语言普遍采用的文本模式描述工具。将有限自动机转换为简明的正则表达式有助于正则语言理解和应用,也可以更广泛地应用自动机学习的研究成果,研究从有限自动机生成简明的正则表达式具有重要的理论价值和现实意义。从有限自动机生成正则表达式,已知的使用启发式算法优化消减序列如:流量法、必经路径法、回路计算法、动态度乘积法、静态度乘积法、DM权重法等方法,生成的正则表达式总体长度均较长。

发明内容

本发明的目的在于克服现有技术的缺点与不足,提出了一种从有限自动机生成简短正则表达式的方法,该方法引入了剪枝思想,为正则表达式生成问题研究提供了一条新思路,可有效提高正则表达式质量。

为实现上述目的,本发明所提供的技术方案为:一种从有限自动机生成简短正则表达式的方法,该方法是利用状态消减法将有限自动机转换为正则表达式,通过搜索状态消减序列的候选集合,获得最优状态消减序列,最终生成简短的正则表达式;其包括以下步骤:

S1、对于候选状态消减序列空间,定义临时变量S*存储当前最优状态消减序列,定义临时变量L存储当前最短正则表达式长度,变量S*和L作为搜索候选状态消减序列空间过程的临时变量;

S2、用表达式自动机描述状态消减的中间结果,根据表达式自动机规模估算生成的正则表达式的长度;

S3、基于临时变量S*和L,对候选状态消减序列空间进行剪枝处理,提高状态消减序列的搜索效率;

S4、按照搜索到的最优状态消减序列,采用状态消减法将有限自动机转换成简短的正则表达式。

进一步,在步骤S1中,确定有限自动机进行状态消减过程中,所有可能的状态消减序列组成一个候选状态消减序列空间,定义临时变量S*存储当前最优状态消减序列,定义临时变量L存储当前最短正则表达式的长度。

进一步,在步骤S2中,对有限自动机进行状态消减的每个阶段需要选择一个状态进行消减并产生一个表达式自动机,用EAs表示,其中EA表示当前表达式自动机,s是一个状态序列,s既能够是包含所有待消减状态的完整状态消减序列,也能够是不完整的只包含部分待消减状态的状态消减子序列;在状态消减过程中,每个阶段产生的表达式自动机依赖于当前消减的状态和前一阶段的表达式自动机,依据表达式自动机间依赖关系将给定有限自动机生成的表达式自动机全集构造成一棵树,树上每个结点代表一个表达式自动机,叶子结点对应的表达式自动机依赖于父结点对应的表达式自动机,由于叶子结点对应的表达式自动机只包含初态和终态,所以叶子结点唯一确定一个正则表达式,正则表达式的长度就是叶子结点表达式自动机的字符规模。

进一步,在步骤S3中,采用剪枝策略的最优序列搜索算法OSSAP(An)对候选状态消减序列空间进行全局搜索,在搜索过程中调用NextSeq(l,d)算法进行剪枝操作,对每条状态消减序列使用Eliminate(EA,qk)算法进行状态消减;将|EA|与当前记录的最短长度L做比较,以判断是否需要进行剪枝操作;如果|EA|小于L,那么需要进行剪枝操作;如果|EA|大于L,则不需要进行剪枝操作;最后,返回不需要进行剪枝操作的状态消减序列或已进行剪枝操作的状态消减序列,即返回最优状态消减序列;其中,An表示需要进行n次消减操作的有限自动机,l表示状态消减序列,d表示剪枝深度,EA表示当前表达式自动机,|EA|表示当前表达式自动机的字符规模,qk表示第k个状态消减序列。

进一步,所述NextSeq(l,d)算法实现以下过程:

按字典序枚举下一个未被剪掉的状态消减序列,如果状态消减序列长度与搜索到的当前表达式自动机树节点深度相等,则不需要剪枝,否则跳过以根节点到当前搜索节点为前缀的状态消减序列来完成剪枝;对搜索节点之后的后缀状态消减序列按升序排列以保证按字典序枚举状态消减序列。

本发明与现有技术相比,具有如下优点与有益效果:

1、本发明通过剪枝操作显著提高了最优消减序列的生成效率以及生成简短正则表达式的效率。

2、本发明能被应用于软件行为建模、基于模型的测试、软件工程、计算与语言的研究,特别适合于提高确定有限自动机对复杂行为的建模和处理能力,提高正则表达式质量,充分利用自动机学习领域研究成果,促进序列型大数据处理技术的发展。

附图说明

图1是本发明方法的流程示意图。

图2是本发明方法的状态消减过程图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

参见图1所示,本实施例公开了一种从有限自动机生成简短正则表达式的方法,包括以下步骤:

1)确定有限自动机进行状态消减过程中,所有可能的状态消减序列组成一个候选状态消减序列空间,定义临时变量S*存储当前最优状态消减序列,定义临时变量L存储当前最短正则表达式的长度,变量S*和L作为搜索候选状态消减序列空间过程的临时变量。

2)对有限自动机进行状态消减的每个阶段需要选择一个状态进行消减并产生一个表达式自动机,用EAs表示,其中EA表示当前表达式自动机,s是一个状态序列,s既能够是包含所有待消减状态的完整状态消减序列,也能够是不完整的只包含部分待消减状态的状态消减子序列;在状态消减过程中,每个阶段产生的表达式自动机依赖于当前消减的状态和前一阶段的表达式自动机,依据表达式自动机间依赖关系将给定有限自动机生成的表达式自动机全集构造成一棵树,树上每个结点代表一个表达式自动机,叶子结点对应的表达式自动机依赖于父结点对应的表达式自动机,由于叶子结点对应的表达式自动机只包含初态和终态,所以叶子结点唯一确定一个正则表达式,正则表达式的长度就是叶子结点表达式自动机的字符规模。

3)采用剪枝策略的最优序列搜索算法OSSAP(An)对候选状态消减序列空间进行全局搜索,在搜索过程中调用NextSeq(l,d)算法进行剪枝操作,对每条状态消减序列使用Eliminate(EA,qk)算法进行状态消减;将|EA|与当前记录的最短长度L做比较,以判断是否需要进行剪枝操作;如果|EA|小于L,那么需要进行剪枝操作;如果|EA|大于L,则不需要进行剪枝操作;最后,返回不需要进行剪枝操作的状态消减序列或已进行剪枝操作的状态消减序列,即返回最优状态消减序列;其中,An表示需要进行n次消减操作的有限自动机,l表示状态消减序列,d表示剪枝深度,EA表示当前表达式自动机,|EA|表示当前表达式自动机的字符规模,qk表示第k个状态消减序列。

所述NextSeq(l,d)算法实现以下过程:按字典序枚举下一个未被剪掉的状态消减序列,如果状态消减序列长度与搜索到的当前表达式自动机树节点深度相等,则不需要剪枝,否则跳过以根节点到当前搜索节点为前缀的状态消减序列来完成剪枝;对搜索节点之后的后缀状态消减序列按升序排列以保证按字典序枚举状态消减序列。

4)按照搜索到的最优状态消减序列,采用状态消减法将有限自动机转换成简短的正则表达式。

参见图2所示,本实施例上述方法的状态消减过程,包括:

步骤1:有限自动机A1,状态q1是初态,状态q4是终态;

步骤2:确定有限自动机A1消减状态q3后得到的表达式自动机A2,即将从q1到q3,q3到q2的转移函数合并至q1到q2的转移函数当中;

步骤3:表达式自动机A2消减q2后得到的表达式自动机A3,即将从q1到q2,q2到q4的转移函数合并至q1到q4的转移函数当中;

步骤4:将从q1到q1和q4到q4的转移函数合并至q1到q4的转移函数中形成的最终表达式自动机A4,与它等价的正则表达式为a*(d|(b|ck*j)h)p*。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种罐区管理的工业流程编辑系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!