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 定理的假设

  • 转换图不得有 NULL 转换
  • 它必须只有一个初始状态

方法

步骤 1 −为具有 n 个状态且初始状态为 q1 的 DFA 的所有状态创建以下形式的方程。

q1 = q1R11 + q2R21 + … + qnRn1 + ε

q2 = q1R12 + q2R22 + … + qnRn2

…………………………

…………………………

…………………………

…………………………

qn = q1R1n + q2R2n + … + qnRnn

Rij表示从qiqj的边的标签集合,如果不存在这样的边,则Rij = ∅

步骤2 −解这些方程,得到关于 Rij

的最终状态方程

问题

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

有限自动机

解决方案

此处的初始状态和最终状态为 q1

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

q1 = q1a + q3a + ε (ε 移动是因为 q1 是初始状态 0

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* [As, εR = R]

因此,q1 = 0*

q2 = 0*1 + q20

因此,q2 = 0*1(0)* [根据 Arden 定理]

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