繁体   English   中英

我如何将正则表达式转换为有限自动机?

[英]How would I convert regular expression to finite automata?

如何将以下正则表达式更改为有限自动机?

(abUb)(bUaaa)b*b((a*b)*Ub)*

注意:在这种情况下,U表示联合

这个正则表达式有五个顶级连接组件。 根据可以从Kleene定理的一部分中恢复的算法,你可以为这些算法制作NFA-Lambdas,然后通过将一个的最终状态连接到下一个的初始状态来形成连接。

当你看到一个联合时,这意味着你制作两台机器并通过一个带有两个lambda转换的新启动状态来组合它们。

Kleene闭包更多涉及,但基本上使机器重复,然后通过从旧的最终状态添加一个新的接受启动状态和循环来转换它。

基本情况是单个字母的机器,它是两个状态,初始和最终,具有适当标记的转换。

从最简单的机器(最里面的子表达式)到整个事物递归地工作,根据需要组合。 尽可能简化结果,可能转换为最小DFA。

有一个名为Automatic Java Code Generator for Regular Expressions and Finite Automata的应用程序,可自动生成给定正则表达式或有限自动机的NFA,DFA(包括转换表)和Java代码。 可以从以下链接下载: www.s-solutions.info您可以随时检查您的解决方案是否正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM