[英]State Elimination DFA to Regular Expression
有一种更广为人知且可理解的算法可以完成此任务。
要将DFA G转换为正则表达式,我们首先将G转换为“ GNFA”。 假设G是以下DFA(q是开始状态):
将DFA转换为GNFA的过程如下:
这是生成的GNFA:
然后,我们一次删除介于新的开始状态和新的接受状态之间的每个状态,并调整图表以保持正确性。 该过程的工作方式如下:令x,y和z为DFA中的状态。 另外,转换如下:输入a上的x-> y,输入b上的y-> y和输入c上的y-> z。 假设我们要删除y。 对于从某个节点n到y的每个过渡以及从y到m的每个过渡,我们必须添加一个新的过渡n-> m。 从n到m的过渡将是从n到y的过渡的内容,然后是带有kleene星的过渡y-> y的内容,然后是从y-> m的过渡的内容。 在这种情况下,a上的x-> y,b上的y-> y和c上的y-> z,在删除状态y之后, a(b*)c
上a(b*)c
x-> z会发生转变。
这是我们完整的正则表达式。 使用此过程可以完全避免您面临的任何问题。 但是,我也会为您提供直接答案。 对于初学者来说,上面的部分不是您建议的。 相反,它将变为: 简化为: 这是我们最终的正则表达式,因为底部没有接受状态,因此无关紧要。
您从(q0)状态开始,如果u输入(0),则可以到达最终状态; 相反,如果u输入(1),则无法到达final。 因此,仅考虑状态(q0)(q1)(q2),并对这些状态应用消除规则
消除后,RE将如下
0(0)*1 . (1+0(0)*1)*
从0开始到1结束
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.