- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综述—求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
简化为
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
即对于ω,(ω∈Σ*)有: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 ,称作子集 构造法。
(2) 若DFA仅一个状态结点,该状态结点既是初态又是 终态,则空字符集合{ε}为DFA M所接受。 (3) 一个DFA M所能接受的字符的全体记为L(M)。
14
DFA的确定性表现在其映射函数是一个单值函数。但是 实际问题中,映射函数往往是一个多值函数。
例如,源程序中扫描到一个字母时,不同的语言对应多 种情况: C语言中:标识符/ %S / \n / if / switch ….
其中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
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,使
若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
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
NFA在实际中更具普遍性。
15
非确定的有限自动机NFA M
定义2.27:非确定有限自动机M是一个五元组 M=(Q,Σ ,f,q0, Z) 其中:
Σ,Q,Z同DFA
q0 是一个初态集 f是一个从Q Σ*到Q的子集的映射,即 f:Q Σ * 2Q 注意:后继状态不是惟一的
16
例:
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∈Σ )
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
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
状态转换图
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是等价的。
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} )
3
例:
(1)电梯的控制系统; (2)人的大脑也是有限控制系统; (3)计算机自身也是有限控制系统。
注意:
DFA是具有离散输入、输出系统的一个纯数学模型; DFA的技巧在于状态的设置; DFA映射的唯一性和初态的唯一性。
4
例:设DFA M=({a,b},{0,1,2,3},f,0,{3})
32
从具体例子的讨论,提炼出从NFA构造DFA的算法。
0
1
2
a
3 Βιβλιοθήκη 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) 设一 矩阵形式的表:
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所识别(接受)。
练习:
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
设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相互等价满足: