第七章:下推自动机.

合集下载

计算理论导引习题答案

计算理论导引习题答案

什么是时间复杂度?请举例说 明。
时间复杂度是评价算法执行时 间快慢的一个指标,通常用大O 表示法来表示。例如,对于一 个简单的顺序查找算法,其时 间复杂度为O(n),表示随着问 题规模n的增加,算法的执行时 间线性增长。
计算模型习题答案详解
习题1
解释图灵机的基本原理和工作过程。
答案
图灵机是一种理论上的计算模型,由一条无限长的纸带和一个读写头组成。读写头可以读取、写入和移动纸带上 的符号,根据当前状态和读取的符号来决定下一步的动作和状态转移。图灵机的工作过程可以模拟任何计算机程 序的执行过程。
RAM模型的扩展与优化
包括引入并行计算、分布式计算等概念,以 提高RAM模型的计算能力和效率。
其他计算模型
量子计算模型
利用量子力学原理进行计算的模型,具有在某些特定 问题上比传统计算机更高的计算效率。
生物计算模型
模拟生物体内信息处理过程的计算模型,如神经网络、 基因算法等。
光计算模型
利用光学原理进行计算的模型,具有高速并行处理和 低能耗等优点。
形式语言与自动机习题答案详解
习题1
解释什么是形式语言,并给出其定义和性质 。
答案
形式语言是பைடு நூலகம்于描述计算机程序的语法和语 义的一种数学工具。它由一组符号和一组规 则组成,可以表示各种不同类型的数据结构 和算法。形式语言具有确定性、封闭性和可 计算性等性质,这些性质使得我们可以对计
算机程序进行精确的描述和分析。
Python语言基础 掌握Python语言的基本语法、数 据类型、控制结构、函数等,以 及常用的Python库和框架。
其他编程语言 了解其他常见的编程语言,如C#、 JavaScript、Go等,以及它们的 特点和应用场景。

第七章:下推自动机

第七章:下推自动机
n是├M 的n次幂
– (q1,ω1,β1)├Mn(qn,ωn,βn)
• ├M*是├M 的克林闭包
– (q,ω,α)├M*(p,x,β)
• ├M+是├M 的正闭包
– (q,ω,α)├M+(p,x,β)
7.1 基本定义
• 例 7-1 考虑接受语言L={ω2ωT | ω∈{0,1}*} 的PDA的设计。 • 解法1:首先是根据PDA的构造过程、工作 原理和GNF的最左派生来分析。 • 先设计产生L的CFG G1: G1:S2|0S0|1S1 • 再将此文法转化成GNF: G2:S2|0SA|1SB A 0 B1
7.1 基本定义
δ(q , ε , Z)={(p 1 , γ 1 ) , (p 2 , γ 2 ) , … , (pm,γm)}
• 空移动:表示M进行一次ε-移动(空移动), 即M在状态q,栈顶符号为Z时,无论输入 符号是什么,对于i=1,2,…,m,可以选 择地将状态变成pi,并将栈顶符号Z弹出, 将γi中的符号从右到左依次压入栈,读头不 移动。
第7章下推自动机
• 主要内容
– – – – PDA的基本概念。 PDA的构造举例。 用终态接受语言和用空栈接受语言的等价性。 PDA是CFL的接受器。
• 重点
– PDA的基本定义及其构造,PDA是CFL的等价描述。
• 难点
– 根据PDA构造CFG。
7.1 基本定义
• PDA应该含有三个基本结构
– 存放输入符号串的输入带。 – 存放文法符号的栈。 – 有穷状态控制器。
• PDA的动作
– 在有穷状态控制器的控制下根据它的当前状态、 栈顶符号、以及输入符号作出相应的动作,在 有的时候,不需要考虑输入符号。
7.1 基本定义

编译原理练习题及答案

编译原理练习题及答案

第一章练习题(绪论)一、选择题1.编译程序是一种常用的软件。

A) 应用B) 系统C) 实时系统D) 分布式系统2.编译程序生成的目标代码程序是可执行程序。

A) 一定B) 不一定3.编译程序的大多数时间是花在上。

A) 词法分析B) 语法分析C) 出错处理D) 表格管理4.将编译程序分成若干“遍”将。

A)提高编译程序的执行效率;B)使编译程序的结构更加清晰,提高目标程序质量;C)充分利用内存空间,提高机器的执行效率。

5.编译程序各个阶段都涉及到的工作有。

A) 词法分析B) 语法分析C) 语义分析D) 表格管理6.词法分析的主要功能是。

A) 识别字符串B) 识别语句C) 识别单词D) 识别标识符7.若某程序设计语言允许标识符先使用后说明,则其编译程序就必须。

A) 多遍扫描B) 一遍扫描8.编译方式与解释方式的根本区别在于。

A) 执行速度的快慢B) 是否生成目标代码C) 是否语义分析9.多遍编译与一遍编译的主要区别在于。

A)多遍编译是编译的五大部分重复多遍执行,而一遍编译是五大部分只执行一遍;B)一遍编译是对源程序分析一遍就立即执行,而多遍编译是对源程序重复多遍分析再执行;C)多遍编译要生成目标代码才执行,而一遍编译不生成目标代码直接分析执行;D)多遍编译是五大部分依次独立完成,一遍编译是五大部分交叉调用执行完成。

10.编译程序分成“前端”和“后端”的好处是A)便于移植B)便于功能的扩充C)便于减少工作量D)以上均正确第二章练习题(文法与语言)一、选择题1.文法 G 产生的 (1) 的全体是该文法描述的语言。

A.句型B. 终结符集C. 非终结符集D. 句子2.若文法 G 定义的语言是无限集,则文法必然是 (2) A递归的 B 上下文无关的 C 二义性的 D 无二义性的3. Chomsky 定义的四种形式语言文法中, 0 型文法又称为(A)文法;1 型文法又称为(C)文法;2 型语言可由(G) 识别。

A 短语结构文法B 上下文无关文法C 上下文有关文法D 正规文法E 图灵机F 有限自动机G 下推自动机4.一个文法所描述的语言是(A);描述一个语言的文法是(B)。

编译原理_选择题 已编辑好

编译原理_选择题 已编辑好

第一章:用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行。

这种说法正确的是( )A. 正确B. 不正确C. 不一定D. 都不对32.在编译过程中,组织的符号表是( )A.必须是唯一的B.应当按符号的不同属性分为几个C.可以唯一的也可按符号表不同属性分为几个D.以上均不对37.程序基本块是指( )A.一个子程序B.一个仅有一个入口和一个出口的语句C.一个没有嵌套的程序段D.一组顺序执行的程序段,仅有一个入口和一个出口48.下面不是翻译程序的是( )A.编译程序 B.源程序 C.解释程序 D.汇编程序55.面对众多的源语言的词法分析程序,总体上,超前读入和某种假读处理是( ) A.可以避免的 B.不可以避免的 C.徒劳无益的 D.以上均不对78.在编译过程中,组织的符号表是( )A必须是唯一的B应当按符号的不同属性分为几个C可以唯一的也可按符号表不同属性分为几个D以上均不对66.下面不是与机器无关的优化的是( )A.合并常量 B.消除公共子表达式C.削减运算强度 D.多处理器的优化75.下面哪个不是与机器有关的优化?( )A.寄存器的优化 B.消除公共子表达式C.无用代码的优化 D.多处理器的优化68.程序基本块是指( )A.一个子程序B.一个仅有一个入口和一个出口的语句C.一个没有嵌套的程序段D.一组顺序执行的程序段,仅有一个入口和一个出口70.编译程序根据原程序的什么区分标识符的作用域?( )A.标识符被说明的过程或函数名B.标识符被说明的过程或函数的静态层次C.标识符的行号 D.标识符被说明的过程或函数的动态层次4. 编译程序必须完成的工作有 a .(1) 词法分析(2) 语法分析(3) 语义分析(4) 代码生成(5) 之间代码生成(6) 代码优化a. (1)(2)(3)(4)b. (1)(2)(3)(4)(5)c. (1)(2)(3)(4)(5)(6)d. (1)(2)(3)(4)(6)e. (1)(2)(3)(5)(6)5.编译程序是对_d____。

第七章 下推自动机

第七章 下推自动机

(3)若 M1 到达终态,则 M2 进入清栈状态q e
∀( q, ε, Z ) ∈ F×{ ε }×Γ, δ2 ( q, ε, Z ) = {( qe, ε )}
( 4 ) M2 连续弹栈,完成清栈工作:
对于 ∀Z ∈ Γ ∪{ Z02 } , δ2 ( qe, ε, Z ) = {( qe, ε )} 。
经过若干次(包含零次)移动,变成( p, x, β )。
( q, w, α )
+ M
( p, x, β ):表示 M 的 ID 从( q, w, α )出发,
经过至少一次移动,变成( p, x, β )。
这里, 1、字符串 x 是 w 的后缀; 2、意义清楚时,可省去 ID 推导符中的 M,分别记为:
以终态方式接受语言的下推自动机 M = ( Q, Σ, Γ, δ , q0, Z0, F ) 或
以空栈方式接受语言的下推自动机 M = ( Q, Σ, Γ, δ , q0, Z0, Φ ),其中
Q: 状态的非空有穷集合;
Σ: 输入字母表;
Γ : 栈字母表; Z0: 起始栈底符号,( Z0 ∈ Γ); F: 终止状态集合, F ⊆ Q;
栈符号:A - 0;B - 1;Z0 -栈底符号
N(M4)= L ; 结束标志:( p, ε, ε ) 。
第七章 下推自动机
下推自动机( PDA ) PDA 两种接受语言方式的等价 确定的下推自动机(DPDA) PDA 与 CFG 等价
PDA 两种接受语言方式等价
定理 7 - 1:
对于任意终态方式接受语言 L 的 PDA M1,存在空栈方式接受 语言 L 的 PDA M2, 使得 N ( M2) = L(M1)。
L = { w2wR | w ∈ { 0,1}* }

形式语言与自动机复习总结

形式语言与自动机复习总结

形式语言与自动机复习总结适合《形式语言与自动机》(第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中的“”用“”代替,用字符代替汉字包含两个不同的有限符号的集合:非终结符和终结符,形式规则的有限集,起始符,文法,的集合,, 。

下推自动机的状态转换图与下推自动机的化简

下推自动机的状态转换图与下推自动机的化简
ZHANG i u W U h - i j— n , J Z e Hu。
( o l eo no main h n o g Un v ri r u t r 。Ta ’n 2 1 1 ) C l g f fr t ,S a d n ie st Ag i l e e I o y c u i 7 0 8 a ( olg f n o ma inS a d n , ie s yo ce c n c n lg 。 n d o 6 5 0 C l eo f r t h n o g Unv ri f in ea d Te h oo y Qig a 2 6 1 ) e I o t S
关键词状态转换图标准下椎自动机化简行为等价状态等价statetransitiondiagramofpushdownautomataandsimplificationofpushdownautomatazhangjijunl?2wuzhehui2collegeofinformationshandonguniversityagriculturetaian2710181collegeofinformationshandonguniversityofscienceandtechnologyqingda02665102ahstranaccording10themethodoffiniteautomationdiagramdescriptionthedmgramdescriptionofnormalformofpushdownautomatathepadstatetransitiondiagramisdiscusseditisproofedthatpushdovmautomat1sequipollencewithnormalformofpushdownautomatatherulesthatnorlnaiformofpushdownautomataissimplifiedandthealgorithmofsimplificationaregivent11esimplificationofpushdownautomataisimplementeclkeywmdsstatetransitiondiagramnommlformofpushdownautomatasimplificationbehaviorequivaencestateequivalence1引言有限状态自动机是正规语言的识别系统而有限状态自动机可以用状态图直观的描述借助于状态图可以更直观明确容易地理解正规语言的性质及其语言的形成过程并进一步对有限自动机确定化及化简的认识和理解利用最简的确定有限自动机可以更简单容易分析对应的le规语言的性质

编译原理笔记7 自上而下语法分析-下推自动机

编译原理笔记7 自上而下语法分析-下推自动机

1.引言
1)语法分析的地位:是编译程序的核心部分。

2)语法分析的任务:识别由词法分析得到的单词序列是否是给定文法的句子。

3)语法分析的理论基础:上下文无关文法和下推自动机。

4)语法分析的方式:(1)自上而下语法分析:反复使用不同产生式进行推导以谋求与输入符号串相匹配。

(2)自下而上语法分析:对输入符号串寻找不同产生式进行规约直到文法开始符号。

注:这里所说的输入符号指词法分析所识别的单词。

2.下推自动机:
1)下推自动机模型
2)下推自动机的形式定义:
注:a.由此定义的PDA肯定是不确定的PDA。

这给语法分析会带来不确定性。

我们在构造PDA M的算法的时候,要对PDA做一些限制。

b.PDA采用“|-”来表示PDA做了一步动作。

C.输入串能为PDA所接受,仅当输入串读完,下推栈为空;或者输入串读完,控制器到达某些终态。

D.有时,下推自动机还配置输出带,以记录推导或规约过程所有的产生式编号。

e.对于形如A->ω的产生式,有§(q,空串,A)=(q,ω),这称为推导。

形式语言和自动机上下文无关文法与下推自动机课堂PPT

形式语言和自动机上下文无关文法与下推自动机课堂PPT

(3)由(q1,)(q1, 1, X) 得 [q1 ,X ,q1] 1;
(4)由(q2,)(q1, , Z0) 得 [q1 ,Z0 ,q2] ;
(5)由(q0,XZ0)(q0, 0, Z0) 得 [q0 ,Z0 ,qj] 0[q0 ,X ,qi] [qi ,Z0 ,qj] , i, j = 0,1,2;
从上下文无关文法构造等价的下推自动机
定理4.5.1(由CFG可导出PDA): 设上下文无关文法G=(N,T,P,S),产生语
言L(G),则存在PDA M,以空栈接受语言Lφ(M), 使Lφ(M)=L(G)。
证明:构造下推自动机M,使M按文法G的最左推导 方式工作。
1
从上下文无关文法构造等价的下推自动机
q0 b, A/ε
b, A/ε ε, A/ε
q1 ε, z0/ε
(3) 对①式δ(q0,a,z0)={( q0, A z0)} , ∵所有可能的状态序列为:q0q0,q1q0,q0q1,q1q1 ∴可构造出产生式:
[q0,z0,q0]→ a [ q0,A, q0 ][ q0,z0, q0 ] [q0,z0,q0]→ a [ q0,A, q1 ][ q1,z0, q0 ] [ q0,z0,q1]→ a [ q0,A, q0 ][ q0,z0, q1 ] [ q0,z0,q1]→ a [ q0,A, q1 ][ q1,z0, q1 ]
then A w.
归纳于 (q, w,A)├*(q, , ) 的步数 n.
基础 n=1,必有 w = ,且 A 为 G 的产生式,所以 A w.
归纳 n>1,设第一步使用产生式 AX1X2…Xm , 可以将w 分为 w = w 1 w 2… w m ,满足 (q, wi , Xi )├*(q, , ),

下推自动机的设计例题

下推自动机的设计例题

下推自动机的设计例题【最新版】目录1.下推自动机的概念与应用2.设计例题的要求与目标3.设计例题的解决方案4.解决方案的实现与验证5.总结与展望正文1.下推自动机的概念与应用下推自动机(Pushdown Automaton)是一种用来描述和实现上下文无关文法(Context-Free Grammar,简称 CFG)的计算模型。

在编译原理中,下推自动机被广泛应用于语法分析、词法分析等领域。

下推自动机由一个状态集合、一个堆栈字母表和一个转移函数组成,能够识别并生成由堆栈字母表中的符号组成的字符串。

2.设计例题的要求与目标本设计例题的目标是帮助学生理解下推自动机的工作原理和应用方法,通过实际操作加深对相关概念的理解。

要求学生设计一个简单的下推自动机,用于识别一个给定的上下文无关文法,并能够生成该文法所表示的字符串。

3.设计例题的解决方案为了完成这个设计例题,我们需要按照以下步骤进行:(1)首先,选择一个简单的上下文无关文法,例如:a → bc 或 ab → c。

(2)根据所选文法,设计一个相应的下推自动机。

这包括确定状态集合、堆栈字母表和转移函数。

(3)编写一个程序来实现设计的下推自动机,使用堆栈数据结构模拟下推自动机的工作过程。

(4)使用所编写的程序,验证设计的下推自动机是否能够正确识别给定的文法并生成相应的字符串。

4.解决方案的实现与验证以文法 a → bc 为例,我们可以设计如下的下推自动机:状态集合:{q0, q1, q2, q3, q4, q5}堆栈字母表:{a, b, c}转移函数:δ(q0, a, a) = {(q1, b)},δ(q1, a, b) = {(q2, c)},δ(q2, a, c) = {(q3, ε)},δ(q3, b, ε) = {(q4, a)},δ(q4, a, a) = {(q5, ε)},δ(q5, ε, ε) = {(q0, a)}。

根据上述设计,我们可以编写一个简单的程序来实现该下推自动机。

第七章:下推自动机

第七章:下推自动机

7.1 基本定义
• 两种移动 • δ(q,a,Z)={(p1,γ1),(p2,γ2),…,(pm, γm)} • 有输入的移动:表示M在状态q,栈顶符号 为Z时,读入字符a,对于i=1,2,…,m, 可以选择地将状态变成pi,并将栈顶符号Z 弹出,将γi中的符号从右到左依次压入栈, 然后将读头向右移动一个带方格而指向输 入字符串的下一个字符。
7.1 基本定义
• 符号使用约定 • 英文字母表较为前面的小写字母,如a,b, c,…,表示输入符号; • 英文字母表较为后面的小写字母,如x,y, z,…,表示由输入字符串; • 英文字母表的大写字母,表示栈符号; • 希腊字母α,β,γ,…,表示栈符号串。
7.1 基本定义
7.1 基本定义
• 即时描述(instantaneous description,ID) (q,ω,γ)∈(Q,∑*,Γ*)称为M的一个 即时描述。它表示M处于状态q,ω是当前 还未处理的输入字符串,而且M正注视着ω 的首字符,栈中的符号串为γ,γ的最左符 号为栈顶符号,最右符号为栈底的符号, 较左的符号在栈的较上面,较右的符号在 栈的较下面。
7.1 基本定义
• Z0——Z0∈Γ叫做开始符号(start symbol), 是 M 启动时候栈内惟一的一个符号。所以, 习惯地称其为栈底符号; • q0——q0∈Q,是M的开始状态(initial state), 也可叫做初始状态或者启动状态; • F——FQ,是M的终止状态(final state)集 合,简称为终态集。q∈F,q称为M的终 止状态,也可称为接受状态(accept state), 简称为终态。
7.1 基本定义
如果(p,γ)∈δ(q,a,Z),a∈∑,则 (q,aω,Zβ)├M(p,ω,γβ) 表示M做一次非空移动,从ID(q,aω,Zβ) 变成ID(p,ω,γβ)。 如果(p,γ)∈δ(q,ε,Z),则 (q,ω,Zβ)├M(p,ω,γβ) 表示M做一次空移动,从ID(q,aω,Zβ)变成 ID(p,ω,γβ) 。

下推自动机

下推自动机

下推自动机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),输入的字符串不能被接受。

下推自动机

下推自动机

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),输入的字符串不能被接受。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 下推自动机(pushdown automaton,PDA) M= (Q,∑,Γ,δ,q0,Z0,F) Q——状态的非空有穷集合。q∈Q,q称为 M的一个状态(state); ∑——输入字母表(input alphabet)。要求M的 输入字符串都是∑上的字符串; Γ——栈符号表(stack alphabet)。A∈Γ,叫 做一个栈符号;
7.1 基本定义
• 符号使用约定 • 英文字母表较为前面的小写字母,如a,b, c,…,表示输入符号; • 英文字母表较为后面的小写字母,如x,y, z,…,表示由输入字符串; • 英文字母表的大写字母,表示栈符号; • 希腊字母α,β,γ,…,表示栈符号串。
7.1 基本定义
7.1 基本定义
• 即时描述(instantaneous description,ID) (q,ω,γ)∈(Q,∑*,Γ*)称为M的一个 即时描述。它表示M处于状态q,ω是当前 还未处理的输入字符串,而且M正注视着ω 的首字符,栈中的符号串为γ,γ的最左符 号为栈顶符号,最右符号为栈底的符号, 较左的符号在栈的较上面,较右的符号在 栈的较下面。
第7章下推自动机
• 主要内容
– – – – PDA的基本概念。 PDA的构造举例。 用终态接受语言和用空栈接受语言的等价性。 PDA是CFL的接受器。
• 重点
– PDA的基本定义及其构造,PDA是CFL的等价描述。
• 难点
– 根据PDA构造CFG。
7.1 基本定义
• PDA应该含有三个基本结构
– 存放输入符号串的输入带。 – 存放文法符号的栈。 – 有穷状态控制器。
第7章下推自动机
通过提出的栈,再来构造下推自动机。
Hale Waihona Puke 问题:为什么用栈,而不用队列或者 树等其他模型?
第7章下推自动机
• PDA描述CFL,所以它应该与CFG等价。 • PDA应该包含FA的各个元素,或者包含那 些可以取代FA的各个元素的功能的元素。 • PDA按照最左派生的派生顺序,处理处于 当前句型最左边的变量,因此,需要采用 栈作为其存储机构。 • 按照FA的“习惯”,PDA用终态接受语言。 • 模拟GNF的派生PDA用空栈接受语言。 怎 么理解?
7.1 基本定义
条件 当前状态 有输入 栈顶符号 输入符号 输入为空 当前状态 栈顶符号 响应 新状态 修改栈顶 右移读写头 新状态 修改栈顶
7.1 基本定义
图像模拟
a
b
c
S S S A A β
β Z Z

↑ ↑
FSC
p → q
7.1 基本定义
• M接受的语言 : – M用终态接受的语言 • L(M)={ω | (q0,ω,Z0)├*(p,ε,β)且 p∈F} – M用空栈接受的语言 • N(M) ={ω | (q0,ω,Z0)├*(p,ε,ε)}
7.1 基本定义
• 两种移动 • δ(q,a,Z)={(p1,γ1),(p2,γ2),…,(pm, γm)} • 有输入的移动:表示M在状态q,栈顶符号 为Z时,读入字符a,对于i=1,2,…,m, 可以选择地将状态变成pi,并将栈顶符号Z 弹出,将γi中的符号从右到左依次压入栈, 然后将读头向右移动一个带方格而指向输 入字符串的下一个字符。
7.1 基本定义
• ├Mn是├M 的n次幂
– (q1,ω1,β1)├Mn(qn,ωn,βn)
• ├M*是├M 的克林闭包
– (q,ω,α)├M*(p,x,β)
• ├M+是├M 的正闭包
– (q,ω,α)├M+(p,x,β)
7.1 基本定义
• 例 7-1 考虑接受语言L={ω2ωT | ω∈{0,1}*} 的PDA的设计。 • 解法1:首先是根据PDA的构造过程、工作 原理和GNF的最左派生来分析。 • 先设计产生L的CFG G1: G1:S2|0S0|1S1 • 再将此文法转化成GNF: G2:S2|0SA|1SB A0 B1
7.1 基本定义
δ(q , ε , Z)={(p 1 , γ 1 ) , (p 2 , γ 2 ) , … , (pm,γm)}
• 空移动:表示M进行一次ε-移动(空移动), 即M在状态q,栈顶符号为Z时,无论输入 符号是什么,对于i=1,2,…,m,可以选 择地将状态变成pi,并将栈顶符号Z弹出, 将γi中的符号从右到左依次压入栈,读头不 移动。
7.1 基本定义
如果(p,γ)∈δ(q,a,Z),a∈∑,则 (q,aω,Zβ)├M(p,ω,γβ) 表示M做一次非空移动,从ID(q,aω,Zβ) 变成ID(p,ω,γβ)。 如果(p,γ)∈δ(q,ε,Z),则 (q,ω,Zβ)├M(p,ω,γβ) 表示M做一次空移动,从ID(q,aω,Zβ)变成 ID(p,ω,γβ) 。
第7章下推自动机
• FA是识别和处理RL的装置,而RL是CFL 的一个子集,所以在构造PDA时应该兼顾 到FA对RL的处理方式。 • 理解:构造下推自动机的思路,首先我们 要构造处理CFL的工具,所以从CFL出发, CFL可以经过若干部转化成为GNF,主要 因为GNF的语法规则是最左派生,由于有 统一的规则决定其更容易被处理。
• PDA的动作
– 在有穷状态控制器的控制下根据它的当前状态、 栈顶符号、以及输入符号作出相应的动作,在 有的时候,不需要考虑输入符号。
7.1 基本定义
• PDA的物理模型
7.1 基本定义
比较: • PDA M= (Q,∑,Γ,δ,q0,Z0,F) • FA M= (Q,∑, δ,q0, F)
7.1 基本定义
7.1 基本定义
• δ——状态转移函数(transition function),有 时候又叫做状态转换函数或者移动函数。 δ:Q×(∑∪{ε})×Γ
2
Q *
δ(q,a,Z)={(p1,γ1),(p2,γ2),…, (pm,γm)} 思考: 对应的转移具有选择性,这是不 是表明DFA是非确定的呢?
7.1 基本定义
• Z0——Z0∈Γ叫做开始符号(start symbol), 是 M 启动时候栈内惟一的一个符号。所以, 习惯地称其为栈底符号; • q0——q0∈Q,是M的开始状态(initial state), 也可叫做初始状态或者启动状态; • F——FQ,是M的终止状态(final state)集 合,简称为终态集。q∈F,q称为M的终 止状态,也可称为接受状态(accept state), 简称为终态。
相关文档
最新文档