《编译原理》2.2第二章形式语言与自动机理论基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

若q∈I,则从q出发经过任意条ε弧而能到达的任何 状态q`,则q`∈ε-closure(I)。
——从状态集合I中任一状态出发,仅沿弧到达的状态集合。
从NFA构造DFA的方法
a 1 5 2 4 a 3 7 {1,2} I={5} _closure(I)= {5,6,2} I= {1,5} ε-closure({1,5})= {1,2,5,6} 8 6
即对于ω,(ω∈Σ*)有:f(q1,ω)= p1 ,f(q2,ω)=p2 , p1 ,p2∈Z或p1 ,p2∉Z,则q1,q2等价,记作q1∼q2 。 如果两个状态不等价,则称q1,q2是可区别的。
43
例: b C a B b a
开 始
A
b a
b
D
a A和B是可区别的状态 A和C是不可区别的状态
0 1 q0 0 1 q0 1
1
{q0}
0 0,1
1
{q1} 1
{q0,q1}
NFA M
DFA M
24
FA的等价性
问题: 如何将NFA M转换成所对应的 DFA M 方法: 用M 的一个状态对应M的一个状态集合,用这种方 法,能从一个NFA M 构造一个DFA M ,称作子集 构造法。
B B D E
{1,2,4,5,6,f} D {1,2,4,6,f} E {1,2,3,6,f} F
F {1,2,3,6,f} F {1,2,3,6,f} {1,2,3,5,6,f} C
{1,2,4,5,6,f} D {1,2,4,5,6,f} D {1,2,4,6,f} E
与NFA等价的DFA
a

NFA N=({S,P,Z},{0,1},f,{S,P},{Z})
其中 f(S,0)={P} f(P,1)={Z} f(S,1)={S,Z} f(Z,0)={P} f(Z,1)={P}

画出状态图
1
1
S 0,1 Z
0
1
P
17
矩阵表示
矩阵表示
S P Z 0 {P} {} {P} 1 {S,Z} {Z} {P} 0 0 1
NFA在实际中更具普遍性。
15
非确定的有限自动机NFA M
定义2.27:非确定有限自动机M是一个五元组 M=(Q,Σ ,f,q0, Z) 其中:
Σ,Q,Z同DFA
q0 是一个初态集 f是一个从Q Σ*到Q的子集的映射,即 f:Q Σ * 2Q 注意:后继状态不是惟一的
16
例:
0,1,2,4,7
b
5,6,1,2,4,7 3 5,9,6,1,2,4,7 4
3 5,10,6,1,2,4,7 5 5,6,1,2,4,7 3
5,6,1,2,4,7
37
NFA的确定化

有NFA M’如下图所示。
38
NFA的确定化

练习
a a 3 a 5 b 4 b a
i

b
1

2

6 b

f

状态矩阵表示
10
DFA M 接受的语言

∑*上的符号串w被DFA M接受
M=(Σ ,Q,f,S,Z)
若ω ∑ * ,f(S, ω)=P,其中S为 M的开始状态, P Z,Z为终态集。
则称ω为DFA M所接受(识别).

确定的自动机M所识别的字符串的全体称为M识 别的语言,记为L(M)
设NFA M' =(Q,Σ,f,q0,Z),假定I ⊂Q,a∈Σ,则 定义Ia=ε-closure(J),其中J是所有从ε-closure(I)出发, 经过一条a弧而到达的状态集。
a
5 2
4

6
1
a
a

3
7

8
I={1} , -closure(I)={1,2};(I={1,2}) move({1,2},a)= {5,3,4} (J={5,3,4}) -closure({5,3,4})= {2,3,4,5,6,7,8};
DFA的最小化就是寻求最小状态DFA

两个状态s和t相互等价满足:
简化为
S P Z
0 P . P
1 S,Z Z P
0 0 1
练习:

NFA N=({a,b},{0,1,2},f, 0, {2}) f(0,a)={0,1}, f(1,a)=Ф f(2,a)= Ф , f(2,b)= Ф f(0,b)={0}, f(1,b)={2} 画出状态转换图
a
a b 1 2
第二章
形式语言与自动机理论基础
2.2有限自动机 FA (Finite Automata)
关于有穷自动机我们将讨论如下题目:



确定的有穷自动机DFA 不确定的有穷自动机NFA DFA与NFA的等价——NFA的确定化 DFA的最小化
1、确定的有限自动机 DFA DFA :Deterministic
36
NFA的确定化例子
0
1
2
a b
3


b b a 6 7 8 9 10
4
5
a
3,8,6,1,2,4,7 2 3,8,6,1,2,4,7 2 3,8,6,1,2,4,7 2 3,8,6,1,2,4,7 2 3,8,6,1,2,4,7 2
states
1 3,8,6,1,2,4,7 2 5,6,1,2,4,7 3 5,9,6,1,2,4,7 4 5,10,6,1,2,4,7 5
V
b
例:证明t=baab被DFA所接受。 f(S,baab)=f(f(S,b),aab) = f(V,aab)= f(f(V,a),ab) =f(U,ab)=f(f(U,a),b) =f(Q,b)=Q Q属于终态。
13


综述:
(1) 对于Σ上的任何字符α,如果存在一条从初态到某一 终态结的路径,且该路径上所有弧的标记符连接成的 字符等于α, 则称α为DFA M所识别(接受)。

综述—求Ia步骤:
(1) 求ε-closure(I); (2) 求J; (3) 求ε-closure(J);

NFA确定化关键: (1) 消去ε弧; ——_closure(I) (2) 解决映射不唯一问题 ——求Ia
31
练习
0
1
2
a b
3


b b a 6 7 8 9 10
32
从具体例子的讨论,提炼出从NFA构造DFA的算法。
0
1
2
a

3 a b b 6 8 7 9 10
0,1,2,4,7 a b 3,8,6,1,2,4,7
b 5 4

5,6,1,2,4,7
33
从NFA构造DFA的方法——子集法

步骤1:初始化
对NFA M’=(S, {Σ1, Σ2, …, Σn }, f, S0, Z) 设一 矩阵形式的表:
L(M )=L(M).
注意:与某一NFA等价的DFA不唯一.
23
例 NFA M=(0,1 , q0, q1, f, q0, {q1} ),其中
f(q0 ,0)= q0, q1, f(q1, 0)= f(q0,,1)= q1 f(q1,1)= q0, q1 L(M)=L(M )={0,1}+
练习:
DFA M=({S,U,V,Q},{a,b},f,S,{Q})其 中f定义为: f(S,a)=U f(S,b)=V f(V,a)=U f(V,b)=Q
f(U,a)=Q
f(U,b)=V

f(Q,a)=Q
f(Q,b)=Q
画出状态图 证明t=baab被DFA M所接受
12
a
U
a a,b
a
Q b
其中f: f(0,a)=1, f(2,a)=1, f(0,b)=2, f(2,b)=3, f(1,a)=3 f(3,a)=3 f(1,b)=2 f(3,b)=3
a
1
a
a
0
b
b
2
a
b
3
b
5
状态转换图表示
6
DFA的三种表示

1.转换函数; 2.转移矩阵; 3.状态转换图。
设DFAM=({a,b},{0,1,2, 3},f,0,{3}) 其中f: f(0,a)=1, f(2,a)=1, f(0,b)=2, f(2,b)=3, f(1,a)=3 f(3,a)=3 f(1,b)=2 f(3,b)=3
NFA的确定化练习
a i a 3 a 5 b 4 b a

b
1

2

6 b

f
状态 {i,1,2} {1,2,3} {1,2,4} {1,2,3,5,6,f}
Ia
S A B C
Ib
A C A C
{1,2,3} {1,2,3,5,6,f} {1,2,3} {1,2,3,5,6,f}
{1,2,4} {1,2,4} {1,2,4,5,6,f} {1,2,4,6,f}
34
从NFA构造DFA的方法——子集法

步骤2:求IΣn
35
从NFA构造DFA的方法——子集法

步骤3:重新命名
对求得的矩阵(DFA M)的第一列各状态子集重新 命名,然后代入相应的状态矩阵元素; 第一列第一行为DFA M 的惟一初态;
含有原M’终态的I为M终态。

百度文库
步骤4:画出状态转换图
3

例:
(1)电梯的控制系统; (2)人的大脑也是有限控制系统; (3)计算机自身也是有限控制系统。

注意:
DFA是具有离散输入、输出系统的一个纯数学模型; DFA的技巧在于状态的设置; DFA映射的唯一性和初态的唯一性。
4
例:设DFA M=({a,b},{0,1,2,3},f,0,{3})
4
5
令I={0},求状态集合I的a弧转换:
I={0} ,-closure(I)= {0,1,2,4,7};(I={0,1,2,4,7}) J=move({0,1,2,4,7},a)= {1,2,3,4,6,7,8} -closure(J)= {1,2,3,4,6,7,8}
(J= {1,2,3,4,6,7,8} )
a 0 1 2 3 1 3 1 3
b 2 2 3 3
8
转移矩阵易存储

例:一个单部电梯对3层楼进行控制的电梯控制 系统的DFA描述。
问题分析: 用户请求(输入)
上1、上2、上3 下1、下2、下3

状态设置(所处楼层)
1层——S1 2层——S2 3层——S3
9

状态转换图
(2) 若DFA仅一个状态结点,该状态结点既是初态又是 终态,则空字符集合{ε}为DFA M所接受。 (3) 一个DFA M所能接受的字符的全体记为L(M)。


14

DFA的确定性表现在其映射函数是一个单值函数。但是 实际问题中,映射函数往往是一个多值函数。

例如,源程序中扫描到一个字母时,不同的语言对应多 种情况: C语言中:标识符/ %S / \n / if / switch ….
a S b A a b a C b E a
a
b
b
B
b
D
b
a
F
课下作业:NFA的确定化

有NFA M’如下图所示。
42
2.2.4确定的有限自动机的化简(最小化)
定义2.30(等价状态、可区分状态)
设DFA M的两个不同状态q1,q2,如果对任意输入字符 串ω,从q1,q2状态出发,总是同时到达接收状态或拒绝 状态之中,称q1,q2是等价的。
25
从NFA构造DFA的方法
假设I是NFA M‘ 状态集Q 的一个子集。(即I Q) 定义对状态集合I的几个有关运算: (1)定义2.28 状态集合I的 _闭包: _closure(I) 若q∈I,则q∈ε-closure(I)
——状态集合I中的任何状态S都属于_closure(I)
0 b
19
回顾: f为Q * 到Q的子集(2Q)的一种映射
具有转移的不确定的有穷自动机
a
b

c
3
1
2

例:给出一个接收字符串aa*|bb*的NFA M,用 状态转换图来表示。
21
NFA和DFA的区别
22
FA的等价性
DFA N是NFA M的一个特例
定理2.1:对任何一个NFA M,都存在一个 DFA M,使
a
I={1} _closure(I)=

_closure(I)综述:
状态集I的ε-closure(I)仍是一状态集; ε-closure(I) 即为在I状态下,不输入任何字符所能 到达的状态的全体并包含I的状态,即I状态下ε的闭 包。
28
定义对状态集合I的几个有关运算:

(2)定义2.29(状态集合I的a弧转换Ia)
Finite Automata
定义2.26 一个确定的有限自动机 M(记作DFA M)是一个五元组
其中
M=(Q,Σ ,f,q0, Z)
Q是一个有限状态集合。 Σ 是输入字符的有限集合,它的每个元素是输入符号。 q0 ∈Q,q0称为初始状态。 ZQ,Z称为终结状态集合。 f是一个从Q×Σ 到Q的单值映射 f(q,a)=q(q,q∈Q,a∈Σ )
相关文档
最新文档