补充:消除epsilon产生式等
开学步入正轨,更新的速度肯定要变慢了ヾ|≧_≦|〃
有同学让我添加电路状态转换图的有前置条件和后置条件的情况,其实在上篇文章中已经表述了电路状态转换图的意义:电路状态转换图描述的是从某个起点进入,不管经过怎样的变换,如果要满足题目规定的条件则必定会从某个终点出去这样的情形,起点和终点并不重要,而前置条件和后置条件都是针对起点和终点的,并不会对电路状态转换图有什么影响。
上图表示的就是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产生式等相关推荐
- 【数理逻辑】谓词逻辑 ( 谓词逻辑基本等值式 | 消除量词等值式 | 量词否定等值式 | 量词辖域收缩扩张等值式 | 量词分配等值式 )
文章目录 一. 消除量词 等值式 二. 量词否定 等值式 三. 量词辖域收缩扩张 等值式 四. 量词分配 等值式 一. 消除量词 等值式 消除量词等值式 : 有限个体域 D={a1,a2,⋯,an}D ...
- vue --- 2.0响应式补充
补充: 数组的响应式 // 对数组的方法进行重写 // 1. 不能影响本来的方法 // 2. 调用的时候可以找到它 let odlArrayPrototype = Array.prototype; l ...
- 【编译原理】-- 第二章(三)(文法的化简改造、无用产生式、产生式的消除、文法的其他表示方法、例题)
目录 一.文法的化简与改造 1.文法的实用限制 (1)不含无用产生式 (2)不含有害规则 (3)无用符号和无用产生式的消除 2.产生式的消除 算法3: 算法4:ε不属于L(G) 算法5:ε属于L(G) ...
- jQuery操作Dom、jQuery事件机制、jQuery补充部分
jQuery操作Dom: 修改属性: //使用attr()方法 //attr(name, value) //name:要修改的属性的属性名 //value:对应的值 //attr方法,如果当前标签有要 ...
- 避免需求分析与定义误区的7个招式:作为产品新人,我所遇到的坑(续)
在需求分析和定义的过程中,作为产品新人的你也许和我一样陷入了误区之中,恨不得抽自己几个耳光?(参见前作需求分析与定义4大误区) 既然已经对可能的隐患有所了解,那么如何避免重蹈覆辙? 招式1:目标驱动, ...
- 数据结构(二)----线性表(List)链式存储结构(1)
线性表List---链式存储结构 相关概念 链式存储结构/链式表 定义 链式存储特点 单链表 单链表读取 单链表插入 单链表删除 时间复杂度 单链表整表创建 单链表整表删除 顺序存储与链式存储差异 P ...
- 【数理逻辑】谓词逻辑 ( 前束范式 | 前束范式转换方法 | 谓词逻辑基本等值式 | 换名规则 | 谓词逻辑推理定律 )
文章目录 一. 前束范式 二. 前束范式转换方法 三. 前束范式示例 四. 谓词逻辑推理定律 一. 前束范式 公式 AAA 有如下形式 : Q1x1Q2x2⋯QkxkBQ_1 x_1 Q_2 x_2 ...
- 隐式转换函数高级使用
Scala隐式转换函数的底层原理 类型不匹配: java:会强制转换 scala:会使用对象的方法进行数据类型转换,隐式转换,scala中只看函数签名(参数列表和返回值) object Scala_L ...
- 列式存储和行式存储有什么区别?
写在前面 本文隶属于专栏<100个问题搞定大数据理论体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定大数据理 ...
- 【论文精读CVPR_2022】High-resolution Face Swapping via Latent Semantics Disentanglement
[论文精读CVPR_2022]High-resolution Face Swapping via Latent Semantics Disentanglement 0.前言 Abstract 1. I ...
最新文章
- 关于fseek和文件ab+打开方式的问题
- HandlerInterceptorAdapter或HandlerInterceptor的使用
- 一个帮助我100%拿offer的面试学习法
- jzoj3518-进化序列(evolve)【位运算】
- mq服务器与客户端消息同步,使用 ActiveMQ 实现JMS 异步调用
- leetcode 220. 存在重复元素 III(排序)
- Python 数据科学手册 5.8 决策树和随机森林
- 已经人均5G了?5G手机没人买,iPhone 11没5G该不该被嘲讽?
- ASP.NET 状态视图概览
- android开发标签栏应该设置多少,Android开发笔记(十九)底部标签栏TabBar
- JAVA Cannot find class [×××] for bean with name ‘×ב defined in class path resource [×××] 问题解决方法
- 常见SMTP发送失败原因列表
- scanner读取带空格字符串_Scanner类提供了输入字符出的方法,下面哪个方法可以实现字符串的输入且该串可以含有空格()。-智慧树JAVA程序设计(山东联盟-山东农业大学)章节答案...
- java 版剑指offer算法集锦
- 常用通讯电平转换电路整理
- 利用计算机教室教师培训记录表,新学期教师计算机培训方案
- Solr面试回答思路
- 计算机excel按F4是那个公式,excel中键盘F4到底怎么用?_excle 中的f4
- iOS开发中拉伸图片的几种方式
- 行人属性识别的一个调研