文章目录

  • 一、上下文无关文法 ( CFG )
  • 二、上下文无关文法 ( CFG ) 示例
  • 三、确定性有限自动机 DFA 转为 上下文无关语法 CFG

参考博客 :

  • 【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )
  • 【计算理论】上下文无关语法 ( 代数表达式 | 代数表达式示例 | 确定性有限自动机 DFA 转为 上下文无关语法 )
  • 【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )

一、上下文无关文法 ( CFG )


上下文无关语法 组成 : 由 {V,Σ,R,S}\{ \quad V , \Sigma , R , S \quad \}{V,Σ,R,S} 四部分组成 ;

变量集 VVV : 有限的变量集合 ;

终端字符集 Σ\SigmaΣ : 有限的终端字符组成的集合 ; 相当于常量的含义 , 与变量相对 ;

规则集 RRR : 有限的规则组成的集合 , 规则规定如何进行代换操作 , 规定 变量 , 终端字符 , 字符串变量 等 ;

开始变量 SSS : 该变量作为开始变量 ;

规则 :

① 已知条件 : 假设 u,v,wu, v , wu,v,w 是 变量 ( 变元 )终端字符集 ( 常量 / 常元 ) ;

② 规则描述 : 规则是一个箭头 , A→wA \to wA→w , AAA 是变元 , www 是 变元 和 常元 组成的终端字符 ;

③ 规则用法 : 在字符串中 , 根据 A→wA \to wA→w 规则进行替换 , 只需要将 AAA 变元替换成 www 字符串即可 ;

④ 规则示例 : uAvuAvuAv 中使用上述规则进行替换 , 将 AAA 替换成 www , 替换结果是得到新字符串 uwvuwvuwv ;

uAv⇒uwvuAv \Rightarrow uwvuAv⇒uwv

二、上下文无关文法 ( CFG ) 示例


上下文无关文法 ( CFG ) : G3=({S},{a,b},R,S)\rm G3 =( \; \{ S \}, \{ a, b \}, R , S \; )G3=({S},{a,b},R,S) 其组成如下 :

  • 变量集 {S}\rm \{ S \}{S} ;

  • 终端字符集 {a,b}\rm \{ a, b \}{a,b} ;

  • 规则 R\rm RR ;

  • 开始变量 S\rm SS ;

规则 R\rm RR 描述 : S→aSb∣SS∣ε\rm S \to aSb \; | \; SS \; | \; \varepsilonS→aSb∣SS∣ε

  • S\rm SS 变量 可以使用 aSb\rm aSbaSb 字符串替换 ;
  • S\rm SS 变量 可以使用 SS\rm SSSS 字符串替换 ;
  • S\rm SS 变量 可以使用 ε\rm \varepsilonε 字符串替换 ;

规则替换过程 : 下面的 ① ~ ⑦ 分别对应七次规则替换 ;

S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb⇒aaababbb\rm S \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbb \Rightarrow aaabaSbbb \Rightarrow aaababbbS⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb⇒aaababbb

  • ① SS\rm S SSS 是开始变量 , 可以使用 aSb\rm aSbaSb 替换 S\rm SS ; S⇒aSb\rm S \Rightarrow aSbS⇒aSb
  • ② 使用 aSb\rm aSbaSb 替换 S\rm SS ; aSb⇒aaSbb\rm aSb \Rightarrow aaSbbaSb⇒aaSbb
  • ③ 使用 SS\rm SSSS 替换 S\rm SS ; aaSbb⇒aaSSbb\rm aaSbb \Rightarrow aaSSbbaaSbb⇒aaSSbb
  • ④ 使用 aSb\rm aSbaSb 替换第一个 S\rm SS ; aaSSbb⇒aaaSbSbb\rm aaSSbb \Rightarrow aaaSbSbbaaSSbb⇒aaaSbSbb
  • ⑤ 使用 ε\rm \varepsilonε 替换第一个 S\rm SS ; aaaSbSbb⇒aaabSbb\rm aaaSbSbb \Rightarrow aaabSbbaaaSbSbb⇒aaabSbb
  • ⑥ 使用 aSb\rm aSbaSb 替换 S\rm SS ; aaabSbb⇒aaabaSbbb\rm aaabSbb \Rightarrow aaabaSbbbaaabSbb⇒aaabaSbbb
  • ⑦ 使用 ε\rm \varepsilonε 替换 S\rm SS ; aaabaSbbb⇒aaababbb\rm aaabaSbbb \Rightarrow aaababbbaaabaSbbb⇒aaababbb

三、确定性有限自动机 DFA 转为 上下文无关语法 CFG


1 . 确定性有限自动机 ( DFA ) 转为 上下文无关语法 ( CFG ) :

确定性有限自动机 ( DFA ) 的指令 , 转为 对应的

上下文无关语法 ( CFG ) 规则 : δ(qi,a)=qj⇒Ri→aRj\rm \delta ( q_i, a ) = q_j \Rightarrow R_i \to aR_jδ(qi​,a)=qj​⇒Ri​→aRj​

δ(qi,a)=qj\delta ( q_i, a ) = q_jδ(qi​,a)=qj​ 表示 qiq_iqi​ 状态下 , 读取字符 aaa , 跳转到 qjq_jqj​ 状态 ;

2 . 自动机的 状态跳转 转换成 规则 示例 : 下图中的 确定性有限自动机 , 开始状态 AAA 读取 111 字符 转化成 BBB 状态 , 表示成规则就是 RA→1RBR_A \to 1R_BRA​→1RB​

3 . 自动机的状态 AAA 读取 字符 aaa 转换成另一个状态 BBB , 都可以转换成对应的规则 RA→aRBR_A \to aR_BRA​→aRB​ ;

4 . 计算能力对比 : 上下文无关语法 的计算能力 要大于等于 自动机的计算能力 ;

【计算理论】计算理论总结 ( 上下文无关文法 ) ★★相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 句法模式识别(两)-正规文法、上下文无关文法

    正规的语法特点 1.全部长度有限的语言都是正规的. 2.用正规文法当然能产生无限长串,当中周期反复部分的长度不大于非终止符的长度. 举个样例 在此规则之下.能生成句子 当中周期反复部分为ab,这个样例 ...

  8. 【编译原理】什么是上下文无关文法?

    上下文无关是指,一句话的含义与其前后的内容没有或者几乎没有关系,只由自己决定,把它剪切到其他任何位置,也还是原有的意思. 例如: ... a = 0; ... 这是一个赋值语句,无论此语句的前后是什么 ...

  9. 上下文无关文法及其分析树

    上下文无关文法是程序设计语言所使用的语法.它的特点是同样的字符串在不同的语境下,意思不变.满足上下文无关文法的语言便于计算机识别和处理.我们已经介绍过,语言是语句的集合,而语句是通过产生式定义的.上下 ...

  10. 上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树--编译原理

    上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树 分析树 根节点的符号为文法开始符号S 每个内部节点都是对某个产生式A→β的应用,该节点的标号就是产生式的左部,子节 ...

最新文章

  1. 【LeetCode】136. Single Number 解题小结
  2. BZOJ2062 : 素颜2(face2)
  3. 五分钟没有操作自动退出_遇到不喜欢的小动物怎么办?教你五分钟友好的送走小动物!...
  4. 请确定指定的驱动器中是否有盘_百格拉伺服驱动器维修常见故障现象及处理方法...
  5. 代码评审的不可能三角
  6. 学习 Swift 的知识点整理
  7. 用了30天整理的一些GO语言学习资料,2019请你加油
  8. python 电脑文件变动提醒_Python整理文件方法,效率提升100倍-docx是什么文件
  9. 《高质量程序设计指南》读书笔记
  10. 电工基础知识电线电缆常识80问答
  11. inode客户端linux 怎样运行,H3C_iNode智能客户端安装指导(Linux)
  12. 2022强网杯re——find_basic
  13. python漂亮界面 数独游戏源代码_Python编写的超帅数独可视化解题器
  14. python自动化配置路由器_使用Python管理小米路由器
  15. 439、Java框架93 -【SpringMVC - 拦截器】 2020.12.14
  16. 离散数学之数理结构推理理论
  17. NLP中文分词工具比较
  18. 关于aop,AOP的应用场景?什么事AOP?
  19. oracle sql 动态参数,sql – 具有动态参数的Oracle Lag函数
  20. 我们分析了GitHub上5.46 亿条日志,发现中国开源虽然贡献大但还有这些不足......

热门文章

  1. macOS HBuilderX 使用安卓模拟器调试项目
  2. opencv Rect函数裁剪图片
  3. jdk8,jdk10,jdk12新特性
  4. Qt QML应用框架
  5. 【手把手带你Godot游戏开发】Godot界面介绍
  6. 矩阵快速幂 斐波那契数列
  7. 搭建Visual Studio C语言开发环境
  8. SpringBoot 导出Excel 固定表头
  9. sklearn实现lda模型_LDA模型实战常用知识点
  10. Javc处理图片各种效果的类库Java Image Filters