- 自动机理论教程
- 自动机理论 - 首页
- 自动机理论 - 入门
- 自动机理论 - 历史
- 自动机理论 - 应用
- 自动机理论术语
- 自动机中字符串的基础
- 自动机的集合论
- 语言和文法
- 计算理论中的文法
- 由文法生成的语言
- 乔姆斯基文法分类
- 有限自动机
- 确定性有限自动机 (DFA)
- 非确定性有限自动机 (NFA)
- 从NFA到DFA的转换
- DFA的最小化
- 穆尔机与米利机
- DFA的补集
- 正则表达式
- 自动机中的正则表达式
- 自动机中的阿登定理
- 将正则表达式转换为有限自动机
- 正则文法的泵引理
- 计算理论中的正则集
- 上下文无关文法
- 上下文无关文法 (CFG)
- 上下文无关文法中的二义性
- 上下文无关语言的封闭性
- 简化上下文无关文法
- 乔姆斯基范式 (CNF)
- 格雷巴赫范式 (GNF)
- 上下文无关文法的泵引理
- 下推自动机
- 下推自动机 (PDA)
- 下推自动机的接受
- 从CFG构造PDA
- 下推自动机和语法分析
- 图灵机
- 图灵机 (TM) 基础
- 图灵机接受的语言
- 多磁带图灵机
- 多轨迹图灵机
- 非确定性图灵机
- 半无限带图灵机
- 线性界限自动机 (LBA)
- 可计算性和不可判定性
- 图灵语言的可判定性
- 不可判定语言
- 图灵机停机问题
- 计算理论中的莱斯定理
- 波斯特对应问题 (PCP)
- 自动机理论资源
- 自动机理论 - 快速指南
- 自动机理论 - 资源
- 自动机理论 - 讨论
从正则表达式构造有限自动机
我们可以使用汤姆逊构造法从正则表达式中找出有限自动机。我们将把正则表达式简化为最小的正则表达式,并将这些表达式转换为NFA,最后转换为DFA。
一些基本的RA表达式如下:
情况1 - 对于正则表达式“a”,我们可以构造以下FA:
情况2 - 对于正则表达式“ab”,我们可以构造以下FA:
情况3 - 对于正则表达式(a+b),我们可以构造以下FA:
情况4 - 对于正则表达式(a+b)*,我们可以构造以下FA:
方法
步骤1 从给定的正则表达式构造一个带有空移动的NFA。
步骤2 去除NFA中的空转移,并将其转换为等价的DFA。
问题
将以下RA转换为等价的DFA:1(0+1)*0
解决方案
我们将连接三个表达式“1”、“(0+1)*”和“0”。
现在我们将移除ε转移。在从NDFA中移除ε转移后,我们得到以下结果:
这是一个对应于RE - 1(0+1)*0的NDFA。如果要将其转换为DFA,只需应用第1章中讨论的将NDFA转换为DFA的方法。
带有空移动的有限自动机 (NFA-ε)
带有空移动的有限自动机 (FA-ε) 不仅在从字母集接收输入后转换,而且在没有任何输入符号的情况下转换。这种无需输入的转换称为空移动。
NFA-ε 由一个 5 元组 (Q, ∑, δ, q0, F) 形式表示,包括
Q - 一个有限的状态集
∑ - 一个有限的输入符号集
δ - 一个转移函数 δ : Q × (∑ ∪ {ε}) → 2Q
q0 - 一个初始状态 q0 ∈ Q
F - Q 的一组最终状态/状态 (F⊆Q)。
上述(FA-ε) 接受一个字符串集 - {0, 1, 01}
从有限自动机中移除空移动
如果在一个NDFA中,顶点X到顶点Y之间存在ϵ-移动,我们可以使用以下步骤将其移除:
- 查找从Y发出的所有边。
- 复制从X开始的所有这些边,而不更改边标签。
- 如果X是初始状态,则使Y也成为初始状态。
- 如果Y是最终状态,则使X也成为最终状态。
问题
将以下NFA-ε 转换为没有空移动的NFA。
解决方案
步骤1 -
这里 ε 转移在q1和q2之间,所以设q1为X,qf为Y。
这里从qf发出的边是对于输入0和1到qf。
步骤2 -
现在我们将复制从q1开始的所有这些边,而不更改从qf开始的边,并获得以下FA:
步骤3 -
这里q1是初始状态,所以我们也使qf成为初始状态。
所以FA变为:
步骤4 -
这里qf是最终状态,所以我们也使q1成为最终状态。
所以FA变为: