文章目录

  • 一、上下文无关文法 CFG 转为下推自动机 PDA 流程
  • 二、上下文无关文法 CFG 转为下推自动机 PDA 示例 1

参考博客 :

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

一、上下文无关文法 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 ) :

S→aTb∣b\rm S \to aTb | bS→aTb∣b
T→Ta∣ε\rm T \to Ta|\varepsilonT→Ta∣ε

上下文无关文法 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 两条指令 , 前面都是读取空字符作为栈读取的信息 ;

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

终端字符指令 , 如果存在终端字符 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→aTb\rm \varepsilon , S \to aTbε,S→aTb 最终分解为 :
ε,S→b\rm \varepsilon , S \to bε,S→b 读取 S\rm SS 字符放入 b\rm bb 到栈顶替换 S\rm SS 字符 ,
ε,ε→T\rm \varepsilon , \varepsilon \to Tε,ε→T 读取空字符放入 T\rm TT 到栈顶 ,
ε,ε→a\rm \varepsilon , \varepsilon \to aε,ε→a 读取空字符放入 a\rm aa 到栈顶 ;

ε,T→Ta\rm \varepsilon , T \to Taε,T→Ta 最终分解为 :
ε,T→a\rm \varepsilon , T \to aε,T→a , 读取 T\rm TT 字符放入 a\rm aa 到栈顶替换 T\rm TT 字符 ,
ε,ε→T\rm \varepsilon , \varepsilon \to Tε,ε→T , 读取空字符放入 T\rm TT 到栈顶 ;

最终的下推自动机样式

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

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

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

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

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

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

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

  4. 5分钟理解CFG上下文无关文法

    CFG是基于规则的NLP(自然语言处理)的一种方法,网上关于CFG的文章比较少,尤其是解析算法几乎百度不到.我由于最近用到CFG规则来解决NLP问题,并实现了CFG的解析算法.本文是作为CFG解析算法 ...

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

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

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

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

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

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

  8. 《编译原理》-3.上下文无关文法及分析

    上下文无关文法及分析 3.1 分析过程 3.2 上下文无关文法 3.2.1 与正则表达式的比较 3.2.2 上下文无关文法规则的说明 3.2.3 推导及由文法定义的语言 3.3 分析树与抽象语法树 3 ...

  9. python语言平台无关_从零开始学Python自然语言处理(十二)——上下文无关文法...

    前文传送门: 在说上下文无关文法之前,我们来看看形式语言理论,什么是形式语言理论?形式语言理论形式语言理论是用数学方法研究自然语言或者程序设计语言的理论.研究语言组成规则,而不研究语言的具体含义.说到 ...

最新文章

  1. iOS的相对路径和绝对路径
  2. android studio 将文件打包成jar文件
  3. Android 最火的高速开发框架xUtils
  4. mysql 代替intersect_mysql替代INTERSECT
  5. 手机电脑的芯片主要是由_苹果的自研电脑芯片终于来了!你看好么?
  6. XP建立隐藏的超级用户
  7. apache 配置虚拟域名默认站点问题
  8. 修改计算机系统参数软件,机器码修改专家(修改电脑机器码工具) v2.0官方版
  9. Java中的反射机制
  10. EEG时频分析介绍与实现
  11. 计算机建立局域网共享,如何建立局域网共享
  12. JavaScript笔记 Object对象
  13. TypeScript学习
  14. 五招防止QQ密码被盗
  15. python3爬虫实战姚良_Python3.X 爬虫实战(缓存与持久化)
  16. 55 非谓语动词语法
  17. 【windows11 技巧】win11如何关闭你要以何方式打开此文件
  18. Linux 的解压缩文件命令
  19. 大家在人生低谷时有多惨,怎么熬过来的
  20. hadoop暂时/永久关闭安全模式

热门文章

  1. SQL PASS西雅图之行——Lake Union纪行
  2. 大型门户网站架构设计的可伸缩性
  3. linux每天进步一点点-7月3日
  4. Debian 安装docker
  5. 表单的增 删 改 查
  6. 听得我都激动了……喝死奥巴马,你怎么看?
  7. 10分钟教你看懂mongodb的npm包
  8. nyist 541最强DE 战斗力
  9. 使用.net调用java的Web Services
  10. .net常用技巧及调优