【编译原理】有限自动机NFA-ε到NFA的探索
文章目录
- 1 原理分析
- 2 图解
- 3 实例推导
1 原理分析
Q:有限个数状态的集合
∑:输入字母表
T :迁移函数
S :初始状态
F :结束状态
现在来介绍从 NFA-ε 到 NFA 的转换
令Q‘、∑’、T ‘、S’、F分别表示 NFA中的 有限个数状态集合、输入字母表、迁移函数、初始状态、结束状态,而Q、∑、T、S、F则表示NFA-ε 中的有限个数状态集合、输入字母表、迁移函数、初始状态、结束状态;那么,∑‘ = ∑, Q’ = Q,S’ = S, F‘ = {q | E(q) ∩ F≠ф } (其中E(q)表示q 的 ε 闭包)
简单来说,就是看这个状态A连续空跳到达的状态B是什么,如果B通过输入字母表X到达状态C,则直接简化为状态A接受输入字母表B到达C, 如果B没有获得
2 图解
任何输入字母表,则A不进行任何操作。简单的图示如下:
该图下面一连串的过程可以等价为 状态q0 吸收 x 后变成状态q2
3 实例推导
现在来看一个 NFA-ε 转为 NFA 的实例,把下图转变为NFA
首先从状态X开始,它能一直空跳到状态I, 由于状态I 吸收 1 后变成状态 J, 故状态 X 能接受 1直接变成状态 J,而状态G、H、I都可省去。此外,状态X也可以一直空跳到状态 A和状态 C;针对状态 A, 其接收 1 后变成状态 B ,故 X 能直接接收 1 变成状态 B, 同样由于状态 C 接受 0 后变成状态 D, 故 X 也能直接接收 0 后变成状态 D。到这里状态 X 全部讨论完毕。
接下来讨论状态 G,由于状态 G 可由状态 X 跳转得到,并且 X 已经讨论过,故状态 G 可以忽略。同理,状态 H、I、A、C也可以忽略。
接下来讨论状态 B,状态 B 可以连续跳转到 状态 A 和状态 C,由于 A 可接受 1 变成状态 B, 故 B 可直接接收 1 保持自身状态不变,又由于 C 可以接收 0 变成状态 D,故B 也可以接收 0 变成状态 D。此外,状态B也可以跳转到状态 F, 由于 F 接收 1 变成状态 J,故状态 B 也可以直接接收 1 变成状态 J。至此状态 B 讨论结束。
接下来讨论状态 C,由于状态 C 可以连续跳转到状态 A 和状态 C,由于 A 可以接收 1 变成状态 B,故C 能直接接收1变成状态B;由于C可接收0变成状态D,故D 可直接接收0保持自身状态不变。此外,状态 C也可以跳转到状态F,由于状态F接收1变成状态J,故状态 D也可以直接接收 1 变成状态 J。至此,状态 C 讨论结束。
接下来讨论状态 F,F可以由B、D经过空跳得到,由于B、D已讨论过,故F可以忽略。
接下来讨论状态 J,由于状态 J 可以通过空跳得到状态 Y,而 Y又是结束状态,故 J 是一个结束状态。
接下来讨论状态Y,由于状态 J 通过空跳得到状态 Y,故 Y 可以忽略。
至此,全部状态分析完毕,其变化后的图如下
【编译原理】有限自动机NFA-ε到NFA的探索相关推荐
- 编译原理——正规式、NFA转换构造DFA、DFA的化简
一.DFA和NFA的区别 NFA:非确定有限自动机 DFA:确定有限自动机 NFA在同一状态,可以有多条出边,DFA在同一状态,只能有一条出边: NFA的初态可以具有多个,DFA的初态是唯一的: 比如 ...
- 编译原理知识点总结——从NFA到DFA的转化
都是由若干个a加若干个b加若干个c,若干个最少为1. 例2,带空边的
- 【编译原理】NFA转DFA(子集构造法)
前文回顾 [编译原理]正则表达式转NFA 算法 来自龙书第二版 C++实现 #include<iostream> #include<string> #include<cs ...
- 【编译原理核心知识点总结】第三章、正则文法、NFA、DFA
阅读规范: 本文以重点为主,零碎知识点/相对不够重要的为辅助阅读内容,以脚注形式给出,点击脚注即可快速跳转. 助解题目通常是为了帮助理解给出的题目,考试不考,若已理解可直接跳过. 文中提到的课本是陈火 ...
- 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA)
编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 文章目录 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 简 ...
- [编译原理随记]正则表达式转为NFA状态图(Thompsion构造法)
上级文章 [编译原理随记]正则表达式记号和状态图:https://blog.csdn.net/qq_28033719/article/details/107067798 [编译原理随记]NFA转DFA ...
- 【C++实现】编译原理 免考小队 NFA转换为等价的DFA
背景 期末考试免考,冲! 实验名称 对任意给定的NFA M进行确定化操作 实验时间 2020年5月21日 到 2020年5月24日 院系 信息科学与工程学院 组员姓名 Chocolate.kry202 ...
- 编译原理--NFA/DFA
现成的, 讲义: https://www.cnblogs.com/AndyEvans/p/10240790.html https://www.cnblogs.com/AndyEvans/p/10241 ...
- 【编译原理笔记03】词法分析:正则表达式、有穷自动机(FA)、DFA与NFA及RE的相互转换、DFA识别单词、语法检测
本次笔记内容: 3-1 正则表达式 3-2 正则定义 3-3 有穷自动机 3-4 有穷自动机的分类 3-5 从正则表达式到有穷自动机 3-6 从NFA到DFA的转换 3-7 识别单词的DFA 文章目录 ...
- 确定与不确定有限自动机DFA与NFA及子集法互相转换
编译原理正规式NFA与DFA及子集法 1.基础术语与概念: 语法描述基本概念 字母表:一个有穷字符集记为Σ 字母表中每个元素称为字符 Σ上的字(字符串)是指Σ中的字符所构成的一个有穷序列 不包含任何字 ...
最新文章
- 追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (1)
- Java 8中的时间日期库DateTime API及示例
- docker 部署 nginx
- Python - MySQL数据库操作
- android检查新版本,详解Android Studio无法检测新版本问题解决
- Spring Cloud Config Server简介
- 伯乐发卡系统源码 可用
- spring boot 2.x 系列 —— spring boot 整合 kafka
- 转载 openlayers 3.0 教程
- 易语言pc微信hook最新版本
- DeepFool对抗算法_学习笔记
- PCL库中I/O操作
- openlayers3—地图图层数据来源(ol.source)
- 微电子新手入门之 Origin画图
- SQL反模式:实体-属性-值(EAV)问题(一)
- JDK1.6“新“特性Instrumentation之JavaAgent
- 轻松解决win10不能联网问题
- JAVA通用分页代码
- M1 芯片 MacBook Pro/Air 软件兼容性如何?是否值得购买?
- 热成型容器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告