《编译与反编译技术》—第2章2.4正规式和有穷自动机的等价性

2.4 正规式和有穷自动机的等价性
正规式和有穷自动机的等价性可以从下面两个方面来说明:
1)对∑上任何NFA M,都存在∑上一个正规式r,使得L(r)=L(M)。
2)对∑上任何正规式r,都存在∑上一个NFA M,使得L(M)=L(r)。
首先介绍如何将∑上的NFA M,转为∑上一个等价的正规式r。在未给出具体的转化算法之前先对状态转换图概念进行拓广,令每条弧可用一个正规式作标记。由有穷自动机构造等价的正规式的算法见算法2.7。
算法2.7 由有穷自动机构造等价的正规式
输入:一个NFA M=(Q,∑,δ,q0,F)
输出:与NFA M等价的∑上一个正规式r
步骤:
1.在M的转换图上加进两个新状态X和Y,从X用ε弧连接到M的初态结点,从M的所有终态结点用ε弧连接到Y,从而形成一个新的NFA,记为M',它只有一个初态X和一个终态Y,显然L(M)=L(M')。
2.反复使用如图2-18所示的合并规则,逐步消去M'的所有结点,直到只剩下X和Y为止。
3.最后,X到Y的弧上标记的正规式即为所构造的正规式r。
例2.26 已知一个NFA M所对应的状态转换图如图2-19所示,试利用算法2.7构造与该自动机等价的正规式。
解:由算法2.7的第1步,在M的转换图上加进两个新状态X和Y,并分别用ε弧将X与M的初态结点,将M的所有终态结点与Y连接,从而形成一个新的NFA,其状态转化图如图2-20所示。



图2-19 例2.26中有穷自动机    图2-20 利用算法2.7第1步计算后的结果
所对应的状态转换图

利用算法2.7第2步中的第2条合并规则对图2-20中的转换图进行合并,可以得到如图2-21所示结果。



再反复利用算法2.7第2步中的第1条合并规则对图2-21中的转换图进行合并,可以得到如图2-22所示结果。


图2-21 利用算法2.7第2步中的    图2-22 利用算法2.7第2步的
第2条合并规则后的结果    第1条合并规则后的结果

由算法2.7的第3步可知,(letter|_)(letter|_|digit)*即为最终所求的正规式。
下面介绍将正规式转换为等价的有限自动机的算法,具体见算法2.8。

算法2.8 由正规式构造等价的有穷自动机
输入:∑上的一个正规式r
输出:与r等价的NFA M
步骤:
1.首先,将正规式r表示成如图2-23所示的拓广转换图。
2.按照图2-24所示的分裂规则对正规式r进行分裂。
3.重复步骤2直到每条弧只标记为∑上的一个字符或ε,此时得到转换图所对应的
NFA M即为所求。
例2.27 设有正规表达式(letter|_)(letter|_|digit)*,试利用算法2.8构造与之等价的NFA。
解:由算法2.8的第1步,为正规式(letter|_)(letter|_|digit)*构造拓广转换图,如图2-25所示。
利用算法2.8第2步中的第1条分裂规则对图2-25中的转换图进行分裂,可以得到如
图2-26所示结果。
利用算法2.8第2步中的第2条和第3条分裂规则对图2-26中的转换图进行分裂,可以得到如图2-27所示结果。
再利用算法2.8第2步中的第2条分裂规则对图2-27中的转换图进行分裂,可以得到如图2-28所示结果。由算法2.8的第3步可知,图2-28所对应的NFA即为所求。

图2-24 分裂规则


图2-25 (letter|_)(letter|_|digit)*的拓广转换图    图2-26 利用算法2.8第2步
    的第1条分裂规则后的结果

图2-27 利用算法2.8第2步的第2条和    图2-28 与(letter|_)(letter|_|digit)*
第3条分裂规则后的结果    等价的NFA所对应的状态图





时间: 2024-09-19 21:19:28

《编译与反编译技术》—第2章2.4正规式和有穷自动机的等价性的相关文章

《编译与反编译技术》目录—导读

前言"编译原理"是高等院校计算机科学与技术和软件工程专业的必修专业课之一,是一门理论与实践相结合的课程,对大学生科学思维的养成和解决实际问题能力的提高具有重要作用."编译技术"是"编译原理"课程中介绍的关键技术,已经被广大计算机软件从业者所掌握和熟悉."反编译技术"则是近几年得以迅速发展的新兴技术,许多计算机软件或信息安全从业者非常关心该项技术,但目前这方面的书籍较少,与"编译技术"结合起来讲解的更少.本书

《编译与反编译技术》—第2章2.1节词法分析器的需求分析

本节书摘来自华章出版社<编译与反编译技术>一书中的第2章,第2.1节词法分析器的需求分析,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问"华章计算机"公众号查看. 第2章 词法分析的理论与实践 词法分析是编译过程的第一步,也是编译过程必不可少的步骤.编译过程中执行词法分析的程序称为词法分析器.本章主要介绍词法分析器的手动构造和自动构造的原理. 2.1 词法分析器的需求分析 本节首先介绍词法分析器的功能及其输出的单词符号的表示方式,然后研究将词法分析独立出来的原因.

《编译与反编译技术》—第1章1.5节高级语言及其分类

本节书摘来自华章出版社<编译与反编译技术>一书中的第1章,第1.5节高级语言及其分类,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问"华章计算机"公众号查看. 1.5 高级语言及其分类 根据应用类型的不同,涌现了多种多样的面向人类的高级语言,其中典型的有如下几类形式. 1.过程式语言 过程式语言也称为强制式语言(Imperative Language).这类语言的特点是面向语句,命令驱动.一个用过程式语言编写的程序由一系列语句组成,语句的执行会引起若干存储单元中的值

《编译与反编译技术》—第1章1.8节UNIX/Linux环境中的make和makefile

本节书摘来自华章出版社<编译与反编译技术>一书中的第1章,第1.8节UNIX/Linux环境中的make和makefile ,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问"华章计算机"公众号查看. 1.8 UNIX/Linux环境中的make和makefile 在UNIX或Linux环境中,make是一个非常重要和经常使用的编译工具.无论是自己进行项目开发还是安装应用软件,都会经常用到make或make install.使用make工具,可以将大型的开发项目分解成

《编译与反编译技术》—第2章2.2词法分析器的设计

本节书摘来自华章出版社<编译与反编译技术>一书中的第2章,第2.2节词法分析器的设计,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问"华章计算机"公众号查看. 2.2 词法分析器的设计 下面将词法分析器作为一个独立的子程序来考虑其设计.本节主要探讨实现词法分析器的关键技术和词法分析器的手工实现. 2.2.1 输入及其处理 词法分析器的结构如图2-3所示.词法分析器首先将源程序文本输入一个缓冲区中,该缓冲区称为输入缓冲区,单词符号的识别可以直接在输入缓冲区中进行.但在

《编译与反编译技术实战》——第1章 实践的环境与工具 1.1 实践环境概述

第1章 实践的环境与工具 本书致力于通过实践及案例,从正反向两个角度介绍编译系统的一般构造原理和基本实现技术,本章首先对书中内容涉及的环境与工具进行简单介绍,这些工具都是编译与反编译过程中常用的工具. 1.1 实践环境概述 在编译过程中所涉及的环境主要是编译环境及工具链,常用的工具有词法分析生成器.语法分析生成器.编译器.汇编器.链接器等.在反编译过程中主要涉及反汇编器.静态或动态的调试与分析工具.下面对近年来流行的编译与反编译工具逐一进行简单介绍.

《编译与反编译技术实战 》一 第1章 实践的环境与工具

第1章 实践的环境与工具 本书致力于通过实践及案例,从正反向两个角度介绍编译系统的一般构造原理和基本实现技术,本章首先对书中内容涉及的环境与工具进行简单介绍,这些工具都是编译与反编译过程中常用的工具. 1.1 实践环境概述 在编译过程中所涉及的环境主要是编译环境及工具链,常用的工具有词法分析生成器.语法分析生成器.编译器.汇编器.链接器等.在反编译过程中主要涉及反汇编器.静态或动态的调试与分析工具.下面对近年来流行的编译与反编译工具逐一进行简单介绍.

《编译与反编译技术》—第2章2.3节有穷自动机

本节书摘来自华章出版社<编译与反编译技术>一书中的第2章,第2.3节有穷自动机,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问"华章计算机"公众号查看. 2.3 有穷自动机 前面在介绍词法分析程序的手工实现时引入了状态转换图,为了讨论词法分析器的自动生成,需要将上述状态图的概念形式化,即引入有穷自动机.有穷自动机分为确定的有穷自动机和非确定的有穷自动机. 2.3.1 确定的有穷自动机 定义2.9(确定的有穷自动机(Deterministic Finite Autom

《编译与反编译技术实战》——第1章实践的环境与工具

第1章实践的环境与工具本书致力于通过实践及案例,从正反向两个角度介绍编译系统的一般构造原理和基本实现技术,本章首先对书中内容涉及的环境与工具进行简单介绍,这些工具都是编译与反编译过程中常用的工具.