Arden 定理
为了找出有限自动机的正则表达式,我们使用 Arden 定理以及正则表达式的属性。
陈述 −
让 P 和 Q 成为两个正则表达式。
如果 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表示从qi到qj的边的标签集合,如果不存在这样的边,则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)*。
问题
构造与下面给出的自动机相对应的正则表达式 −
解决方案 −
此处初始状态为 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*。