文章目录

  • 3.4.4 确定有穷自动机的化简
    • 1.化简的有穷自动机的定义
    • 2.分割法
    • 3.The End

3.4.4 确定有穷自动机的化简

1.化简的有穷自动机的定义

一个没有多余状态并且没有两个状态是等价的有穷自动机。

多余状态(无用状态):从该自动机的开始状态出发,任何输入串也不能到达的那个状态

等价状态:

  1. 两个状态必须同时为可接受状态(终态)或者不可接受状态(非终态)——一致性条件
  2. 对于所有的输入符号,两个状态接受相同的符号必须转换到等价的状态——蔓延性条件

2.分割法

我们首先将其分为终态和非终态

P 0 P_0 P0​ = ({1, 2, 3, 4}, {5, 6, 7})

接下来我们尝试先对{1, 2, 3, 4}这个子集进行划分

1 ⟶ a 6 1\stackrel{a}{\longrightarrow}6 1⟶a​6; 1 ⟶ b 3 1\stackrel{b}{\longrightarrow}3 1⟶b​3

2 ⟶ a 7 2\stackrel{a}{\longrightarrow}7 2⟶a​7; 2 ⟶ b 3 2\stackrel{b}{\longrightarrow}3 2⟶b​3

3 ⟶ a 1 3\stackrel{a}{\longrightarrow}1 3⟶a​1; 3 ⟶ b 5 3\stackrel{b}{\longrightarrow}5 3⟶b​5

4 ⟶ a 4 4\stackrel{a}{\longrightarrow}4 4⟶a​4; 4 ⟶ b 6 4\stackrel{b}{\longrightarrow}6 4⟶b​6

首先我们看如果输入a的话,1和2的输出为{5,6,7}这个集合中的元素,而3和4则仍是本集合的元素,所以根据等价状态的第二性质,我们可以将1、2 与3、4分割开。

P 1 P_1 P1​ = ({1, 2}, {3, 4}, {5, 6, 7})

对于目前这个新的集合来说,我们继续划分每个子集。首先从{1,2}开始

1 ⟶ a 6 1\stackrel{a}{\longrightarrow}6 1⟶a​6; 1 ⟶ b 3 1\stackrel{b}{\longrightarrow}3 1⟶b​3

2 ⟶ a 7 2\stackrel{a}{\longrightarrow}7 2⟶a​7; 2 ⟶ b 3 2\stackrel{b}{\longrightarrow}3 2⟶b​3

我们无论是对1,2输入a还是输入b,它们的输出都属于同一个集合——6、7属于{5,6,7}这个终态集合,3属于{3,4}这个集合,所以{1,2}这个集合很完美,无法划分(即状态无法区分),它俩好得跟一个人似的。

那么我们继续看{3,4}

3 ⟶ a 1 3\stackrel{a}{\longrightarrow}1 3⟶a​1; 3 ⟶ b 5 3\stackrel{b}{\longrightarrow}5 3⟶b​5

4 ⟶ a 4 4\stackrel{a}{\longrightarrow}4 4⟶a​4; 4 ⟶ b 6 4\stackrel{b}{\longrightarrow}6 4⟶b​6

哦,我们看到,当输入a的时候,3输出的是1,属于{1,2}集合;4则输出的是4,属于{3,4}集合,所以3和4的状态可区分。

那么更新我们的状态图

更新P

P 2 P_2 P2​ = ({1,2}, {3}, {4}, {5, 6, 7})

很明显我们的故事还没结束,还有{5,6,7}这个集合

5 ⟶ a 7 5\stackrel{a}{\longrightarrow}7 5⟶a​7; 5 ⟶ b 3 5\stackrel{b}{\longrightarrow}3 5⟶b​3

6 ⟶ a 4 6\stackrel{a}{\longrightarrow}4 6⟶a​4; 6 ⟶ b 1 6\stackrel{b}{\longrightarrow}1 6⟶b​1

7 ⟶ a 4 7\stackrel{a}{\longrightarrow}4 7⟶a​4; 7 ⟶ b 2 7\stackrel{b}{\longrightarrow}2 7⟶b​2

很明显,在输入a的时候,5的输出为7即{5,6,7} 本集合内的,而6、7则是输出的同一个集合。二话不说,分家!

P 3 P_3 P3​ = ({1,2}, {3}, {4}, {5}, {6, 7})

这时候,还剩{6,7},如果你上面看明白了,那么到这里你也就懂了,6、7是不可区分的状态。

分割法到此结束……

……不还有最后一步,把所有的不可区分状态统统用其中一个状态来表示就行。

比如1、2,我们直接用1来代替就行,把2所有的输入和输出的压力都放到1身上

( 1 ⟶ b 3 1\stackrel{b}{\longrightarrow}3 1⟶b​3, 2 ⟶ b 3 2\stackrel{b}{\longrightarrow}3 2⟶b​3 所以这两个线用一个就行)

然后我们发现6、7可以直接用6代替

把虚线收拾干净再看看

3.The End

编译原理——确定有穷自动机的化简-分割法相关推荐

  1. 【编译原理】— 求最小化DFA

    (编译原理) 求最小化DFA(写出所有过程) 解题过程如下: 1.根据状态转换图写出状态转换表 2.写出DFA表 I Ia Ib A B C B B D C B C D B E E B C 3.画出D ...

  2. 编译原理中词法分析的递归下降分析法实例--能被5整除的二进制数---c语言实现

    一.前言 又到了一周一度的编译原理实验课,一次实验课上完了,又是大学生必备技能-写实验报告.行了,废话不多说,我直接展现,如何实现编译原理中词法分析的递归下降分析法实例–能被5整除的二进制数的思路.作 ...

  3. lr1分析器c语言实验报告怎么写,编译原理课程的设计构造LR分析法语法分析器.doc...

    编译原理课程的设计构造LR分析法语法分析器 太 原 学 院 课程设计报告书 课程名称 设计题目 构造LR(0)分析法语法分析器 专业班级 学 号 姓 名 指导教师 2016年 12 月 15日 目 录 ...

  4. DFA确定性有穷自动机及其化简

    DFA:deterministic finite automator 介绍 概念: 有穷自动机的每一步操作都是确定的,因此可称为确定型有穷自动机.确定有穷自动机就是说当一个状态面对一个输入符号的时候, ...

  5. QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-语法制导翻译与递归子程序设计(编译原理)(5)简书被冻结-搬运】

    原作时间:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ven ...

  6. 计数原理,组合的化简

    组合的化简: 性 质 一 : C n m = C n n − m {\color{red}性质一: C_{n}^{m}=C_{n}^{n-m}} 性质一:Cnm​=Cnn−m​ 例: C 5 2 = ...

  7. 【编译原理】FIRST集和FOLLOW集构造法速学

    编译原理速成大法 FIRST集和FOLLOW集构造法速成 FIRST FOLLOW FIRST集和FOLLOW集构造法速成 例:对于文法G(E) 首先像E,T,E',F这样的就是非终结符 +,*, ε ...

  8. 【编译原理】 实验三 LL(1)分析法(LL1分析表的自动生成)

    写在前面 由于代码较长,csdn对文章总长度有字数限制,想只看完整代码的请移步另一篇博客. https://blog.csdn.net/qq_46640863/article/details/1257 ...

  9. 【编译原理】【实验】利用子集法构造DFA

    利用子集法构造DFA 一.实验目的 二.实验要求.内容 三.实验设备 四.实验原理(或程序框图)及步骤 五.程序源代码 六.实验数据.结果分析 七.存在的问题与体会 附录 一.实验目的 掌握将非确定有 ...

最新文章

  1. 多媒体音量条显示异常跳动
  2. lvs调整hash表大小
  3. Perfect service(树形dp)
  4. 用MyEclipse自动生成hibernate映射文件和实体类
  5. kafka 配置及常用命令
  6. gui linux 桌面应用,吃掉Linux开发者,WSL支持GUI应用
  7. .NET 并行(多核)编程系列之六 Task基础部分完结篇
  8. python文件地址拼接
  9. C语言-输入十进制数转换为二进制数
  10. nlp-tutorial代码注释笔记
  11. 禅道 mysql 远程连接_远程访问禅道开源版数据库(基于docker)
  12. 探索 OpenStack 之(15):oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收
  13. CCF201409-2 画图(100分)
  14. Python优化算法06——人工鱼群算法
  15. 机械专业向机器人工程专业转型的可行性与前景分析
  16. 银行核心业务系统性能测试
  17. 关于手心输入法配置完整自然码辅码
  18. coldfusion_Coldfusion数据结构简介第IV部分–查询
  19. 【解决】如何线上申请电子版的招商银行卡 | 在线申请招商银行的一网通账户
  20. 散粉在哪个步骤用_【散粉怎么用】正确的散粉用法_方法步骤顺序-她时代-女性时尚生活宝典...

热门文章

  1. 工厂电子地图-厂区导航-厂区人员定位系统
  2. python如何提高for循环效率_如何提高python的遍历效率?
  3. AI+影像赛道开启,美图在人工智能领域如何「名利双收」?【楚才国科】
  4. CPU流水线技术演进
  5. android浏览器测试,主流Android浏览器功能对比测试
  6. SIFT特征提取与检索
  7. HW4:Unity3D中游戏场景的创建
  8. 有人负责,才有质量:写给在集市中迷失的一代读后感
  9. 智能优化算法 — 蜣螂优化算法(Dung beetle optimizer,DBO)
  10. Peercast源代码分析