文章目录

  • 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的探索相关推荐

  1. 编译原理——正规式、NFA转换构造DFA、DFA的化简

    一.DFA和NFA的区别 NFA:非确定有限自动机 DFA:确定有限自动机 NFA在同一状态,可以有多条出边,DFA在同一状态,只能有一条出边: NFA的初态可以具有多个,DFA的初态是唯一的: 比如 ...

  2. 编译原理知识点总结——从NFA到DFA的转化

    都是由若干个a加若干个b加若干个c,若干个最少为1. 例2,带空边的

  3. 【编译原理】NFA转DFA(子集构造法)

    前文回顾 [编译原理]正则表达式转NFA 算法 来自龙书第二版 C++实现 #include<iostream> #include<string> #include<cs ...

  4. 【编译原理核心知识点总结】第三章、正则文法、NFA、DFA

    阅读规范: 本文以重点为主,零碎知识点/相对不够重要的为辅助阅读内容,以脚注形式给出,点击脚注即可快速跳转. 助解题目通常是为了帮助理解给出的题目,考试不考,若已理解可直接跳过. 文中提到的课本是陈火 ...

  5. 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA)

    编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 文章目录 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 简 ...

  6. [编译原理随记]正则表达式转为NFA状态图(Thompsion构造法)

    上级文章 [编译原理随记]正则表达式记号和状态图:https://blog.csdn.net/qq_28033719/article/details/107067798 [编译原理随记]NFA转DFA ...

  7. 【C++实现】编译原理 免考小队 NFA转换为等价的DFA

    背景 期末考试免考,冲! 实验名称 对任意给定的NFA M进行确定化操作 实验时间 2020年5月21日 到 2020年5月24日 院系 信息科学与工程学院 组员姓名 Chocolate.kry202 ...

  8. 编译原理--NFA/DFA

    现成的, 讲义: https://www.cnblogs.com/AndyEvans/p/10240790.html https://www.cnblogs.com/AndyEvans/p/10241 ...

  9. 【编译原理笔记03】词法分析:正则表达式、有穷自动机(FA)、DFA与NFA及RE的相互转换、DFA识别单词、语法检测

    本次笔记内容: 3-1 正则表达式 3-2 正则定义 3-3 有穷自动机 3-4 有穷自动机的分类 3-5 从正则表达式到有穷自动机 3-6 从NFA到DFA的转换 3-7 识别单词的DFA 文章目录 ...

  10. 确定与不确定有限自动机DFA与NFA及子集法互相转换

    编译原理正规式NFA与DFA及子集法 1.基础术语与概念: 语法描述基本概念 字母表:一个有穷字符集记为Σ 字母表中每个元素称为字符 Σ上的字(字符串)是指Σ中的字符所构成的一个有穷序列 不包含任何字 ...

最新文章

  1. 追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (1)
  2. Java 8中的时间日期库DateTime API及示例
  3. docker 部署 nginx
  4. Python - MySQL数据库操作
  5. android检查新版本,详解Android Studio无法检测新版本问题解决
  6. Spring Cloud Config Server简介
  7. 伯乐发卡系统源码 可用
  8. spring boot 2.x 系列 —— spring boot 整合 kafka
  9. 转载 openlayers 3.0 教程
  10. 易语言pc微信hook最新版本
  11. DeepFool对抗算法_学习笔记
  12. PCL库中I/O操作
  13. openlayers3—地图图层数据来源(ol.source)
  14. 微电子新手入门之 Origin画图
  15. SQL反模式:实体-属性-值(EAV)问题(一)
  16. JDK1.6“新“特性Instrumentation之JavaAgent
  17. 轻松解决win10不能联网问题
  18. JAVA通用分页代码
  19. M1 芯片 MacBook Pro/Air 软件兼容性如何?是否值得购买?
  20. 热成型容器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. dll function 'xxx' not found
  2. 读取位置 0x00000001 时发生访问冲突
  3. matlab svd分解
  4. ubuntu 安装bcompare
  5. 13.执行外部命令subprocess
  6. 三、神兽变变变(下)
  7. ue查找多个关键字_聊聊数据库GROUP BY关键字的那些事
  8. python课件_讲座直播 | Python在线课堂第二周
  9. Maven入门教程(一)
  10. Java泛型详解-史上讲解最详细的,没有之一