(21)第三章 第四讲 下推自动机
西安理工大学《编译原理》编译原理作业集-第三章-修订版

第三章词法分析本章要点1.词法分析器设计,2.正规表达式与有限自动机,3.词法分析器自动生成。
本章目标:1.理解对词法分析器的任务,掌握词法分析器的设计;2.掌握正规表达式与有限自动机;3.掌握词法分析器的自动产生。
本章重点:1.词法分析器的作用和接口,用高级语言编写词法分析器等内容,它们与词法分析器的实现有关。
应重点掌握词法分析器的任务与设计,状态转换图等内容。
2.掌握下面涉及的一些概念,它们之间转换的技巧、方法或算法。
(1)非形式描述的语言↔正规式(2)正规式→ NFA(非确定的有限自动机)(3)NFA→ DFA(确定的有限自动机)(4)DFA→最简DFA本章难点(1)非形式描述的语言↔正规式(2)正规式→ NFA(非确定的有限自动机)(3)NFA→ DFA(确定的有限自动机)(4)DFA→最简DFA作业题一、单项选择题(按照组卷方案,至少15道)1. 程序语言下面的单词符号中,一般不需要超前搜索a. 关键字b. 标识符c. 常数d. 算符和界符2. 在状态转换图的实现中,一般对应一个循环语句a. 不含回路的分叉结点b. 含回路的状态结点c. 终态结点d. 都不是3. 用了表示字母,d表示数字, ={l,d},则定义标识符的正则表达式可以是:。
(a)ld*(b)ll*(c)l(l | d)*(d)ll* | d*4. 正规表达式(ε|a|b)2表示的集合是(a){ε,ab,ba,aa,bb} (b){ab,ba,aa,bb}(c){a,b,ab,aa,ba,bb} (d){ε,a,b,aa,bb,ab,ba}5. 有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所对应的状态转换图为。
6. 有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所能接受的语言可以用正则表达式表示为。
形式语言自动机——上下文无关文法与下推自动机(四)

无论 Xi 为终结符,还是非终结符,都有 Xi w i .
因此 ,A X1X2…Xm , w 1 w 2… w m = w
所以: 对任何 wT*, if (q,w,S)├*(q, , ), then S w.
即, wL(M) wL(G).
College of Computer Science & Technology, BUPT
(q,w,A)├ (q,w, X1X2…Xm ) ├* (q, w2…wm , X2…Xm) ├* (q, w3…wm , X3…Xm)├* …├* (q, , ).
所以: if S w, then (q,w,S)├*(q, , ).
即, wL(G) wL(M).
College of Computer Science & Technology, BUPT
13
a, z0/Az0 a, A/AA
q0 b, A/ε
b, A/ε ε, A/ε
q1 ε, z0/ε
解:(1)∵ q0,q1∈Q, ∴ 构造 S→[q0,z0,q0];
(2)对③④⑤⑥式,可构造
S→[q0,z0,q1]
由δ(q0,b,A)={( q1,ε)} 得 [q0,A,q1]→b
由δ(q1,b,A)={( q1,ε)} 得[q1,A,q1]→b
7
例3: 从文法构造等价的下推自动机
例:构造一个PDA M,使Lφ(M)= L(G)。其中G是我们常用来生 成算术表达式的文法:
G=(N,T,P,E) N={ E,T,F }, T ={ +,*,(,),a }, S = { E } P: E→E+T∣T ; T→T*F∣F; F→( E )∣a
解:构造M=({q},T,Γ,δ,q,E,φ)
计算理论复习课2习题---答案

第三章 上下文无关语言与下推自动机a. {w | w 至少含有3个1} S →A1A1A1A A →0A|1A|εb. {w | w 以相同的符号开始和结束}S →0A0|1A1 A →0A|1A|εc. {w | w 的长度为奇数}0, ε→ε0,ε→ε 0,ε→ε1,ε→ε0,ε→εS →0A|1A A →0B|1B|ε B →0A|1Ad.{w | w 的长度为奇数且正中间的符号为0} S →0S0|1S1|0S1|1S0|0e.{w | wS →A1AA →0A1|1A0|1A|AA|εf.{w | w=w R }S →0S0|1S1|1|0g.空集 S →S3.6 给出产生下述语言的上下文无关文法: a . 字母表{a,b}上a 的个数是b 的个数的两倍的所有字符串组成的集合。
S →bSaSaS|aSbSaS|aSaSbS|εb .语言{a n b n |n ≥0}的补集。
见问题3.25中的CFG: S →aSb|bY|Ta T →aT|bT|εc .{w#x | w, x ∈{0,1}*且w R 是x 的子串}。
S →UV0,ε→0,0→0,ε→1,0→0,1→0,ε→0,0→U→0U0|1U1|WW→W1|W0|#V→0V|1V|εd.{x1#x2#⋯#x k|k≥1, 每一个x i∈{a,b}* , 且存在i和j使得x i=x j R}。
S→UVWU→A|εA→aA|bA|#A|#V→aVa|bVb|#B|#B→aB|bB|#B|#W→B|ε3.14解:添加新起始变元S0, 去掉B→εS0→A S0→AA→BAB|B|εA→BAB|AB|BA|B|εB→00|εB→00去掉A→ε, 去掉A→BS0→A S0→AA→BAB|AB|BA|B|BB A→BAB|AB|BA|00|BBB→00 B→00去掉S0→A, 添加新变元S0→BAB|AB|BA|00|BB S0→VB|AB|BA|UU|BBA→BAB|AB|BA|00|BB A→VB|AB|BA|UU|BBB→00 B→UUV→BAU→03.15 证明上下文无关语言类在并,连接和星号三种正则运算下封闭---答案。
第三章 形式语言与自动机

NLPR
E ⇒ E + T ⇒ E + T*F ⇒ E + T*a ⇒ E + F*a ⇒ E + a*a ⇒ T +a*a ⇒ F + a*a ⇒ a + a*a
NLPR, CASIA 2006-3-8
(最右推导)
宗成庆:《自然语言理解》讲义
3.2 形式语言
句型与句子
NLPR
一些特殊类型的符号串为文法 G=(N, Σ, P, S) 的 句子形式(句型): (1) S 是一个句子形式; (2) 如果 αβγ 是一个句子形式,且 β → δ 是 P 的 产生式,则 αδγ 也是一个句子形式; 文法 G 的不含非终结符的句子形式称为 G 生成的 句子。由文法 G 生成的语言,记作 L(G),指 G 生成 ⇒ 的所有句子的集合。即:L(G) = {x | x ∈ Σ, S ∗ x } G
NLPR, CASIA
2006-3-8
宗成庆:《自然语言理解》讲义
3.2 形式语言
例 3.1:G = ({E, T, F}, {a, +, *, (, )}, P, E) P: E→E+T|T F → (E) | a 字符串 a+a*a 的两种推导过程: E ⇒ E + T ⇒ T + T ⇒ F + T ⇒ a + T ⇒ a + T*F ⇒ a + F*F ⇒ a + a*F ⇒ a + a*a (最左推导) T → T*F | F
NLPR, CASIA 2006-3-8 宗成庆:《自然语言理解》讲义
3.1 几个基本概念
字符串 (string)
NLPR
字符串定义:假定 Σ 是字符的有限集合,它的每一个 元素称之为字符。由 Σ 中字符相连而成的有限序列被 称之为Σ 上的字符串(或称符号串,或称链)。 特殊 地,不包括任何字符的字符串称为空串,记作 ε。 符号串的长度:符号串中符号的个数。符号串x的长 度用|x|表示。 |ε| = 0。 包括空串的 Σ 上字符串的全体记为 Σ*。
下推自动机

7 下推自动机7.1 以例子为导引本章我们研究如何拓展有限自动机,引出能够处理CFL的抽象机模型。
我们已经发现了许多不是正则语言的CFL(当然,也有很多CFL是正则语言)。
我们的讨论不妨从下面的例子开始。
例子7.1 CFG G有如下的产生式:S→aSa | bSb | c,G生成的语言是L={xcx r | x∈{a, b}*}。
分析:显然L中的字符串也属于回文语言,还多一个特征,即字符串的中央是一个特别的字符c。
现在我们要设计一个识别L的算法。
假设我们从左至右扫描字符串,很显然在遇到字符c之前,我们需要保存见到的每个字符,一旦遇到了字符c,则将当前的字符与先前保存的字符进行比较,注意比较时,采用的是“后保存,先比较”的原则,或者称为“后来先出”原则(last in, first out. LIFO)。
实现LIFO原则的数据结构是栈,它的形式是一个链表,只通过一端处理链表,这个端称为栈顶(top),链表的元素在top端加入到链表中(push,压入),或从链表里删除(pop,弹出)。
上面的算法虽然简单,却包含了我们将要设计的处理CFL的抽象机模型的基本要素。
由于无限状态的抽象机很难描述,因此我们保留FA状态的有限性,但是我们增加辅助的存储空间,并假设它是无限大的。
前面已经看到有限空间的抽象机无法识别回文语言这样的CFL。
因此总的来说,新的抽象机包含两部分空间,有限的状态和无限的栈,同时抽象机的移动方法也要做相应的扩充。
决定移动动作的因素从FA的两个增加到三个,即状态、输入字符和栈顶内容,同时移动动作除了状态的转移,还包括栈顶的处理。
在这个简单例子中,状态集包括三个状态:q0、q1和q2。
q0是初始状态,抽象机在扫描过程中,遇到c之前,始终停留在状态q0,而且不断将遇到的字符加入到栈中;当遇到c,则状态转移到q1,保持栈不变。
在随后的扫描中,保持状态为q1,且不断比较栈顶字符与遇到的字符,如果相同,将栈顶字符弹出,继续上面的过程,否则抽象机崩溃(crash),输入的字符串不能被接受。
01课程概述及预备知识

3、{ a, b, c }* = {ε, a, b, c, aa, ab, ac, ba, bb, bc, …, aaa, … }
字母表与字符串
定义 1.5
理论,使之在科学实践中具有良好的指导作用。
形式语言与自动机理论的发展概况
何为形式语言
形式语言的研究概况
计算模型相关研究领域
研究概况
数理语言学家致力于用数学方法研究自然语言的结构,试
图用计算机模拟。
1956年,宾夕法尼亚大学的语言学家 N. Chomsky 第一次
提出用形式语言研究自然语言的方法。
基本的图灵机模型的物理装置:
控制器:左右移动、读字符、修改方格字符、改变控制器状态 ; 模拟计算机的基本操作。
装置改进:单带多道;子程序功能;单带无穷;多带;多维;通用 TM。
研究概况
识别符号语言的 A. Turing 自动机体系:
51- 56年,数学家克林(Kleene):研究神经细胞时,基于图灵机 建立了确定有穷状态自动机 DFA,用其识别语言; 57年,米凯尔.拉宾 & 达纳.斯科特将确定状态自动机 DFA 扩展为 非确定有穷状态自动机 NFA,从而简化了机器的描述建模过程,提 高了解题(识别语言)速度,为其在机器翻译、文献检索的语言识 别及符号处理等中的应用奠定了基础。
研究概况
派生符号语言的乔姆斯基(Chomsky)文法体系:
0 型文法(短语结构文法或无限制文法) 1 型文法(上下文有关文法) 2 型文法(上下文无关文法) 3 型文法(正则文法)
研究概况
04 语法分析(1) _ 概述(含 消除左递归)

消除间接左递归的方法:
(1) 把间接左递归文法改写为直接左递归文法;
(2) 用消除直接左递归的方法改写文法。
下面给出一个消除文法所有左递归性的算法,该算
法对文法的要求是:文法不含回路(形如PP的
推导),且不含以ε为右部的产生式。
通用算法
• 阅读 P84 算法4.1
①把G的非终结符按任意顺序排列,如A1,…,An ②for(i=1;i<=n;i++)
0 1
q0
1
q1
q2
【定义】一个下推自动机可定义为一个7元组:
PDA M=(Q, , , q0, Z0, F, )
其中: ① Q是有限状态集; ② 是输入符号集; ③ 是栈符号集; ④ q0Q,称为起始状态; ⑤ Z0,称为栈起始符; ⑥ FQ,称为接受状态集; ⑦ 是转移函数,定义域为Q×({ε})×,且表示由 “当前状态qi、输入符号a和栈顶符号x决定PDA的转 移动作”。值域为Q×*,指明下推自动机的动作结 果包括“状态转移和栈操作”。
例4.6
设有文法G: I→I0 | Ia | Ib | a | b
对左递归文法G改写后的文法G'为 I → aI' | bI' I ' → 0I' | aI' | bI' |ε
习题 4.8
将下面的左递归文法G(S)改为非左递归的。
S → SaP|Sf |P P → QbP|Q Q → cSd|e 【解】 S → PS’ S’→ aPS’| f S’|ε P → QbP|Q Q → cSd|e
第4章 语法分析
—— 自顶向下分析法
思考题
上次课所留问题:
设计例3-3的词法分析程序。
电子科技大学编译原理--A1答案--网络教育

《计算机编译原理》试卷A1参考答案一、单项选择题(每小题1分,共25分)1、语言是___A___A、句子的集合B、产生式的集合C、符号串的集合D、句型的集合2、编译程序前三个阶段完成的工作是___C___A、词法分析、语法分析和代码优化B、代码生成、代码优化和词法分析C、词法分析、语法分析、语义分析和中间代码生成D、词法分析、语法分析和代码优化3、一个句型中称为句柄的是该句型的最左___D___A、非终结符号B、短语C、句子D、直接短语4、下推自动机识别的语言是___C___A、0型语言B、1型语言C、2型语言D、3型语言5、扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即___B___A、字符B、单词C、句子D、句型6、对应Chomsky四种文法的四种语言之间的关系是___B___A、L0⊂L1⊂L2⊂L3B、L3⊂L2⊂L1⊂L0C、L3=L2⊂L1⊂L0D、L0⊂L1⊂L2=L37、词法分析的任务是___A___A、识别单词B、分析句子的含义C、识别句子D、生成目标代码8、常用的中间代码形式不含___D___A、三元式B、四元式C、逆波兰式D、语法树9、代码优化的目的是___C___A、节省时间B、节省空间C、节省时间和空间D、把编译程序进行等价交换10、代码生成阶段的主要任务是___C___A、把高级语言翻译成汇编语言B、把高级语言翻译成机器语言C、把中间代码变换成依赖具体机器的目标代码D、把汇编语言翻译成机器语言11、一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组___B___。
A、字符串B、产生式C、数字符号D、文法12、程序的基本块是指___D___。
A、一个子程序B、一个仅有一个入口和一个出口的语句C、一个没有嵌套的程序段D、一组顺序执行的程序段,仅有一个入口和一个出口13、高级语言编译程序常用的语法分析方法中,递归下降分析法属于___B___分析方法。
下推自动机

使用n-1次规则 <a,S,SB> 1次规则 <a,S,B> n次规则 <b,B,ε>
5.1.5 下推自动机的存储技术
初始
栈为空 从左到右逐个扫描串w∈(a,b)*
入栈
若栈为空,当前符号是a,则A入栈 若栈为空,当前符号是b,则B入栈 若栈顶为A,当前符号是a,则A入栈 若栈顶为B,当前符号是b,则B入栈
出栈
若栈顶为A,当前符号是b,则A出栈 若栈顶为B,当前符号是a,则B出栈
若串w有相同个数的a和b 当且仅当 w扫描结束后,栈为空。
扫描到字母c时 PDA的状态转为match 开始处理整个串的后半部分,将栈 中的内容出栈。
规则<q,x,D,q′,V>
若PDA处于状态q w的当前字母是x 当前栈顶符号为D 则自动机的状态改变为q′ 并用符号串V代替D
(在本例中)用Z代表任意的栈顶符号 规则〈read,a,Z,read,AZ> 可以表示以下3条规则: 〈read,a,Z0,read,AZ0> 〈read,a,A,read,AA> 〈read,a,B,read,AB>
NFA:δ(q,x)= {q1,q2,… qn} 单态的PDA: <x,q, q1 > <x,q, q2 > … <x,q, qn >
NFA:
若 q ∈δ*(q0,w) 单态的PDA: 有 (*,w,q0)=>*(*,ε,q)
NFA:
若δ(q,x)∩F≠ф 单态的PDA:
<x,q,ε>
对于文法G S=>*w1A=>w1bB=>*w1bw2=w 对于单态PDA (*,w1bw2,S)=>*(*,bw2,A) =>(*,w2,B)=>*(*, ε, ε)
形式语言与自动机复习总结

形式语言与自动机复习总结适合《形式语言与自动机》(第2版)、杨娟,石川,王柏主编1.形式语言:形式化描述的字母表上的字符串集合,是一种公认的符号和表达式所描述的一种语言,是通用的语言。
2.自动机:具有离散的输入输出模型。
a)状态:一个标识,能区分自动机在不同时刻的状况。
b)自动机本质:根据输入和规则决定下一个状态。
c)部分常见的自动机:i.有限自动机:具有读头的有限控制器和一条写有字符的输入带组成。
ii.下推自动机:由一个输入带,一个有限控制器和一个下推栈组成。
iii.图灵机:一个具有读写头的有限控制器和一条无限带组成。
3.部分术语a)字母表:字符的有限集合,记为。
b)字符串:由字母表中的字符构成的序列。
Note: 一般字符串常用来表示,单个字符常用来表示。
c)字(串):字母表上的字符串。
d)空串:不包含任何字符的字符串,用表示。
e)长度:字符串上的字符个数,用表示。
f)连接:设为串,且,,那么和的连接定义为。
性质:i.ii.iii.g)字符串的逆:字符串的倒置,用或表示,其中。
h)幂运算:设为字母表,为任意自然数,定义:i.ii.设,则iii.中的元素由i和ii生成i)闭包:j)闭包:Note:4.语言:设为字母表,则任何集合是字母表上的一个语言。
a)语言的积:和的积表示为,表示由和的字符串连接所构成的字符串的集合。
Note:b)语言的幂:。
Note: 字符串和语言的关系可以类比集合的元素和集合的关系。
5.文法:定义语言的数学模型。
a)列举法:表示有限集合。
b)文化产生系统:由定义的文法规则产生语言。
c)机器识别系统:当一个字符串能被识别系统接受,则这个字符串是语言的一个句子。
d)BNF:讨论某种程序设计语言语法的元语言<数字><字母><标识符> <字母>|<标识符><字母>|<标识符><数字>“定义为”, “或者”, <>: “必须的部分”6.Chomsky文法体系:将BNF中的“”用“”代替,用字符代替汉字包含两个不同的有限符号的集合:非终结符和终结符,形式规则的有限集,起始符,文法,的集合,, 。
(21)第三章 第四讲 下推自动机

δ(q2,b,a)={(q2,ε)}, δ(q2,ε,Z0)={(q0,ε )} 。
一、有关概念
注意:在本例中,对于每一个格局的下一步 2、不确定的下推自动机 (即后继格局)都只有一种选择,这样的 构造一个 PDA M,能够接受语言L(M)={anbn|n≥1}。 实例: PDA称为确定的下推自动机(DPDA) 设 PDA M=(Q , T , Γ,δ, q0 , Z0 , F),其中: Q={q0,q1,q2} , T={a,b} , Γ={Z0,a} , F={q0} ,δ定义如下: δ(q0,a,Z0)={(q1,aZ0)}, δ(q1,a,a)={(q1,aa)}, PDA M的状态转换图如右: 当输入字符串aaabbb时,M的 工作过程是: (q0,aaabbb,Z0) (q1,aabbb,aZ0) (q1, bbb,aaaZ0) (q2,ε,Z0)
Z0:下推栈的起始符号,Z0∈Γ; F :终止状态集合,F∈Q; δ:转换函数,是从Q×(T∪{ε})×Γ到Q×Γ*的映射。
状态转换图:
当有转换函数δ(q,a,Z)={(p,α)} ( q,p∈Q,a∈T,Z∈Γ,α∈Γ*)时, 表示在状态q输入字符a且下推栈的栈顶字符为Z时,进入状态p,下 推栈的栈顶字符Z由字符串α替代,同时读头右移一位。 这个过程的状态转换图如右图所示: 结束标志。
一、有关概念
2、不确定的下推自动机 构造一个PDA M,能够接受语言L(M)={anbn|n≥1}。 实例:
设 PDA M=(Q , T , Γ,δ, q0 , Z0 , F),其中: Q={q0,q1,q2} , T={a,b} , Γ={Z0,a} , F={q0} ,δ定义如下: δ(q0,a,Z0)={(q1,aZ0)}, δ(q1,a,a)={(q1,aa)}, δ(q1,b,a)={(q2,ε)},
确定的下推自动机-Read

P2={B β |B Aβ ∈P,A∈V0, β ≠ε }. 令P’’=P- P1 +P2 从而,构造出G”=(N,T,S,P’’) 显然,G”中没有ε 产生式,如果G的某步推导中,用到 P中的产生式B Aβ (A∈V0 , β ≠ε ),而再以后的 每一步推导中,必须要用A ε 的,那么再G’’相应推导 中,用P’’中的 B β ,而不必用 Aε ,推导照样进行 ,; 反之亦然,L(G’’)=L(G) 再对G”应用定理1,2,便得到CFG G’=(N’,T’,S,P’), G’没有无用符号,且L(G’)= L(G’’)= L(G), 又P’ P’’,所以,G’也无ε 产生式,可得 无ε 字产生 式及无用符号的文法G’。
上一页 下一页 退 出
G是二义的 ω∈L(G),有两棵不同的语法树(叶子为ω) 定义:CFG G是二义的 ω∈L(G),有两T不同的最 左(右)推导 文法二义的语言二义表示字的文法均二义 定义:CFG
3.2上下文无关文法的改写 不改变文法描述能力前提下改写文法满足一定要求. 改写目标:将CFG改写成某种标准形式. (1) 改写成Chomsky范式:产生式形式均为:文法二义的
上一页 下一页 退 出
定理:CFG G=(N,T,S,P),若L(G)≠Φ , L(G)≠{ε },则 存在一个没有无用符号,没有ε 产生式的 CFG G‘=(N’,T’,S,P’),使:L(G’)=L(G) 证明:先构造一个与CFG G=(N,T,S,P)等价,又没有ε 产生式的CFG G”=(N,T,S,P”)。为此,先找出G中所 有的可零化的非终结符号。 设:V0={A| A ε ,A ∈N} 可零化的非终结符号。 构造V0: (1)若:A ε ∈P,则 A V0 (2)若:A X1X2 …Xn∈P,且Xi∈V0(1≤i≤n),则 A∈V0 (3)重复(2),直到没有新的非终结符加入V0为止, 现将P改造为P”: P1={A ε |A ε ∈P}
形式语言自动机——上下文无关文法与下推自动机三

13 第十三页,编辑于星期一:十四点 二十一分。
下推自动机的转换函数
? 转换函数 δ(q,a,Z)={ (p,α ) } q、p∈Q,a∈T,Z∈Γ,α∈Γ *
表示在状态 q,输入字符 a,且栈顶符 Z时,转入状态 p,栈 顶符 Z 由α 代替,同时读头右移一格。
? 约定: α的最左符号放在栈顶。 α= ε表示下推栈的顶符被弹出
College of Computer Science & Technology, BUPT
5 第五页,编辑于星期一:十四点 二十一分。
GNF 的构成步骤
1. 将2型文法变换为 CNF。(A→a,A→BC形式)
2.将非终结符排序 ,再进行代换。
对形如 Ai→Ajβ(j<i)的生成式进行代换,直至使 Ai→Alβ( l>i)。 3.消左递归。
… … (略)
注意:新引入的 Ai'相当于排在最低位。
College of Computer Science & Technology, BUPT
9 第九页,编辑于星期一:十四点 二十一分。
§4.4 下推自动机( PDA)
? 主要内容
? PDA 的基本概念。
? PDA 的构造举例。
? 用终态接受语言和用空栈接受语言的等价性。
Greibach 范式
? Greibach 范式 (GNF) 定义: ? 2 型文法 G=( N,T,P,S),若生成式的形式 都是A→aβ,A∈N,a∈T,β∈N *,且 G不含ε 生成式,则称 G为Greibach 范式,记为 GNF。
? 任何 2型文法都具有等效的 GNF(定理 4.3.2 )
如 δ(q,a,Z)= { (p,ε) } δ(q,ε,Z)={ (p,α) } 称为 ε转换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
..........
显然,上述无限状态的模型是无法用有限状态自动机来表示的, 因此需要扩充机器的能力。 下推自动机拥有一个容量不受限制的下推“栈”,所以它可以 解决许多实际问题。例如:对于非正则语言L(M)={anbn|n≥1},由于 PDA能够利用栈容量的无界性保存大量的信息,可以动态跟踪保存 a的个数,从而PDA能够识别这个语言。
注意1:上述定义中,“只含一个元素”保证了δ函数的“确定性”,
同时①②避免了在同样的状态、同样的栈顶元素下,在读入一个符 号时发生状态转移和在不读入字符时发生状态转移之间作选择的可 能性。也即在任何一个格局状态下只有唯一的一个后继格局。
注意2:不满足条件①②的PDA 即为不确定的PDA。与有限自动机
b b b b b b
..........
显然,上述无限状态的模型是无法用有限状态自动机来表示的, 因此需要扩充机器的能力。
一、有关概念
1、下推自动机的特点 引例:前面曾用泵浦定理(定理6)证明:L(M)={anbn|n≥1}不是正则
集。这就表明无法用有限自动机来识别该语言。这是因为: 对于任意的正整数k,至少必须有一个状态用以记住“k个a”, 则用状态转换图表示这种情况,在对任意大的n来说,有如下无限 状态转换图: a a a a ..........
δ(q2,b,a)={(q2,ε)}, δ(q2,ε,Z0)={(q0,ε )} 。
一、有关概念
在q2状态下,一旦遇见栈底元素Z0, 2、不确定的下推自动机 且此时剩余输入串恰好为空串,则弹 nbn|n≥1}。 构造一个PDA M,能够接受语言 L(M)={a 实例: 出Z0使栈为空,同时进入终止状态q0 从而以终止状态接受输入字符串。 设 PDA M=(Q , T , Γ,δ, q0 , Z0 , F),其中: Q={q0,q1,q2} , T={a,b} , Γ={Z0,a} , F={q0} ,δ定义如下: δ(q0,a,Z0)={(q1,aZ0)}, δ(q1,a,a)={(q1,aa)}, δ(q1,b,a)={(q2,ε)},
q0 q2
δ(q1,b,a)={(q2,ε)},
a,a/aa q1
δ(q2,b,a)={(q2,ε)}, δ(q2,ε,Z0)={(q0,ε )} 。
b,a/ε
(q1, abbb,aaZ0) (q2, bb,aaZ0) (q2, b,aZ0)
b,a/ε
(q0,ε,ε)
一、有关概念
即只有一个函数值 2、不确定的下推自动机 确定的下推自动机之定义: 下推自动机M=(Q,T,Γ,δ,q0,Z0,F),如果是确定的,必须满足以下 两个条件之一: 对任意的q∈Q,Z∈Γ和a∈T,有: ① δ(q,a,Z)只含一个元素,且δ(q,ε,Z) =Ф(即函数值无定义); ② δ(q,a,Z)=Ф(函数值无定义),且δ(q,ε,Z) 只含一个元素。
一、有关概念
2、不确定的下推自动机 构造一个PDA M,能够接受语言L(M)={anbn|n≥1}。 实例:
设 PDA M=(Q , T , Γ,δ, q0 , Z0 , F),其中: Q={q0,q1,q2} , T={a,b} , Γ={Z0,a} , F={q0} ,δ定义如下: δ(q0,a,Z0)={(q1,aZ0)}, δ(q1,a,a)={(q1,aa)}, δ(q1,b,a)={(q2,ε)},
δ(q2,b,a)={(q2,ε)}, δ(q2,ε,Z0)={(q0,ε )} 。
一、有关概念
此处ε表示弹出栈顶元素a,即以空元素 2、不确定的下推自动机 替代栈顶元素a(也既输入的第一个 nbn|n≥1}。 构造一个PDA M,能够接受语言 L(M)={a 实例: 字符b应与栈顶的a相匹配,故弹出该 字符 a,同时进入状态q2) 设 PDA M=(Q , T , Γ,δ, q0 , Z0 , F),其中: Q={q0,q1,q2} , T={a,b} , Γ={Z0,a} , F={q0} ,δ定义如下: δ(q0,a,Z0)={(q1,aZ0)}, δ(q1,a,a)={(q1,aa)}, δ(q1,b,a)={(q2,ε)},
接受语言的两种方式:
终止状态方式接受:当PDA以终止状态接受语言L(M)时,有: L(M)={w | (q0,w,Z0) * (q,ε,α),且 q∈F,α∈Γ*} 空栈方式接受:当PDA以空栈接受语言Lφ(M)时,有: * (q,ε,ε),且 q是Q中的任意状态} Lφ(M)={w | (q0,w,Z0)
第三章
上下文无关文法与下推自动机
第四讲 下推自动机
一、有关概念
1、下推自动机的特点 特点:下推自动机PDA(Push Down Automaton)是一种类似于NFA
的新型计算机模型,它比NFA多了一个下推栈。下推栈在控制器的 有限存储量之外增加了一个附加的存储,从而使得下推自动机能够 识别某些非正则语言。 引例:前面曾用泵浦定理(定理6)证明:L(M)={anbn|n≥1}不是正则 集。这就表明无法用有限自动机来识别该语言。这是因为: 对于任意的正整数k,至少必须有一个状态用以记住“k个a”, 则用状态转换图表示这种情况,在对任意大的n来说,有如下无限 状态转换图: a a a a ..........
Z0:下推栈的起始符号,Z0∈Γ; F :终止状态集合,F∈Q; δ:转换函数,是从Q×(T∪{ε})×Γ到Q×Γ*的映射。
状态转换图:
当有转换函数δ(q,a,Z)={(p,α)} ( q,p∈Q,a∈T,Z∈Γ,α∈Γ*)时, 表示在状态q输入字符a且下推栈的栈顶字符为Z时,进入状态p,下 推栈的栈顶字符Z由字符串α替代,同时读头右移一位。 这个过程的状态转换图如右图所示: 结束标志。
采用终止状态接收方式
δ(q2,b,a)={(q2,ε)}, δ(q2,ε,Z0)={(q0,ε )} 。
一、有关概念
在q1状态下,读入字符a时,用aa替代栈顶元 2、不确定的下推自动机 素a,状态保持不变(即在状态q1下,用栈来记 nbn|n≥1}。 构造一个PDA 录 M ,能够接受语言 L(M)={a 实例: a的个数,将所有的a压入栈中)。 设 PDA M=(Q , T , Γ,δ, q0 , Z0 , F),其中: Q={q0,q1,q2} , T={a,b} , Γ={Z0,a} , F={q0} ,δ定义如下: δ(q0,a,Z0)={(q1,aZ0)}, δ(q1,a,a)={(q1,aa)}, δ(q1,b,a)={(q2,ε)},
过上下文无关文法是以产生语言的方式而存在的;而下推自动机是 以识别语言的方式而存在的。这个等价性对于后面许多定理的证明 来说提供了很多方便。
注意2:有些语言用生成器(文法)描述较为容易,而另一些语言
又可能用识别器(下推自动机)描述更容易一些。
注意3:下推自动机(PDA)与有限自动机类似,亦分为确定的下推
一、有关概念
1、下推自动机的特点 组成:下推自动机(PDA)是由一条输入带、一个有限控制器和一个
下推栈组成的。其示意图如下:
a
b
b
b
c
c
输入带
a
......
有限控制器
下 推 栈
A B C Z0 . .
栈顶元素
栈底元素
一、有关概念
1、下推自动机的特点 注意1:下推自动机(PDA)在能力上与上下文无关文法等价。只不
若当前状态为q,当前读入字符为a,若有状态 转换函数δ(q,a)=q1 , 则状态变换后的后继状态为q1, 此时可用格局变化形式描述这一变换过程: (q,aw)├─(q1,w) 。
一、有关概念
这里q是任意状态,说明空栈接受时 用γ字符串替换栈顶Z, 2、不确定的下推自动机 对终止状态没有要求,因此可以认为 aF 为当前输入字符 终止状态集 为空集Ф 。 注意:这里第一个 ε 表示此时 w 恰好被读完; 格局及其应用: 第二个ε表示此时栈恰好为空。 格局是一个三元组:(q,w,α),其中:q是当前状态(q∈Q);w是待输 入的字符串(w∈T*,当w=ε时,表示输入字符均已读完);α是栈中内容 注意:ε) 表示此时 w恰好被读完,q∈F表 (α∈Γ*,当α=ε时表示下推栈已弹空 。 示此时也恰好进入终止状态。 格局描述下推自动机的瞬时工作状况: 当转换函数δ(q,a,Z)={(p,γ)} 时,可用格局表示为: (q , aw , Zα) (p , w , γα)
δ(q2,b,a)={(q2,ε)}, δ(q2,ε,Z0)={(q0,ε )} 。
一、有关概念
注意:在本例中,对于每一个格局的下一步 2、不确定的下推自动机 (即后继格局)都只有一种选择,这样的 构造一个 PDA M,能够接受语言L(M)={anbn|n≥1}。 实例: PDA称为确定的下推自动机(DPDA) 设 PDA M=(Q , T , Γ,δ, q0 , Z0 , F),其中: Q={q0,q1,q2} , T={a,b} , Γ={Z0,a} , F={q0} ,δ定义如下: δ(q0,a,Z0)={(q1,aZ0)}, δ(q1,a,a)={(q1,aa)}, PDA M的状态转换图如右: 当输入字符串aaabbb时,M的 工作过程是: (q0,aaabbb,Z0) (q1,aabbb,aZ0) (q1, bbb,aaaZ0) (q2,ε,Z0)
自动机(DPDA)和不确定的下推自动机(NPDA)。
一、有关概念 约定:①当|α|>1时,α的最左位放在栈的最高位;②
生改变,且栈顶元素被α替换。 Q:有限控制器的状态集合; T:有限的输入字母表; Γ:有限的下推栈字母表; q0 :初始状态,q0∈Q;
2、不确定的下推自动机 当α=ε时,表示栈顶符号Z被弹出。③当a=ε时,称为ε 转换,这时不考虑输入字符,读头不移动,但状态发 定义:下推自动机 M是一个七元组:M=(Q,T,Γ,δ,q0,Z0,F),其中