先决条件 – FA 介绍、正则表达式、语法和语言、从正则表达式设计 FA
有两种方法可以将 FA 转换为正则表达式 –
1. 状态消除法——
- 第1步 –
如果开始状态是一个接受状态或有转换,添加一个新的非接受开始状态,并在新的开始状态和以前的开始状态之间添加一个 € 转换。 - 第2步 –
如果有多个接受状态或单个接受状态有转换,则添加一个新的接受状态,使所有其他状态不接受,并添加从每个先前接受状态到新接受状态的 € 转换。 - 第 3 步 –
依次对于每个非启动非接受状态,消除该状态并相应地更新转换。
示例:-
解决方案:-
第1步
第2步
第 3 步
2. Arden 定理——设 P 和 Q 是 2 个正则表达式。如果 P 不包含空字符串,则 R 中的以下方程,即 R = Q + RP,有一个唯一解 R = QP*
假设——
- 转移图不应该有€-moves。
- 它必须只有一个初始状态。
使用 Arden 定理找到确定性有限自动机的正则表达式 –
- 为了获得自动机的正则表达式,我们首先为所有状态创建给定形式的方程
q 1 = q 1 w 11 +q 2 w 21 +…+q n w n1 +€(q 1是初始状态)
q 2 = q 1 w 12 +q 2 w 22 +…+q n w n2
.
.
.
q n = q 1 w 1n +q 2 w 2n +…+q n w nn
w ij是表示从 q i到 q j边的标签集的正则表达式注意 –对于平行边,表达式中将有许多该状态的表达式。
- 然后我们求解这些方程以获得关于 w ij 的q i方程,该表达式是所需的解,其中 q i是最终状态。
示例:-
解决方案
:-
这里初始状态是q 2 ,最终状态是q 1 。
三个状态q 1 、q 2和q 3的方程如下?
q 1 = q 1 a + q 3 a + €(€ 移动是因为 q 1是初始状态)
q 2 = q 1 b + q 2 b + q 3 b
q 3 = q 2
现在,我们将解决这三个方程?
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)*(应用阿登定理)
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)*。
GATE CS 角问题
练习以下问题将帮助您测试您的知识。所有问题都在前几年的 GATE 或 GATE 模拟测试中提出。强烈建议您练习它们。
- GATE CS 2008,问题 52
- GATE CS 2007,问题 74
- GATE CS 2014 (Set-1),问题 25
- GATE CS 2014 (Set-1),问题 65
- GATE IT 2006,问题 5
- GATE CS 2013,问题 33
- GATE CS 2012,问题 12