《编译原理》2.2第二章形式语言与自动机理论基础
编译原理 第02章_文法和语言的基本知识
2.3.2 语言的形式定义
S→01 | 0S1
S 0S100S11…0n-1S1n-10n1n * 即S0n1n
可见,此文法定义的语言为 L(G[S])={ 0n1n | n≥1}
2.3.2 语言的形式定义
例4 设有文法G[S]:S→0S | 1S |ε 该文法所定义的语言是什么?
由该文法所确定的语言为 L(G[S])={ε, 0, 1, 00, 01, 10, 11, …} ={ x | x∈{0,1}* }
2.3.1 文法的形式定义
2. 文法
规则的非空有穷集合,通常表示 成四元组 G={VN,VT, P, S } VN是规则中非终结符号的集合。 VT是规则中终结符号的集合。
P 是文法规则的集合。
2.3.1 文法的形式定义
S 是一个非终结符号,称为文法 的开始符号或文法的识别符号,它至 少要在一条规则中作为左部出现。由 它开始,识别出我们所定义的语言。 由文法定义可知,文法是对语言 结构的定义和描述,文法四大要素中 关键是规则的集合。
2.3.2 语言的形式定义
广义推导
* 0n表示从0出发,经0步或若干步, 可推导出n。 * 意味着 + 或者 = 。 也就是说0 n 0 n 0 n
对上例 E→E+T | T T→T*F | F F→(E) | i *E * i+i*i 我们有: E E
2.3.2 语言的形式定义
4. 句型和句子
设有文法G[S](S是文法G的开始符号) * 如果S x, x ∈(V ∪V )* 则称符号串x
N T
为文法G[S]的句型。 * x, x ∈V * 则称符号串x为文法 如果S T G[S]的句子。
2.3.2 语言的形式定义
形式语言与自动机基础PPT课件
f(qoe,0)= qee f(qoe,1)= qoo f(qeo,0)=qoo f(qeo,1)= qee
f( qeo ,1)= qeeZ
所以串$1= 110101可以被M1接受。
f(qoo,0)=qeo f(qoo,1)= qoe
f( qee , 110101 )= f(f( qee ,11010),1)=
Ch2 形式语言自动机理论基础 2.2 自动机基础 2.2.2 非确定的FA(NFA)
一. NFA的定义
DFA的确定性表现在其映射函数是一个单值函 数。但是实际问题中,映射函数往往是一个多值函 数。
例如,源程序中扫描到一个字母时,不同的语言 对应多种情况:
FORTRAN中: 标识符/格式转换码E、D…
Ch2 形式语言自动机理论基础 2.2 自动机基础
第 2 章 形式语言与自动机基础
2.2 有限自动机基础 2.2.1 确定的有限状态自动机(DFA) 2.2.2 非确定的有限状态自动机(NFA) 2.2.3 NFA确定化 2.2.4 DFA化简
Ch2 形式语言自动机理论基础 2.2 自动机基础 2.2.1 确定的FA(DFA)
Q
q0
Z
其中状态转换函数f为:
f(q0,0)= {q0,q3}
f(q1,0)=
f(q2,0)= {q2} f(q3,0)= {q4} f(q4,0)= {q4}
f(q0,1)= {q0, q1} f(q1,1)={ q2} f(q2,1)= {q2}
f(q3,1)=
f(q4,1)={ q4}
Ch2 形式语言自动机理论基础 2.2 自动机基础 2.2.2 非确定的FA(NFA)
1) p0=q0 2) f(pi,wi+1)=pi+1,i=0,1,,n-1 3) pnZ
形式语言与自动机理论--第二章 文法-2(第四周)
G为2型文法(type 2 grammar),或上下文无关文法 (context free grammar,CFG)。 L(G)叫做2型语言(type 2 language)或者上下文无关语言 (context free language ,CFL)。
产生的语言为: {an(bc)n | n≥1}
焦点:交换b和c的位置。
15
3.文法的构造
G14:SaBC | aSBC, CBBC aBab bBbb bCbc cCcc
G14′:Sabc|aSBc, bBbb cBBc
16
4.文法的乔姆斯基体系
定义2-6(1) 文法G=(V,T,P,S) G叫做0型文法(type 0 grammar),也叫做短语结构文
⑴ 对a∈{0,1,2,3},aa∈L; ⑵ 如果x∈L,则对a∈{0,1,2,3},axa∈L; ⑶ L中不含不满足(1)、(2)任何其他的串。
5
3.文法的构造
根据递归定义中的第一条,有如下产生式组: S00 | 11 | 22 | 33
再根据递归定义第二条,又可得到如下产生式组: S0S0 | 1S1 | 2S2 | 3S3
Aa1A1 A1a2A2 … An-1an
来实现。
29
4.文法的乔姆斯基体系
P中产生式A a1a2a3……anB 的功能可以由产生式组
Aa1A1 A1a2A2 … An-1anB
来实现 在P′中新定义的变量只有在P中“源产生式”推导时
才能用上,因此他们生成语言的能力是相同的,即
L(G′)=L(G)
第2章 文法
1.语言结构分析 2.文法形式定义 3.文法的构造 4.文法的乔姆斯基体系 5.空语句 6.小结
2021-2022学年编译原理之形式语言基础(2)
2.4 两种特性文法
设有文法:G(Z)=(VN,VT,Z,P)
2.4.1 递归文法
【定义】
设 若
AA∈=+V>N,xAxy,,y:∈称(V文N+法VT)具*,有则递;归性;
特别: 若 A -> A ,称文法具有直接左递归性; A -> A ,称文法具有直接右递归性。
如:G1(S): S -> S b | a --- 直接左递归文法;
∵ S->a(A|)bc
∴ S->aAbc|abc
∵ A->d(A|)(B|)e ∴ A->dABe|dBe|dAe|de
∵ B->(A|)
∴ B->A
※ 综合 G`(S) : S->aAbc|abc|bS A->dABe|dBe|dAe|de B->A|b
2.5.2 文法变换方法3
Ⅲ 常用的三种文法变换方法:
D -> f ; G -> b ;
⒊ 删除不可用产生式: ∵ VUS={ S,B,A }; ∴ 应删除 D,G(连同其产生式)
※ 整理后得:G``(S):
S -> Be A -> Ae | e B -> Af
2.5.2 文法变换方法2
Ⅱ 删除 产生式
※假定 文法 G(Z) ; 【算法】
∈ L(G)
2.5.2 文法变换方法
在实际工作中,人们总是希望定义一种语言的 文法尽可能地简单。另外,某些常用的语法分析技 术也会对文法提出一定的要求或限制;为了适应上 述要求,有时需要对文法进行必要的改写。当然改 写后的文法要与原文法等价—通常称为文法变换。
这里重点介绍三类变换:
⑴ 删除无用的产生式(文法的化简); ⑵ 删除ε产生式; ⑶ 常用的三种文法变换方法:
《编译原理》2.2第二章形式语言与自动机理论基础
综述—求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) 设一 矩阵形式的表:
状态矩阵表示
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)
练习:
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所接受
编译原理2.2自动机理论
contents
目录
• 自动机概述 • 有限自动机 • 正则文法和正则表达式 • 确定有限自动机(DFA) • 非确定有限自动机(NFA)
01 自动机概述
定义与分类
定义
自动机是一个抽象的机器,用于模拟有限状态系统的行为。它由一组状态、一 组输入符号和一组转移函数组成,根据输入符号和当前状态来决定下一个状态。
正则文法与正则表达式的转换
正则文法转换为状态机
通过构造一个状态机来描述正则文法的语言,状态机中的每个状态对应一个产生式,状态之间的转移 对应于产生式的应用。
正则表达式转换为状态机
将正则表达式转换为状态机的方法包括确定化和非确定化两种。确定化是将一个不确定的状态机转换 为确定的状态机,非确定化是将一个确定的状态机转换为不确定的状态机。
工具辅助
使用自动机生成工具或编译器工具集中的工 具,如Lex或Yacc等,根据语言规范生成 DFA。
DFA的应用实例
词法分析
01
DFA可以用于实现词法分析器,将输入的字符串分割成一个个
单词或符号。
正则表达式匹配
02
DFA可以用于实现正则表达式匹配算法,判断一个字符串是否
符合正则表达式的模式。
语法分析
正则表达式的应用实例
1 2
文本匹配
正则表达式可以用来匹配文本中的特定模式,例 如查找字符串中的数字、邮箱地址等。
文本替换
正则表达式可以用来替换文本中的特定模式,例 如将字符串中的所有数字替换为特定字符。
3
文本解析
正则表达式可以用来解析文本中的结构化数据, 例如从CSV文件中提取数据。
04 确定有限自动机(DFA)
正则文法的性质
编译原理一些习题答案
编译原理⼀些习题答案第2章形式语⾔基础2.2 设有⽂法G[N]: N -> D | NDD -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9(1)G[N]定义的语⾔是什么?(2)给出句⼦0123和268的最左推导和最右推导。
解答:(1)L(G[N])={(0|1|2|3|4|5|6|7|8|9)+} 或L(G[N])={α| α为可带前导0的正整数}(2)0123的最左推导:N ? ND ? NDD ? NDDD ? DDDD ? 0DDD ? 01DD ? 012D ? 0123 0123的最右推导:N ? ND ? N3 ? ND3 N23 ND23 N123 D123 0123268的最左推导:N ? ND ? NDD ? DDD ? 2DDD ? 26D ? 268268的最右推导:N ? ND ? N8 ? ND8 ? N68 ? D68 ? 2682.4 写⼀个⽂法,使其语⾔是奇数的集合,且每个奇数不以0开头。
解答:⾸先分析题意,本题是希望构造⼀个⽂法,由它产⽣的句⼦是奇数,并且不以0开头,也就是说它的每个句⼦都是以1、3、5、7、9中的某个数结尾。
如果数字只有⼀位,则1、3、5、7、9就满⾜要求,如果有多位,则要求第1位不能是0,⽽中间有多少位,每位是什么数字(必须是数字)则没什么要求,因此,我们可以把这个⽂法分3部分来完成。
分别⽤3个⾮终结符来产⽣句⼦的第1位、中间部分和最后⼀位。
引⼊⼏个⾮终结符,其中,⼀个⽤作产⽣句⼦的开头,可以是1-9之间的数,不包括0,⼀个⽤来产⽣句⼦的结尾,为奇数,另⼀个则⽤来产⽣以⾮0整数开头后⾯跟任意多个数字的数字串,进⾏分解之后,这个⽂法就很好写了。
N -> 1 | 3 | 5 | 7 | 9 | BNB -> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | B02.7 下⾯⽂法⽣成的语⾔是什么?G1:S->ABA->aA| εB->bc|bBc G2:S->aA|a A->aS解答:B ? bcB ? bBc? bbccB ? bBc? bbBcc ? bbbccc……A ?εA ? aA ? aA ? aA ? aaA ? aa……∴S ? AB ? a m b n c n , 其中m≥0,n≥1即L(G1)={ a m b n c n | m≥0,n≥1} S ? a S ? aA ? aaS ? aaaS ? aA ? aaS ? aaaA ?aaaaS ? aaaaa ……∴S ? a2n+1 , 其中n≥0即L(G2)={ a2n+1 | n≥0}2.11 已知⽂法G[S]: S->(AS)|(b)A->(SaA)|(a)请找出符号串(a)和(A((SaA)(b)))的短语、简单短语和句柄。
编译原理 第2章 文法和形式语言
2011年6月7日
推导方法: 推导方法:从一个要识别的符号 开始推导, 开始推导,即用相应规则的 右部来替代规则的左部, 来替代规则的左部 右部来替代规则的左部, 每次仅用一条规则去进行推导。 每次仅用一条规则去进行推导。
<句子 ::=<主语><谓语> 句子>::=<主语><谓语> 句子 ::=<主语><谓语 >::=<代词>|<名词 <主语>::=<代词>|<名词> 主语>::=<代词>|<名词> <代词> ::=你|我|他 代词> ::=你 名词>::= 王民|大学生|工人| <名词>::= 王民|大学生|工人|英语 >::=<动词><直接宾语 <谓语>::=<动词><直接宾语> 谓语>::=<动词><直接宾语> >::=是 <动词>::=是|学习 动词>::= 直接宾语>::=<代词>|<名词> >::=<代词>|<名词 <直接宾语>::=<代词>|<名词>
2011年6月7日
2.由规则推导句子:有了一组规则之后, 2.由规则推导句子:有了一组规则之后,可以按照一定的方式 由规则推导句子 用它们去推导或产生句子。 用它们去推导或产生句子。 推导方法:从一个要识别的符号开始推导, 推导方法:从一个要识别的符号开始推导,即用相应规则的 右部来替代规则的左部,每次仅用一条规则去进行推导。 来替代规则的左部 右部来替代规则的左部,每次仅用一条规则去进行推导。 <句子 => <主语><谓语> 句子> <主语><谓语 主语><谓语> 句子 <代词><谓语 代词><谓语> <主语><谓语> => <代词><谓语> 主语><谓语> ><谓语 …… …… 这种推导一直进行下去,直到所有带< >的符号都由终结符号 这种推导一直进行下去,直到所有带< >的符号都由终结符号 替代为止。 替代为止。
《编译原理》.第二章形式语言与自动机理论基础(PDF)
2、有关正规式及正规集的说明
说明:
1. 正规式与相应的正规集是等价的,正 规集给出了相应正规式所描述的全部单 词(句子);
2. 正规式的运算结果是正规集;
3. 正规式不是集合,其运算结果正规集 是集合。Ф是特例。
8
正规表达式及正规集
正规表达式的定义
是字母表
正规表达式 1. , 2. a , a 3. 若 r, s 则 (1) (r)(s)
例 (r) •((s)*)|(r)——可简写:r •s*|r。 • 常常可省略不写,可写成 rs*|r。
10
例题
=a,b, 上的正规式和对应的正规集是:
正规式
正规集
(a) a b
a,b
(b) (a b )(a b )
aa,ab,ba,bb
(c) a*
,a,aa,aaa,aaaa,…
(d) (a b)*
终态Z
Z →
3
NFA的状态图如图所是,求其等价的正规文法(右线性)
a
a S
b
A
a
Z
b
G[S]: S→aS|bS S→aA A→aZ|bZ Z →
4
2.3.1正规文法与有限自动机(FA)
2、由正规文法构造等价的NFA 文法的终结符号集为有穷自动机的字母表 文法的非终结符号集为有穷自动机的状态集 文法的开始符号作为有穷自动机的初态 对文法中形如A→tB的产生式,构造有穷自动机的一个 转换函数f(A,t)=B, 对文法中形如A→t的产生式,构造有穷自动机的一个 转换函数f(A,t)= Z
a
r1
r2 b
r3
c
r
r*
代之以
a
b
c
编译原理2.2 自动机理论
A=(aA|dA)|(a|d)
A=a|d
将它化为正规文法 变成A→
A=(a|d)A|(a|d)
A=(a|d)*(a|d)
(a|d)A|(a|d)
再根据上述 规则2转换 x=y= (a|d)
19
将A代入S=aA|a得到如下: S=a( (a|d)*(a|d)) |a =a(a|d)+|a
=a((a|d)+|)= a(a|d)+
含义:当前状态为 Ki,输入字符a, 转换为Kj状态
DFA映射的唯一性和初态的唯一性
22
DFA等价表示法:
DFA形式定义=状态转换图=状态矩阵
1、单词的构成规则用状态转换图表示
方法如下: 初始态用 “-”或“”表示;
终态点用 “+” 或“” 表示;
若f(Ki ,a)= Kj ,则从状态点Ki 到Kj画弧,标
“” 都是左结合的
9
讨论下面两个例子 例1 令={l,d},则上的正规式 r=l(ld)定义 的正规集为: {l,ll,ld,ldd,„„},其中l 代表字母,d代表数字,正规式 即是 字母 (字母|数字) ,它表示的正规集中的每个 元素的模式是“字母打头的字母数字串”, 就是Pascal和多数程序设计语言允许的标 识符的词法规则.
对于Σ*中的任何字符串t,若存在一条初态到 某一终态的路,且这条路上所有弧的标记符连接成 的字符串等于t,则称t可为DFA M所接受。 若M的初态同时又是终态,则空字可为M所接 受。
33
4、接受(识别)的理解:
① 设QK,函数f(Q,)=Q,则输入字符串是 空串,并停留在原状态上。
② 输入字符串t(t表示成Tt1形式,TΣ,t1 Σ*),在DFA M上运行的定义为:f(Q,Tt1) =f(f(Q,T),t1),其中QK。
《编译原理》第2章 编译基础-形式语言与有穷自动机
句型、推导
G[E]: E→E+T|T T→T*F|F F→(E)|a
对于句子a+a*a 有不同 的推导
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
EE+T E+T*F E+T*a E+F*a E+a*a T+a*a F+a*a a+a*a
整理课件
例:奇偶测试器
0
0
1
q0
q1
∈
1
自动机:M=(Q,∑ ,δ ,q0,Z)
Q={ q0, q1}
∑ ={0,1}
q0=q0 Z={q1}
整理课件
映射函数:
δ( q0,0)= q0 0
0
δ( q0,1)= q1
1
δ( q1,0)= q1 q0
q1
δ( q1,1)= q0
1
例:000110001
整理课件
第四节 正规文法与有穷自动机 1、正规文法 产生的语言的推导 例:文法 G=(VN,VT,P,S) 其中: VN={A,B,C}
VT={a,b,c} S=A P:A →aB A →aA
B →bB B →bC C →cC C →c
整理课件
A=>aA=>aaA=>…..=>aa…aB =>aa…abB=>aa…abb…bC =>aa…abb…bcC=> aa…abb…bccC => aa…abb…bcc…c
D→ε
Aa→bD
自然语言属于上下文有关文法
整理课件
文法的类型
形式语言与自动机基础共77页文档
41、实际上,我们想要的不是针对犯 罪的法 律,而 是针对 疯狂的 法律。 ——马 克·吐温 42、法律的力量应当跟随着公民,就 像影子 跟随着 身体一 样。— —贝卡 利亚 43、法律和制度必须跟上人类思想进 步。— —杰弗 逊 44、人类受制于法律,法律受制于情 理。— —托·富 勒
拉
60、生活
45、法律的制定是为了保证每一个人 自由发 挥自己 的才能 ,而不 是为了 束缚他 的才能 。—— 罗伯斯 庇尔
56、书不仅是生活,而且是现在、过 去和未 来文化 生活的 源泉。 ——库 法耶夫 57、生命不可能有两次,但许多人连一 次也不 善于度 过。— —吕凯 特 58、问渠哪得清如许,为有源头活水来 。—— 朱熹 59、我的努力求学没有得到别的好处, 只不过 是愈来 愈发觉 自己的 无知。 ——笛 卡儿
- 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相互等价满足: