编译原理第三章

编译原理第三章

  • 3.1_正规文法和状态转换图
    • (1)构造状态转换图
    • (2)状态矩阵
  • 3.2_有限自动机
    • 3.2.1_确定的有限自动机DFA
    • 3.2.2_非确定的有限自动机NFA
  • 3.3_NFA转换为DFA(NFA确定化)
    • 3.3.1_无ε动作的NFA确定化
    • 3.3.2_有ε动作的NFA确定化
  • 3.4_DFA最小化
  • 3.5_正规表达式和正规集

3.1_正规文法和状态转换图

(1)构造状态转换图

1、对于G中每一个形如A——>aB的产生式,从结点A引一条矢线到结点B,并用符号a标记这条矢线
即A—a—>B
在这里插入图片描述

2、对于G中每一个形如A——>a的产生式,从结点A引一条矢线到结点F,并用符号a标记这条矢线
即A—a—>F
在这里插入图片描述

(2)状态矩阵

状态矩阵:Bij=B[Si,aj],其中Si为状态图中各状态,aj为各输入符号,总元素个数=|VN|×|VT|

3.2_有限自动机

3.2.1_确定的有限自动机DFA

在这里插入图片描述

3.2.2_非确定的有限自动机NFA

在这里插入图片描述

3.3_NFA转换为DFA(NFA确定化)

3.3.1_无ε动作的NFA确定化

在这里插入图片描述

3.3.2_有ε动作的NFA确定化

在这里插入图片描述

3.4_DFA最小化

DFA状态数最小化算法:
(1)将状态集K划分为终态子集Z和非终态子集K-Z, 记为π={Z, K-Z}
(2)对当前中的每个子集,检查其中每个状态对识别相同字符是否具有同样的映射(即是否能够映射到π中的同一个集合),将映射到不同状态子集的称为可以区分的,将其按映射关系进行分裂,产生新的状态子集集合,记为πnew。 .
(3)若πnew <> π, 重复(2),直至各子集都不能继续划分。
(4)对最终划分II的每个状态子集,取其中任一状态作为该子集的代表状态,将原来射入该子集的所有矢线改为射入此代表状态。取含有原任一终态的子集作为新的终态。
在这里插入图片描述

3.5_正规表达式和正规集

在这里插入图片描述

(1)正规式:将文法的终结符号用以上三种运算符连接起来组成的正规文法的表达式,是另- -种用于描述正规文法的直观表示。
例如语法范畴<标识符>的正规表达式为:字母(字母|数字) *
(2)正规集:正规式所描述的字符串的集合。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列终极解决方案——Stream(下)

在开始使用消息分组之前,我们必须手动创建分组才行,以下是几个和 Stream 分组有关的命令,我们先来学习一下它的使用。 消息分组命令 创建消费者群组 127.0.0.1:6379> xgroup create mq group1 0-0 OK相关语法: xgroup create stream-key group-key ID其中: mq 为…

ftp上传和下载命令

2019独角兽企业重金招聘Python工程师标准>>> 假设有一目标FTP服务器&#xff0c;IP&#xff1a;123.123.123.123&#xff0c;用户名&#xff1a;ftpname 密码&#xff1a;ftppwd。当前要通过命令行将D:\ftpin目录下的file.doc上传到目标服务器&#xff0c;从服务器下…

String.IsNullOrEmpty()方法以及C#中的示例

C&#xff03;String.IsNullOrEmpty()方法 (C# String.IsNullOrEmpty() Method) String.IsNullOrEmpty() method is a built-in method of String class and it is used to check whether a string is Null or Empty? If string object is not initialized with a correct val…

消息队列终极解决方案——Stream(上)

在 Redis 5.0 Stream 没出来之前,消息队列的实现方式都有着各自的缺陷,例如: 发布订阅模式 PubSub,不能持久化也就无法可靠的保存消息,并且对于离线重连的客户端不能读取历史消息的缺陷;列表实现消息队列的方式不能重复消费,一个消息消费完就会被删除;有序集合消息队列…

《算法导论》学习笔记——快速排序

快速排序 1.快速排序原理 快速排序是一种应用很广泛的排序算法&#xff0c;与归并排序类似&#xff0c;快速排序也采用了分治策略。对于一个待排序的数组A[p...r]进行快速排序&#xff0c;根据分治思想&#xff0c;可以分为如下三个步骤&#xff1a;   - 分解&#xff1a;数组…

JavaTCP连接

输入输出操作 可以这样理解&#xff1a; BufferedReader/BufferedWriter使用三部曲&#xff1a; 服务器操作 import java.io.*; import java.net.ServerSocket; import java.net.Socket;public class Server {private static int port 8002;//设置端口号public static v…

JavaScript中的If和Else语句(香草)

Generally if statements have the following syntax: 通常&#xff0c; if语句具有以下语法&#xff1a; if(condition){Our code;}The condition, here can be anything from the mathematical expression, Boolean, relation operations etc. 条件&#xff0c;这里可以是数…

不创建 sequence 自增字段

drop table t_log;create table t_log (log_id number primary key,user_name varchar2(100),log_date date);--新建一个表&#xff0c;有id 用户名 和 日期字段create or replace trigger tri_logonafter logon on databasebegininsert into t_log values(nvl((select max(…

完整案例:实现延迟队列的两种方法

延迟队列是指把当前要做的事情,往后推迟一段时间再做。 延迟队列在实际工作中和面试中都比较常见,它的实现方式有很多种,然而每种实现方式也都有它的优缺点,接下来我们来看。 延迟队列的使用场景 延迟队列的常见使用场景有以下几种: 超过 30 分钟未支付的订单,将会被取…

Java API概述及应用

Java API概述及应用5.1_Scanner和Random的使用&#xff08;1&#xff09;Scanner&#xff08;2&#xff09;Random生成随机数5.2_ArrayList集合的使用&#xff08;1&#xff09;ArrayList的定义及限制&#xff08;2&#xff09;函数调用&#xff08;3&#xff09;字符串字符串加…

定位position详解:relative与absolute

定位标签&#xff1a;position 包含属性&#xff1a;relative&#xff08;相对&#xff09; absolute&#xff08;绝对&#xff09; 1.position:relative; 如果对一个元素进行相对定位&#xff0c;首先它将出现在它所在的位置上。然后通过设置垂直或水平位置&#xff0c;让这个…

实战:布隆过滤器安装与使用及原理分析

我们前面有讲到过 HyperLogLog 可以用来做基数统计,但它没提供判断一个值是否存在的查询方法,那我们如何才能查询一个值是否存在于海量数据之中呢? 如果使用传统的方式,例如 SQL 中的传统查询,因为数据量太多,查询效率又低有占用系统的资源,因此我们需要一个优秀的算法…

转:RMAN 备份与恢复 实例

转载自&#xff1a;http://blog.csdn.net/tianlesoftware/article/details/4699320 1. 检查数据库模式&#xff1a; sqlplus /nolog conn /as sysdba archive log list (查看数据库是否处于归档模式中) 若为非归档,则修改数据库归档模式。 startup mount alter…

有重复数字的组合问题_带数字重复的组合和问题

有重复数字的组合问题Description: 描述&#xff1a; This is a standard interview problem to make some combination of the numbers whose sum equals to a given number using backtracking. 这是一个标准的面试问题&#xff0c;它使用回溯功能将总和等于给定数字的数字进…

第四章语法分析和语法分析程序

第四章语法分析和语法分析程序4.1_自顶向下的语法分析4.1.1_自顶向下分析过程的基本特点①消除文法直接左递归②回溯的消除及LL(1)文法4.1.2_递归下降法4.1.3_预测分析法&#xff08;也叫LL1法&#xff0c;注意分析过程中非终结符号逆序入栈&#xff09;4.2_自底向上的语法分析…

实战:RediSearch 高性能的全文搜索引擎

RediSearch 是一个高性能的全文搜索引擎,它可以作为一个 Redis Module(扩展模块)运行在 Redis 服务器上。 RediSearch 主要特性如下: 基于文档的多个字段全文索引高性能增量索引文档排序(由用户在索引时手动提供)在子查询之间使用 AND 或 NOT 操作符的复杂布尔查询可选的…

智能优化算法应用:基于法医调查算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于法医调查算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于法医调查算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.法医调查算法4.实验参数设定5.算法结果6.…

转:Oracle物理文件

转载&#xff1a;http://www.worlduc.com/blog2012.aspx?bid19969111 -------------------初始化参数文件--------------------------------------------- 在9i之前&#xff0c;参数文件只有一种&#xff0c;它是文本格式的&#xff0c;称为pfile&#xff0c;在9i及以后的版本…

c语言两个浮点数相加_C语言中两个浮点数或双精度数的模数

c语言两个浮点数相加As we know that modules also known as the remainder of the two numbers can be found using the modulus (%) operator which is an arithmetic operator in C/C. The modules operator works with integer values i.e. modulus operator is used to fi…

java线程的5个使用技巧

Java线程的5个使用技巧 Published: 21 Jan 2015 Category: java Java线程有哪些不太为人所知的技巧与用法&#xff1f; 萝卜白菜各有所爱。像我就喜欢Java。学无止境&#xff0c;这也是我喜欢它的一个原因。日常工作中你所用到的工具&#xff0c;通常都有些你从来没有了解过的东…