形式语言自动机——上下文无关文法与下推自动机(三)

上传人:mg****85 文档编号:55374262 上传时间:2018-09-28 格式:PPT 页数:25 大小:311.50KB
返回 下载 相关 举报
形式语言自动机——上下文无关文法与下推自动机(三)_第1页
第1页 / 共25页
形式语言自动机——上下文无关文法与下推自动机(三)_第2页
第2页 / 共25页
形式语言自动机——上下文无关文法与下推自动机(三)_第3页
第3页 / 共25页
形式语言自动机——上下文无关文法与下推自动机(三)_第4页
第4页 / 共25页
形式语言自动机——上下文无关文法与下推自动机(三)_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《形式语言自动机——上下文无关文法与下推自动机(三)》由会员分享,可在线阅读,更多相关《形式语言自动机——上下文无关文法与下推自动机(三)(25页珍藏版)》请在金锄头文库上搜索。

1、1,College of Computer Science & Technology, BUPT,4.3 Chomsky范式和Greibach范式,Chomsky范式定义:2型文法G(N,T,P,S),若生成式形式都是ABC和Aa,A、B、CN,aT,则G是Chomsky范式。若L(G),则S是P的一个生成式,但S不能在任何其它生成式的右边。 每个上下文无关文法都具有等效的CNF(定理4.3.1),2,College of Computer Science & Technology, BUPT,CNF 的构成步骤,1. 用算法1、2、3、4消除生成式、无用符号、单生成式 2. 对生成式AD1D

2、2Dn n2若DiT,则引入新生成式BiDi,Bi是新非终结符若DiN,则令BiDi,从而将原生成式变化为AB1B2Bn n2当n2 时,再将其变为AB1C1,C1B2C2,C2B3C3,Cn1Bn1BnCi是新引入的非终结符。定理证明自学,3,College of Computer Science & Technology, BUPT,CNF 的构成例,例: (书P148 例1)设G(A,B,S,a,b,P,S)是无、无循环、无无用符号、无单生成式的文法。P:SaABBA ABBBa BASb求等效的CNF G1 解: SBA,Aa,BAS, Bb已是CNF 加入到P1中 对SaAB,将其变

3、换为 SCaC1,Caa,C1AB将ABBB变换为 ABC2,C2BB.,4,College of Computer Science & Technology, BUPT,CNF 的构成例,例: 2型文法G(A,B,S,a,b,P,S)P: SbAaB AbAAaSa BaBBbSb求等效的CNF 解:SCbACaB,增加Cbb,C2aACbDCaSa,增加DAABCaECbSb,增加EBB,5,College of Computer Science & Technology, BUPT,Greibach范式,Greibach范式 (GNF)定义: 2型文法G(N,T,P,S),若生成式的形式

4、都是Aa,AN,aT,N*,且G不含生成式,则称G为Greibach范式,记为GNF。 任何2型文法都具有等效的GNF(定理4.3.2),6,College of Computer Science & Technology, BUPT,GNF 的构成步骤,1. 将2型文法变换为CNF。(Aa,ABC形式) 2.将非终结符排序,再进行代换。对形如AiAj(ji)。 3.消左递归。对最高的AnAn进行变换,使An生成式变为终结符开头。 4.回代。将An生成式回代入An1生成式,使其右部首符为终结符,将An1生成式回代入An2生成式,使其右部首符为终结符 5. 最后将消直接左递归时引入的A1、 A2

5、、An生成式右部进行代换。使其首符变为终结符。,7,College of Computer Science & Technology, BUPT,GNF 的构成例,例: (书P149 例2) 设已有CNF: ABC, BCAb, CABa, 将其变换为GNF。 解: 按其非终结符排列为A、B、C,A是低位,C是高位。 、中,右部首符序号高于左部的非终结符 无需变换。 对,需要变换, 将代入得 CBCBa , 仍需变换, 将代入得 CCACBbCBa ,8,College of Computer Science & Technology, BUPT,GNF 的构成例, 对上述变换后所得结果消直接

6、左递归 对CCACBbCBa 变换为1 1 2C121C2CC 11 C即 CbCBabCBC aC CACBACBC ,9,College of Computer Science & Technology, BUPT,GNF 的构成例, 回代 将C的生成式回代入B的生成式BCAb 被变换为BbCBAaAbCBCAaCAb 将新的B生成式回代入A的生成式ABC 被变换为AbCBACaACbCBCACaCACbC 再将新的A生成式代入新引入的C生成式CACBACBC 被变换为 (略) 注意:新引入的Ai相当于排在最低位。,10,College of Computer Science & Tech

7、nology, BUPT,4.4 下推自动机(PDA),主要内容 PDA的基本概念。 PDA的构造举例。 用终态接受语言和用空栈接受语言的等价性。 PDA是上下文无关语言的接收器。 重点 PDA的基本定义及其构造 PDA与上下文无关语言等价 难点 根据PDA构造上下文无关文法。,11,College of Computer Science & Technology, BUPT,问题的引出,类似于an bn 的语言无法由一般的有限自动机识别。,有限状态识别器中必须有无限个状态 (不允许!) 需要扩充机器的能力。,识别an bn 的无限状态自动机,12,College of Computer Sc

8、ience & Technology, BUPT,下推自动机的结构,扩充办法:引入一个下推栈 足够简单 可解决许多有意义的问题, 如识别有效的程序 下推自动机PDA(Push Down Automaton)由一条输入带,一个有限状态控制器和一个下推栈组成 PDA的动作 在有限状态控制器的控制下根据它的当前状态、栈顶符号、以及输入符号作出相应的动作。有时,不需要考虑输入符号(空转移)。 栈:后进先出表对栈的操作(压入、弹出)均在栈顶进行。,13,College of Computer Science & Technology, BUPT,下推自动机的定义,NPDA的形式定义:七元组 M(Q,T,

9、q0,z0,F) 其中:Q:有限控制器的状态集合T:有限输入字母表:有限下推栈字母表 : Q (T) Q*当前状态 当前输入 当前栈顶符号 有限子集q0:初始状态,q0Qz0:下推栈的起始符号,z0F: 终态集合,F Q,14,College of Computer Science & Technology, BUPT,下推自动机的转换函数,转换函数(q,a,Z) (p,) q、pQ,aT,Z,*表示在状态q,输入字符a,且栈顶符Z时,转入状态p,栈顶符Z由代替,同时读头右移一格。 约定:的最左符号放在栈顶。表示下推栈的顶符被弹出如 (q,a,Z) (p,) (q,Z) (p,) 称为转换。即

10、不考虑当前输入字符,读头不移动,但控制器状态可以改变且栈顶符可以调整。,15,College of Computer Science & Technology, BUPT,下推自动机的格局,格局:用于描述PDA的瞬时工作状况PDA格局 (q, , ) 其中 *,*q 当前状态 待输入串 (时,表示输入字符已读完) 下推栈中的内容 (时表示栈已弹空) (q,a,Z ) (p,r) 用格局可表示为(q, a,Z) (p, ,r)对PDA而言,初始格局为(q0,z0)终止格局为(q,) qF,*,16,College of Computer Science & Technology, BUPT,下推

11、自动机接受的语言,两种接受方式 终态接受:L(M)= (q0 ,z0)* (q,) ,qF,* 空栈接受:L(M)= (q0 ,z0) * ( q,), qQ(当空栈接受时,终止状态可为Q中任意状态,换言之,终止状态集是与状态无关的。此时,取F),17,College of Computer Science & Technology, BUPT,下推自动机例,例:构造PDA M,接受语言L(M)= anbnn1 思路:把输入的字符a入栈,当开始输入b时,从栈中弹出a, 若a、b个数相同,则到达终态,且栈中空。 解:设PDA M(Q,T,q0,z0,F),Qq0 ,q1 ,q2 q0 初态;接受

12、a q1状态;接受b q2状态;输入 回到q0Ta,b, = z0, a, F = q0定义为:(q0,a,z0) = ( q1 ,a z0)(q1,a,a) = ( q1 ,aa)(q1,b,a) = ( q2 ,)(q2,z0) = ( q0 ,)(q2,b,a) = ( q2 ,),18,College of Computer Science & Technology, BUPT,下推自动机的图形表示,上例的图形表示:,表示(p,)(q,a,Z),注:栈空就不能再移动了,用格局表示aabb的识别过程: (q0 ,aabb,z0)(q1,abb,az0)(q1,bb,aaz0)(q2,b,

13、az0)(q2,z0)(q0,) 终态接受,19,College of Computer Science & Technology, BUPT,若对于每个输入字符,其后续状态都是确定的,就是DPDA(如前例)。 DPDA必须满足下述二个条件之一:对 qQ, z, aT有 (q,a,z )最多含一个后续选择且(q,Z)或者 (q,a,z ) 且(q,z)最多含一个元素。这两个限制防止了在动作和包含一个输入符号的动作之间做选择的可能性(即在同样状态,同样栈顶符号下最多只能有一个选择。),确定的下推自动机(DPDA),20,College of Computer Science & Technolo

14、gy, BUPT,例:构造PDA M,接受语言L(M) = cTa,b*. 解题思路: 从状态q0接受句子,将输入存到栈中,状态不变,直到看到中心标记c。 当达到c时,将状态变为q1,栈不变。 将输入与下推栈匹配,状态不变,退栈,直至栈空。,确定的下推自动机(DPDA),该自动机的形式定义:见书P157,21,College of Computer Science & Technology, BUPT,例:构造PDA M,接受语言L(M) = Ta,b*.(与前面的例子类似,区别在于中间没有标志”c” ) 解:,非确定的下推自动机(NPDA),把“c,z/z”改为“,z/z”就引进了非确定性。因为机器可在任何时刻进行这种转换。,22,College of Computer Science & Technology, BUPT,例:构造PDA M,接受语言L(M) = ai bj cki = j 或 i = k。 解题思路:与前例类似,利用不确定性,PDA可以猜想a应与b匹配还是与c匹配。所构造的NPDA M利用两个不确定的分支实现不同的猜想。 解:,非确定的下推自动机(NPDA),23,College of Computer Science & Technology, BUPT,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号