有限自动机理论章下推自动机.ppt

  1. 1、本文档共166页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有限自动机理论章下推自动机

第五章 下推自动机 PDA FA识别正则语言(右线性语言) PDA识别上下文无关语言 FA只能处理正则语言 正则文法生成无穷语言是由于 A-wA 不需要记录w的个数 无关文法生成无穷语言 A-αAβ 需要记录α和β之间的对应关系 无法用FA的有穷个状态来表示。 为FA扩充一个无限容量的栈 用栈的内容和FA的状态结合起来就可以表示无限存储。 这种模型就是下推自动机PDA PDA作为形式系统最早于1961年出现在 Oettinger 的论文中。 与上下文无关文法的等价性由Chomsky于1962年发现。 与FA比较 PDA具有一个栈存储器 有两个操作: 入栈---将内容压入栈中 出栈---将栈顶元素移出 下推自动机物理模型 栈存储器 存放不同于字母的符号 只能对栈顶元素进行操作。 下推自动机动作 根据 FSC当前的状态 输入带上的当前字符 栈顶符号 进行状态改变和入栈或出栈操作 将读头向右移动一个单元 5.1.1 确定的下推自动机 例5-1 语言 L={w|w∈(a,b)*,且a、b个数相等} 暂时不考虑状态 (或PDA仅有一个状态) 初始 栈为空 从左到右逐个扫描串w∈(a,b)* 入栈 若栈为空,当前符号是a,则A入栈 若栈为空,当前符号是b,则B入栈 若栈顶为A,当前符号是a,则A入栈 若栈顶为B,当前符号是b,则B入栈 出栈 若栈顶为A,当前符号是b,则A出栈 若栈顶为B,当前符号是a,则B出栈 若串w有相同个数的a和b 当且仅当 w扫描结束后,栈为空。 注意 PDA在两种情况下停机: 串扫描结束 没有对应的规则 串扫描结束 栈如果为空 就接收扫描过的串。 对于非正式的算法, 用形式化的方式进行描述: 特殊的符号Z0表示栈底 初始化时先压入栈 x,D,V规则(指令) 若x是w的当前符号 D是栈顶符号 则用符号串V代替D 即将D弹出栈,而将串V压入栈 具体 若x是w的当前符号,栈顶符号为D x,D,ε 将D弹出栈 x,D,AD 将A压入栈,成为新的栈顶 一般地 若x是w的当前符号,栈顶符号为D x,D,A1A2… Ak表示: 将D弹出栈 将串A1A2… Ak压入栈(A1为新栈顶) 例5-1 算法的形式化描述 a,Z0,AZ0 b,Z0,BZ0 a,A,AA b,B,BB a,B,ε b,A,ε ε,Z0,ε 规则 ε,Z0,ε 表示将w扫描结束后,将栈置成空 也表示该PDA可以接收空串ε 思考: 如何接收语言 L={w|w∈(a,b)+,且a和b个数相等}? 例:语言L={anbn|n≥0} 定义: a,Z0,AZ0 a,A,AA b,A,ε ε,Z0,ε 则还可以接收语言 {(ab)n|n≥0},或 {ambm(ab)n|m≥0,n≥0} 等语言。 思考:如何接收语言 L={anbn|n0} L={anbn|n≥0} L={(ab)n|n0} L={(ab)n|n≥0} 例5-2 L={wcwT|w∈(a,b)*} 思想: 将w的各个字符压入栈后 栈中的内容从栈顶到栈底的顺序 刚好是wT的顺序 为了区别压栈和出栈动作 增加两个状态----read 和match PDA处于read状态时, 处理整个串的前半部分,将对应的符号压入栈 扫描到字母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 用下列的规则来描述PDA 〈read,a,Z,read,AZ 〈read,b,Z,read,BZ 〈read,c,Z,match,Z 〈match,a,A, match,ε 〈match,b,B, match,ε 〈match,ε,Z0,match,ε 若串w是该语言的合法的串 当且仅当 w扫描结束后,栈为空。 串abbcbba的处理过程 扫描到字母c 栈内的内容(从栈顶到栈底)是扫描过的串的逆 与未扫描过的串的顺序相同 此时,不作出栈和入栈操作, 仅仅把PDA的

文档评论(0)

zhangxiuli01 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档