📅  最后修改于: 2020-11-26 10:13:41             🧑  作者: Mango
为了找出有限自动机的正则表达式,我们将Arden定理与正则表达式的属性一起使用。
声明–
令P和Q为两个正则表达式。
如果P不包含空字符串,则R = Q + RP具有唯一的解决方案,即R = QP *
证明–
R = Q +(Q + RP)P [输入值R = Q + RP之后]
= Q + QP + RPP
当我们一次又一次地递归R的值时,我们得到以下等式-
R = Q + QP + QP 2 + QP 3 …..
R = Q(ε+ P + P 2 + P 3 +…。)
R = QP * [如P *表示(ε+ P + P2 + P3 +…。)]
因此,证明了。
步骤1-为具有初始状态为q 1的n个状态的DFA的所有状态创建方程,形式如下。
q 1 = q 1 R 11 + q 2 R 21 +…+ q n R n1 +ε
q 2 = q 1 R 12 + q 2 R 22 +…+ q n R n2
…………………………
…………………………
…………………………
…………………………
q n = q 1 R 1n + q 2 R 2n +…+ q n R nn
R ij表示从q i到q j的边的标签集,如果不存在这样的边,则R ij =∅
步骤2-求解这些方程,以R ij的形式得出最终状态的方程
问题
构造与下面给出的自动机相对应的正则表达式-
解决方案–
在此,初始状态和最终状态为q 1 。
三种状态q1,q2和q3的等式如下-
q 1 = q 1 a + q 3 a +ε (ε移动是因为q1是初始状态0
q 2 = q 1 b + q 2 b + q 3 b
q 3 = q 2 a
现在,我们将解决这三个方程-
q 2 = q 1 b + q 2 b + q 3 b
= q 1 b + q 2 b +(q 2 a)b (q 3的替换值)
= q 1 b + q 2 (b + ab)
= q 1 b(b + ab)* (应用Arden定理)
q 1 = q 1 a + q 3 a +ε
= q 1 a + q 2 aa +ε (q 3的替换值)
= q 1 a + q 1 b(b + ab *)aa +ε (q 2的替换值)
= q 1 (a + b(b + ab)* aa)+ε
=ε(a + b(b + ab)* aa)*
=(a + b(b + ab)* aa)*
因此,正则表达式为(a + b(b + ab)* aa)*。
问题
构造与下面给出的自动机相对应的正则表达式-
解决方案–
这里的初始状态是q 1 ,最终状态是q 2
现在我们写下等式-
q 1 = q 1 0 +ε
q 2 = q 1 1 + q 2 0
q 3 = q 2 1 + q 3 0 + q 3 1
现在,我们将解决这三个方程-
q 1 =ε0* [As,εR= R]
因此, q 1 = 0 *
q 2 = 0 * 1 + q 2 0
因此, q 2 = 0 * 1(0)* [根据Arden定理]
因此,正则表达式为0 * 10 *。