浪漫的定理Arden定理对于检验两个正则表达式的等价性以及将DFA转换为正则表达式非常有用。 让我们看看它在将DFA转换为正则表达式中的使用。 在给定DFA的情况下,使用以下算法构建正则表达式。 1.让问1是初始状态。 2.有q2,问3.,问4……问n状态数。最终态可能是某个qj其中j<= n。 3.让α霁表示从q开始的转换j要问我. 4.计算问我这样 问我=α霁*问j 如果问j是一个开始状态,那么我们有: 问我=α霁*问j+ε 5.类似地,计算最终给出正则表达式'r'的最终状态。 例子:为给定的DFA构造正则表达式 ![]() 解决方案: 我们把方程写下来 Q1 = Q1 0 + ε 因为q1是开始状态,所以ε会被加上,输入0从q1到q1,所以我们这样写 同样的, Q2 = q1 1 + Q2 1 q3 = Q2 0+ q3 (0+1) 因为最终状态是q1和q2,我们只关心解q1和q2。先看q1 Q1 = Q1 0 + ε 我们可以重新写成 Q1 = ε + Q1 0 这类似于R = Q + RP,并简化为R = OP*。 假设R = q1, Q = ε, P = 0 我们得到了 Q1 = ε.(0)* Q1 = 0* (ε。* = R *) 把这个值代入q2,我们会得到 q2 = 0* 1 + q2 1 q2 = 0* 1 (1)* (R = Q + RP→Q P*) 正则表达式由 R = q1 + q2 = 0*+ 0*1.1*R = 0*+ 0*1+(1.1*= 1+)
下一个话题
摩尔机
|