Arden定理



为了找出有限自动机的正则表达式,我们使用Arden定理以及正则表达式的性质。

陈述

PQ为两个正则表达式。

如果P不包含空串,则R = Q + RP 有唯一解R = QP*

证明

R = Q + (Q + RP)P [代入R = Q + RP]

= Q + QP + RPP

当我们反复递归地代入R的值时,我们得到以下等式−

R = Q + QP + QP2 + QP3…..

R = Q (ε + P + P2 + P3 + …. )

R = QP* [因为P*表示(ε + P + P2 + P3 + ….)]

因此,得证。

应用Arden定理的假设

  • 状态转换图不能有空转移
  • 它必须只有一个初始状态

方法

步骤1 − 为具有n个状态和初始状态q1的DFA的所有状态创建如下形式的等式。

q1 = q1R11 + q2R21 + … + qnRn1 + ε

q2 = q1R12 + q2R22 + … + qnRn2

…………………………

…………………………

…………………………

…………………………

qn = q1R1n + q2R2n + … + qnRnn

Rij表示从qiqj的边的标签集,如果没有这样的边,则Rij = ∅

步骤2 − 解这些方程以获得最终状态关于Rij的方程

问题

构造与下面给出的自动机对应的正则表达式−

Finite Automata

解答

这里初始状态和最终状态是q1

三个状态q1、q2和q3的方程如下:

q1 = q1a + q3a + ε (ε转移是因为q1是初始状态)

q2 = q1b + q2b + q3b

q3 = q2a

现在,我们将求解这三个方程:

q2 = q1b + q2b + q3b

= q1b + q2b + (q2a)b (代入q3的值)

= q1b + q2(b + ab)

= q1b (b + ab)* (应用Arden定理)

q1 = q1a + q3a + ε

= q1a + q2aa + ε (代入q3的值)

= q1a + q1b(b + ab*)aa + ε (代入q2的值)

= q1(a + b(b + ab)*aa) + ε

= ε (a+ b(b + ab)*aa)*

= (a + b(b + ab)*aa)*

因此,正则表达式是(a + b(b + ab)*aa)*。

问题

构造与下面给出的自动机对应的正则表达式−

Finite Automata1

解答

这里初始状态是q1,最终状态是q2

现在我们写下方程:

q1 = q10 + ε

q2 = q11 + q20

q3 = q21 + q30 + q31

现在,我们将求解这三个方程:

q1 = ε0* [因为,εR = R]

所以,q1 = 0*

q2 = 0*1 + q20

所以,q2 = 0*1(0)* [根据Arden定理]

因此,正则表达式是0*10*。

广告