《编译原理》第3章有穷自动机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理
武汉大学计算机学院编译原理课程组
本章内容简介
·DFA、NFA
·DFA到NFA的转换
·正规文法与FA
·正规表达式与FA
第3章有穷自动机
自动机是一种能进行运算并实现自我控制的装置,计算机就是一部自动机。自动机是描述符号串处理的强有力的工具。
“确定”:下一个输入字符惟一地确定了下一个当前状态。
1. 确定的有穷自动机DFA
DFA=(Q ,∑,t,q 0,F)
3.1有穷自动机的形式定义
Q——有穷非空的状态集。∑——有穷的输入字母表。t——映射Q ×Σ→Q 。q 0——∈Q ,是开始状态。F——⊆Q ,非空终止状态集合。
3.1 FA的形式定义—DFA
2. FA的表示:
①状态转换表
②状态转换图
DFA映射的扩充,使得DFA可以描述对符号串的识别。
DFA=(Q ,Σ,t,q 0,F)扩充的映射
t:Q ×Σ*→Q
定义为
⑴t(q,ε)=q
⑵
t(q,aα)=t(t(q,a),α)
其中q ∈Q ,a ∈Σ, α∈Σ*。
3.1 FA 的形式定义——DFA 的扩充
DFA=(Q ,Σ,t,q 0,F),如果t(q 0,α)=∈F ,则α可被DFA接受。被DFA 识别的符号串集合,记为L(A)。
3.1 FA 的形式定义——FA 的等价性
如果两个有穷自动机A 1和A 2满足
L(A 1)=L(A 2)
则称自动机自动机A 1和A 2是等价的。
FA 的等价性举例
DFA A=({q 0,q 1},{a,b},t,q 0,{q 0})t(q 0,a)=q 1,t(q 1,b)=q 0
DFA B=({q 0′,q 1′,q 2′},{a,b},t′,q 0′,{q 0′,q 2′})t′(q 0′,a)=q 1′,t′(q 1′,b)=q 2′,t′(q 2′,a)=q 1′
L(A)=L(B)={(ab)n |n≥0}
3. 非确定的有穷自动机NFA NFA=(Q,∑,t,Q
0,F)
3.1有穷自动机的形式定义
Q——有穷非空的状态集。
∑——有穷的输入字母表。
t——映射Q×Σ→Q的幂集。
Q0——⊆Q,是开始状态集。
F——⊆Q,非空终止状态集合。
NFA=(Q ,Σ,t,Q 0,F)扩充的映射
t:Q ×Σ*→Q 的幂集
定义为⑴
t(q,ε)=q ⑵t(q,aα)=t(q 1,α)∪t(q 2,α)∪…∪t(q n ,α)其中a ∈Σ, α∈Σ*,t(q,a)∈{q 1 ,q 2 ,…,q n }。3.1 FA 的形式定义——NFA 的扩充如果q ∈t(q 0,α) ,q 0∈Q 0,q ∈F,
则α可被NFA接受。被NFA识别的符号串集合,记为L(A)。
·DFA 最小化——构造状态集合的划分
·确定化——子集法、造表法
NDFA 到DFA 的转换:
3.2 NFA到DFA的转换
3.2 NFA到DFA的转换——子集法、造表法
①状态子集的ε闭包
假设I是状态集合Q的一个子集。
定义I的ε闭包(ε-CLOSURE(I))为:
ⅰ.如果状态P∈I,则P∈ε-CLOSURE(I);
ⅱ.如果状态P∈I,则Pˊ∈ε-CLOSURE(I)。
其中Pˊ为由状态P出发,经任意条ε弧能到达的Q中的状态。
3.2 NFA到DFA的转换——子集法、造表法
子集
②I
a
设I是状态集Q的一个子集。
由I中的状态出发,经历一条a弧(跳过a弧前的任意条ε弧)可到达的状态的集合称为J,则
I a=ε-CLOSURE(J)
NFA到DFA的转换
③利用子集法构造确定的有穷自动机
′,F′)。与NFA 假设已知的NFA为(Q′,Σ′,t′,Q
,F)。
等价的DFA为(Q,Σ,t,Q
Σ:可由NFA所含有的输入字母集合得到。
Q:由Q′的一些子集组成。
q0:是包含NFA的开始状态在内的Q ′的一个子集。
F:由包含NFA的终止状态F ′在内的Q ′的一些子集组成。
3.2 NFA到DFA的转换——DFA化简
寻找一个状态数比M更少的DFA Mˊ,使得M和Mˊ所识别的字符串相同,即L(M)=L(Mˊ)。
DFA最小化的关键在于把它的状态集分成一些两两互不相交的子集,使得任何两个不同的子集中的状态都是可区别的,而同一子集中的任何两个状态都是等价的。
等价状态:如果从DFA 的某个状态P出发能识别某一字符串x而停止于终态,那么从Q出发也能识别字符串x而停止于终态;反之亦然。则称状态P和Q是等价的。如果P和Q不等价,则说P和Q是可区分的。
3.2 NFA到DFA的转换——DFA化简
步骤二取每一组中的一个状态作代表。
步骤三删去多余死状态。
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A 。•令G 的终结符号集为A 的字母表;
•增加一个终止状态Z (Z ∉V N );
•形如U →a 的规则,引一条从状态U 到终止状态Z 的标记为a 的弧;•形如U →aW 的规则,引一条从状态U 到W 的a 弧。
•G 的非终结符号作为A 的状态,G 的开始符号为A 的开始状态;