开学步入正轨,更新的速度肯定要变慢了ヾ|≧_≦|〃
有同学让我添加电路状态转换图的有前置条件和后置条件的情况,其实在上篇文章中已经表述了电路状态转换图的意义:电路状态转换图描述的是从某个起点进入,不管经过怎样的变换,如果要满足题目规定的条件则必定会从某个终点出去这样的情形,起点和终点并不重要,而前置条件和后置条件都是针对起点和终点的,并不会对电路状态转换图有什么影响。

上图表示的就是a,b,c都为偶数,前置条件为以a或b开头。

消除ϵ\epsilon产生式

1. Find out all ϵ\epsilon productions. 用迭代法找出所有的ϵ\epsilon产生式

V0’为所有直接推出ϵ\epsilon的集合
V0”为V0’与能推出V0’元素的交集…
当某一次迭代的集合和上次迭代的集合相等时迭代结束。

Example: S->ABC, A->aA|ϵ\epsilon, B->bB|ϵ\epsilon, C->cC|ϵ\epsilon
V0’ = {A,B,C}
V0” = {S,A,B,C}
V0”’ = {S,A,B,C}
End

2. Replace related productions:替换相关产生式

这一步上课讲的有点模糊,老师的意思是这样,如果A->other|ϵ\epsilon,那么在右边能推出A的表达式里就替换为两种情况:A和空。例如,如果S->A, A->aA|ϵ\epsilon,那么我们将S替换为两种情况,S->A或S->ϵ\epsilon,在上面的S->ABC里,每一个ABC都能有空的情况出现,那么对应我们应该替换为2*2*2=8个式子:

S->ABC
S->BC
S->AC
S->AB
S->A
S->B
S->C
S->ϵ\epsilon

3. Eliminate all ϵ\epsilon-productions except for S->ϵ\epsilon :删除ϵ\epsilon产生式

删掉在替换后的所有ϵ\epsilon产生式,S->ϵ\epsilon的处理会在后面提及。

4. S->ϵ\epsilon的处理

将S->ϵ\epsilon替换为S’->S, S’->ϵ\epsilon

实际使用中的简化

在实际操作中,除了要注意S->ϵ\epsilon的情况,其他情况都非常好处理。首先直接删除生.成ϵ\epsilon的式子。比如A->aA|ϵ\epsilon变成A->aA,然后找到所有一次间接的ϵ\epsilon产生式,比如B->bA,添加A为空的情况,如B->bA|b,如果没有S->ϵ\epsilon就已经可以了。

补充:消除epsilon产生式等相关推荐

  1. 【数理逻辑】谓词逻辑 ( 谓词逻辑基本等值式 | 消除量词等值式 | 量词否定等值式 | 量词辖域收缩扩张等值式 | 量词分配等值式 )

    文章目录 一. 消除量词 等值式 二. 量词否定 等值式 三. 量词辖域收缩扩张 等值式 四. 量词分配 等值式 一. 消除量词 等值式 消除量词等值式 : 有限个体域 D={a1,a2,⋯,an}D ...

  2. vue --- 2.0响应式补充

    补充: 数组的响应式 // 对数组的方法进行重写 // 1. 不能影响本来的方法 // 2. 调用的时候可以找到它 let odlArrayPrototype = Array.prototype; l ...

  3. 【编译原理】-- 第二章(三)(文法的化简改造、无用产生式、产生式的消除、文法的其他表示方法、例题)

    目录 一.文法的化简与改造 1.文法的实用限制 (1)不含无用产生式 (2)不含有害规则 (3)无用符号和无用产生式的消除 2.产生式的消除 算法3: 算法4:ε不属于L(G) 算法5:ε属于L(G) ...

  4. jQuery操作Dom、jQuery事件机制、jQuery补充部分

    jQuery操作Dom: 修改属性: //使用attr()方法 //attr(name, value) //name:要修改的属性的属性名 //value:对应的值 //attr方法,如果当前标签有要 ...

  5. 避免需求分析与定义误区的7个招式:作为产品新人,我所遇到的坑(续)

    在需求分析和定义的过程中,作为产品新人的你也许和我一样陷入了误区之中,恨不得抽自己几个耳光?(参见前作需求分析与定义4大误区) 既然已经对可能的隐患有所了解,那么如何避免重蹈覆辙? 招式1:目标驱动, ...

  6. 数据结构(二)----线性表(List)链式存储结构(1)

    线性表List---链式存储结构 相关概念 链式存储结构/链式表 定义 链式存储特点 单链表 单链表读取 单链表插入 单链表删除 时间复杂度 单链表整表创建 单链表整表删除 顺序存储与链式存储差异 P ...

  7. 【数理逻辑】谓词逻辑 ( 前束范式 | 前束范式转换方法 | 谓词逻辑基本等值式 | 换名规则 | 谓词逻辑推理定律 )

    文章目录 一. 前束范式 二. 前束范式转换方法 三. 前束范式示例 四. 谓词逻辑推理定律 一. 前束范式 公式 AAA 有如下形式 : Q1x1Q2x2⋯QkxkBQ_1 x_1 Q_2 x_2 ...

  8. 隐式转换函数高级使用

    Scala隐式转换函数的底层原理 类型不匹配: java:会强制转换 scala:会使用对象的方法进行数据类型转换,隐式转换,scala中只看函数签名(参数列表和返回值) object Scala_L ...

  9. 列式存储和行式存储有什么区别?

    写在前面 本文隶属于专栏<100个问题搞定大数据理论体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定大数据理 ...

  10. 【论文精读CVPR_2022】High-resolution Face Swapping via Latent Semantics Disentanglement

    [论文精读CVPR_2022]High-resolution Face Swapping via Latent Semantics Disentanglement 0.前言 Abstract 1. I ...

最新文章

  1. 关于fseek和文件ab+打开方式的问题
  2. HandlerInterceptorAdapter或HandlerInterceptor的使用
  3. 一个帮助我100%拿offer的面试学习法
  4. jzoj3518-进化序列(evolve)【位运算】
  5. mq服务器与客户端消息同步,使用 ActiveMQ 实现JMS 异步调用
  6. leetcode 220. 存在重复元素 III(排序)
  7. Python 数据科学手册 5.8 决策树和随机森林
  8. 已经人均5G了?5G手机没人买,iPhone 11没5G该不该被嘲讽?
  9. ASP.NET 状态视图概览
  10. android开发标签栏应该设置多少,Android开发笔记(十九)底部标签栏TabBar
  11. JAVA Cannot find class [×××] for bean with name ‘×ב defined in class path resource [×××] 问题解决方法
  12. 常见SMTP发送失败原因列表
  13. scanner读取带空格字符串_Scanner类提供了输入字符出的方法,下面哪个方法可以实现字符串的输入且该串可以含有空格()。-智慧树JAVA程序设计(山东联盟-山东农业大学)章节答案...
  14. java 版剑指offer算法集锦
  15. 常用通讯电平转换电路整理
  16. 利用计算机教室教师培训记录表,新学期教师计算机培训方案
  17. Solr面试回答思路
  18. 计算机excel按F4是那个公式,excel中键盘F4到底怎么用?_excle 中的f4
  19. iOS开发中拉伸图片的几种方式
  20. 行人属性识别的一个调研

热门文章

  1. FLY Windows XP Pro SP3 v3264 集成优化版 2.0
  2. 晶振旁的电阻(并联与串联)和电容的作用
  3. x265 命令行参数大全(比较详细)
  4. Unity3D场景转换效果
  5. stm32获取心知天气使用cJSON提取需要数据
  6. Win11打开本地组策略编辑器的两种方法
  7. 网络协议之Netflow与sFlow协议
  8. Python利用xpath和正则re爬取新浪新闻
  9. 利用CSS完成鼠标悬浮时中英文切换
  10. android exchange同步日程,OPPO手机的日历怎么同步Exchange邮箱日程的方法