第3章 自动机基础
自动机是一种语言模型,是语言的一种识别工具, 其中的有限自动机(Finite Automata, FA) 被用来处理正规语言,正规语言是编译程序设计中词法分析的对 象。
3.1 正规语言及其描述方法
3.2 有限自动机的定义与分类
3.3 有限自动机的等价转换
3.4 有限自动机的实现
3.5 正规语言描述方法间的相互转换
3.1 正规语言及其描述方法
3.1.1 正规语言的定义
3.1.2 正规语言的另外两种表示方法
3.1.1 正规语言的定义
【定义】 正规语言是指由正规文法定义的语言;程序设计语言中的单词,大都属于此种语言。
正规语言有三种等价的表示方法:
(1) 正规文法 (2) 正规式 (3) 有限自动机
※ 正规语言判定示例
3.1.2 正规语言的另外两种表示方法
※有限自动机表示法说明
※ 正规语言的三种表示法综合示例
3.2 有限自动机的定义和分类
3.2.1 有限自动机的定义
3.2.2 有限自动机所描述的语言
3.2.3 有限自动机的两种表现形式
3.2.4 有限自动机的分类
3.2.1 有限自动机的定义
3.2.2 有限自动机所描述的语言
※ L(FA)的生成或识别过程示例
3.2.3 有限自动机的两种表现形式
3.2.4 有限自动机的分类
3.3 有限自动机的等价转换
3.3.1 有限自动机的等价
3.3.2 有限自动机的确定化算法
3.3.3 有限自动机的最小化算法
3.3.1 有限自动机的等价
有限自动机的等价转换,主要包含两个内容:
(1) 有限自动机的确定化( NFA=>DFA)
-
非确定的有限自动机(NFA) 较易构造,但不好用!
-
确定的有限自动机 (DFA)== 较难构造,但好用==!
-
任何一个非确定的有限机NFA,都可通过有效算 法把其转化为等价的确定的有限机DFA(二者描述 的语言相同)。
(2) 有限自动机的最小化( DFA=>最小的DFA)
- 有限自动机的最小化,又称为有限自动机的化简;是指:对给定的确定的有限自动机DFA1,构造另一个确定的有限自动机DFA2,L(DFA1)=L(DFA2),且DFA2的状态最少。
Ⅰ. 两个自动机的等价
Ⅱ. 两个状态的等价
3.3.2 有限自动机的确定化算法
3.3.3 有限自动机的最小化算法
最小的有限自动机,是指满足下述条件的确定的有限自动机:
(1) 没有无用状态(无用状态已删除)
(2) 没有等价状态(等价状态已合并)
Ⅰ.删除无用状态算法
【定义】无用状态是指自动机从开始态出发,对任何符号串的识别过程都不能到达的状态。
Ⅱ. 合并等价状态算法
【原理】两个状态i与j 等价,当且仅当满足下面两个条件:
① 必须同是结束态,或同是非结束态;
② 对字母表上的所有符号,状态 i和j 必变换到等价状态。
Ⅱ. 合并等价状态算法(划分不等价状态集)
(1) 初始,把状态集Q划分成两个不等价子集 Q1(结束状态集)和Q2(非结束状态集) (2) 把每个Qi再划分成不同的子集,条件是:
对Qi中的两个状态 i 和 j ,若对字母表中的 某个符号,变换到已划分的不同的状态集中, 则 i 和 j 应分离,即
(3) 重复步骤(2),直到每个子集再不能划分为止;
(4) 将最终划分的每个子集中的多个状态合并为一个状态。
※ 有限自动机化简示例
3.4 有限自动机的实现
3.4.1 控制程序设计
3.4.2 变换表存储结构设计
用计算机完成有限自动机的功能,其核心是“变 换”的实现技术。这里介绍的是把变换表按某种方式存储起来,作为知识源来识别单词,实现机制是:
3.4.1 控制程序设计
3.4.2 变换表存储结构设计
变换表的存储结构可选择下述两种方式之一:
(1) 二维数组 ,其下标是(状态,输入符号);
※ 为了适应不同编码语言的需要,状态和输入符号可采取相应的编码形式;通常,使用连续的正整数:0,1,2,3,…。
(2) 压缩变换表,方法是把每个状态行作为子表,状态为索引,并把错误的输入符号合并在一起,如:
3.5 正规语言描述方法间的相互转换
3.5.1 正规文法与有限自动机之间的转换
3.5.2 正规式与有限自动机之间的转换
§ 正规语言有三种等价的表示方法:
(1) 正规文法 (2) 正规式 (3) 有限自动机