文章目录

  • 一、下推自动机计算过程
  • 二、上下文无关文法 CFG 转为下推自动机 PDA 流程

参考博客 :

  • 【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )
  • 【计算理论】上下文无关语法 ( 代数表达式 | 代数表达式示例 | 确定性有限自动机 DFA 转为 上下文无关语法 )
  • 【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )
  • 【计算理论】下推自动机 PDA 及 计算示例
  • 【计算理论】下推自动机 PDA ( 设计下推自动机 | 上下文无关语法 CFG 等价于 下推自动机 PDA )
  • 【计算理论】上下文无关语法 ( CFG ) 转为 下推自动机 ( PDA )
  • 【计算理论】下推自动机 PDA ( 上下文无关语言 CFL 的 泵引理 | 泵引理反证示例 | 自动机扩展 )

一、下推自动机计算过程


1 . 下推自动机 ( PDA ) 提升了自动机计算能力 : 在上述自动机的基础上 , 提升该自动机的计算能力 , 引入一个新的栈结构 ;

栈特点 : ① 后进先出 , ② 存储能力无限 ;

2 . 下推自动机计算有两个部分 , 一个是字符的读取 , 一个是栈内字符的存取 , 栈内只有最上面的字符会被替换 ;

3 . 下推自动机 ( PDA ) 的指令格式 : 该指令包含了 上述讲的两个操作 ;

1,0→ε1 , 0 \to \varepsilon1,0→ε

① 自动机字符读取 : 左侧的 111 是从带子上读取的字符 ;

② 栈内字符存取操作 : 0→ε0 \to \varepsilon0→ε 是需要在栈上进行的操作 , 将栈顶的 000 取出 , 然后将 ε\varepsilonε 放入到栈中 , 相当于在栈中 , 使用 ε\varepsilonε 将栈顶的 000 替换掉 ;

二、上下文无关文法 CFG 转为下推自动机 PDA 流程


上下文无关文法 CFG 转为下推自动机 PDA 流程 :

① 开始状态 : 开始状态 qstart\rm q_{start}qstart​ , 跳转到 qloop\rm q_{loop}qloop​ 状态的指令 ε,ε→K\rm \varepsilon , \varepsilon \to Kε,ε→K , 使用 K\rm KK 替换栈内空字符 ε\varepsilonε , 即将 K\rm KK 放入栈中 ;

② 循环状态 : qloop\rm q_{loop}qloop​ 状态的指令都是从本状态指向本状态 , 生成两种指令 , 一种是基本指令 , 一种是终端字符指令 ;

基本指令 S→aTb∣b\rm S \to aTb|bS→aTb∣b ,
生成为 " ε,S→aTb\rm \varepsilon , S \to aTbε,S→aTb " 和 " ε,S→b\rm \varepsilon , S \to bε,S→b " 两条指令 , 前面都是读取空字符作为栈读取的信息 ;

终端字符指令 , 如果存在终端字符 a\rm aa 和 b\rm bb , 那么生成 a,a→ε\rm a, a \to \varepsilona,a→ε 和 b,b→ε\rm b, b \to \varepsilonb,b→ε 两条指令 , 含义是读取栈顶 a\rm aa 字符 , 将该字符使用空字符替代 , 即从栈中删除该字符 ;

③ 接受状态 : qloop\rm q_{loop}qloop​ 状态跳转到 qaccept\rm q_{accept}qaccept​ 指令是 ε,K→ε\rm \varepsilon , K \to \varepsilonε,K→ε , 栈顶读取到 K\rm KK 字符删除 ;

④ 拆分指令 : 在循环状态 qloop\rm q_{loop}qloop​ 中的基本指令中存在多字符指令 , 如 ε,S→aTb\rm \varepsilon , S \to aTbε,S→aTb , S\rm SS 读取到空字符 ε\varepsilonε , 使用 aTb\rm aTbaTb 字符替换栈顶的 S\rm SS 字符 , 这是 333 个字符 , 肯定不行 , 需要逐个放进去 , 先放 b\rm bb , 再放 T\rm TT , 最后放 a\rm aa ;

最终分解为
ε,S→b\rm \varepsilon , S \to bε,S→b 读取空字符放入 b\rm bb 到栈顶 ,
ε,ε→T\rm \varepsilon , \varepsilon \to Tε,ε→T 读取空字符放入 T\rm TT 到栈顶 ,
ε,ε→a\rm \varepsilon , \varepsilon \to aε,ε→a 读取空字符放入 a\rm aa 到栈顶 ;

【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★相关推荐

  1. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 2 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 2 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  2. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 1 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 1 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  3. 【计算理论】上下文无关语法 ( CFG ) 转为 下推自动机 ( PDA )

    文章目录 I . 上下文无关语法 ( CFG ) 转为 下推自动机 ( PDA ) II . 下推自动机 ( PDA ) 三个状态 III . 下推自动机 ( PDA ) qstartq_{start ...

  4. 【计算理论】下推自动机 PDA ( 设计下推自动机 | 上下文无关语法 CFG 等价于 下推自动机 PDA )

    文章目录 I . 下推自动机 设计 II . 上下文无关语法 ( CFG ) 等价于 下推自动机 ( PDA ) I . 下推自动机 设计 设计下推自动机 , 可以识别 {wwR:w∈{0,1}∗}\ ...

  5. 计算理论——正则语言,上下文无关文法,图灵机,可判定性,可规约性

    目录 第一章 正则语言 状态图 自动机的形式化定义 非确定性 正则表达式 泵引理 使用泵引理证明某个语言非正则的方法 第二章 上下文无关文法 上下文无关文法概述 1.上下文无关文法形式化定义 2.上下 ...

  6. 形式语言与自动机——第三章 上下文无关文法与下推自动机

    文章目录 3.1 推导树与二义性 3.2 上下文无关文法的改写 3.2.1 CFG的最简化 3.2.2 CFG的变换 3.2.2.1 去除可零化的非终结符 3.2.2.2 去除单产生式 3.2.2.3 ...

  7. 形式语言与自动机 第5章 上下文无关文法与下推自动机

    文章目录 第5章 上下文无关文法与下推自动机 CFG 的化简 无用符号 CNF 和 GNF 范式 CNF 范式 GNF 范式 PDA 与 CFG 下推自动机 CFG →\to→ PDA PDA →\t ...

  8. 【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )

    文章目录 一.上下文无关语法 设计 示例 二.上下文无关语法 的歧义性 三.Chomsky 范式 四.上下文无关语法 转为 Chomsky 范式 五.上下文无关语法 转为 Chomsky 范式 示例 ...

  9. 形式语言与自动机 Part.5 上下文无关语言与下推自动机(PDA)

    课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...

最新文章

  1. 【Qt】qss样式表之:QCalendarWidget,日历窗口样式表设置
  2. Swift URL含有中文的处理
  3. Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
  4. mysql当前时间减一分钟_MySQL数据库事务的机制【总结】
  5. shell swt 样式_swt shell设置窗口位于屏幕中间
  6. 连号区间数(2013年第四届c/c++ b组第10题)
  7. 【pyqt5学习】——items view相关控件(list view、table view)
  8. 多个Excel文件合并成一个文件
  9. 修订模式怎么彻底关闭_是时候换掉家里的灯泡了——小米智能灯泡组网实现家庭影院模式...
  10. Google亲儿子 Nexus/Pixel 手机刷机Root之旅
  11. VISUAL STUDIO 与 MATLAB实现混合编程
  12. notepad如何自动对齐_notepad怎么对齐
  13. c语言中学生信息管理系统中删除学生信息,学生信息管理系统C语言编程
  14. 免费机器视觉视频教程halcon-百度网盘
  15. 线性布局和表格布局的嵌套使用
  16. appcan java_AppCan项目源码
  17. PHP生成一寸照片代码,ps做一寸证件照的步骤
  18. css动画效果制作正方体旋转相册
  19. WinCC在C脚本创建电子签名对话框
  20. Qt使用QAudioInput、QAudioOutput实现局域网的音频通话

热门文章

  1. 牛腩新闻发布系统(2)使用存储过程查询表
  2. SCSM 2012Orchestrator 2012 虚拟机自动交付测试
  3. VoIP系列:VoIP的劣势
  4. JavaScript教程——函数(arguments 对象)
  5. python程序设计——函数设计与调用
  6. FreeBSD 安装过程
  7. 全方位绕过软WAF攻略
  8. Arduino开发版学习计划
  9. 【20161109】noip模拟赛
  10. [bzoj2055]80人环游世界[网络流,上下界网络流]