对于给定的DFA    M,寻找一个状态数比M小的DFA    M'使得L(M)=L(M')

1.状态的等价性:

假设s和t为M的两个状态

①若分别从状态s和状态t出发都能读出某个字α而停止于终态,则称s和t等价

②存在一个字α,使得s和t一个读出α停止于终态,另一个读出α停止于非终态,则称s和t可区别

2.基本思想:

①把M的状态集分为一些不相交的子集,使任何两个不同子集状态是可区别的,而同一子集的任何两个状态是等价的

②让每个子集选出一个代表,同时消去其他状态

3.划分

①把S划分为终态和非终态两个子集,形成基本划分∏

②假定某个时候∏已含m个子集,记为∏={I(1),I(2),…,I(m)},检查∏中的每个子集能否进一步划分:

(a)假定s1和s2是I(i)={s1,s2,…sk}中的两个状态,它们经过a弧分别到达t1和t2,而t1和t2属于现行∏中的两个不同子集,则s1和s2不等价

(b)一般地,对于某个I(i),若Ia(i)落于现行∏中N个不同的子集,则应把I(i)划分成N个不相交的组

例:

编译原理-DFA的化简(最小化)的更多相关文章

  1. 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数

    整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git nullable, firstpos, la ...

  2. 编译原理 DFA(确定性有穷自动机)&& NFA(非确定性有穷自动机)

    https://www.cnblogs.com/fpcbk/p/11004913.html

  3. 编译原理-DFA与正规式的转化

  4. QT:窗口最小化时显示一个小浮标

    有些窗口在自身最小化时要在桌面上显示一个小浮标,让用户利用这个小浮标进行各种操作(例如迅雷的悬浮窗一样),我试着用QT实现一下这个功能. PS:本来以为这个功能很简单,却搞了我两个晚上,泪奔... 思 ...

  5. Winform 基础二 最小化 最大化 关闭 点击任务栏隐藏显示 点击鼠标左键移动窗体

    一 最大化 二 最小化 三 关闭 四 点击任务栏隐藏显示 五 点击鼠标左键移动窗体 六 阴影效果鼠标左键移动窗口 #region UI设置 最大化.最小化.关闭.鼠标移动窗口.点击任务栏切换窗口 th ...

  6. 编译原理之DFA最小化,语法分析初步

    1.将DFA最小化: 状态转换图: 识别语言:b*ac*(da)*bb* 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 (1)正规式: S -> 0(1S+ ...

  7. 编译原理:DFA最小化,语法分析初步

    1.将DFA最小化:教材P65 第9题   解析: 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 解析: S→ 0A|1B →S → 0(1S|1)|1(0S|0 ...

  8. 编译原理中DFA最小化

    关于编译原理最小化的操作,专业术语请移步至:http://www.360doc.com/content/18/0601/21/11962419_758841916.shtml 这里只是记录一下个人的理 ...

  9. How Javascript works (Javascript工作原理) (十四) 解析,语法抽象树及最小化解析时间的 5 条小技巧

    个人总结:读完这篇文章需要15分钟,文章介绍了抽象语法树与js引擎解析这些语法树的过程,提到了懒解析——即转换为AST的过程中不直接进入函数体解析,当这个函数体需要执行的时候才进行相应转换.(因为有的 ...

随机推荐

  1. Linux中grep工具的使用

    Grep grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,是 ...

  2. poj2186强联通(牛仰慕)

    题意:       有一群老牛,他们之间有m组敬仰关系,关系可以传递,a仰慕b,b仰慕c,那么a就仰慕c,现在问被所有老牛都仰慕 的有多少? 思路:       想想,是不是一个环中的老牛的关系都是一 ...

  3. 11.PHP与MySQL

    PHP与MySQL 首先是PHPStorm设置创建SQL的教程,找到了一个写的不错的,在这里:http://blog.csdn.net/knight_quan/article/details/5198 ...

  4. Ext.MessageBox.alert()弹出对话框详解

    Ext.MessageBox是一个工具类,他继承自Obiect对象,用来生成各种风格的信息提示对话框,Ext.Msg是该类的别名,使用Ext.MessageBox和用Ext.Msg效果是一样的,而后者 ...

  5. 序列化-Json

    常见的Json转换工具有google的gson和阿里的fastgson.目前主流策略:POJO序列化成JSON字符串用Gson库,JSON字符串反序列化为POJO,用fastJson库. Netty中 ...

  6. 逆向工程初步160个crackme-------3

    这个Crackme3 涉及到浮点指令以及浮点数的存储与运算,我没学习过浮点指令,不得不从网上恶补了1个小时,一边看汇编指令一边百度其指令含义. 回头得好好补补这方面的知识了,太菜了! 我大致了解了一下 ...

  7. 『政善治』Postman工具 — 11、Postman中对Cookie的操作

    目录 1.关联接口说明 2.测试关联接口实现步骤 3.补充:Postman中将请求转换成代码 上一篇文章说明了Postman中关于Cookie的相关操作,还是以Cookie举例,来说明下一在Postm ...

  8. activiti知识点梳理

    一.Activiti是什么 Alfresco 软件在 2010 年 5 月17 日宣布 Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理 BPM的专家 Tom Ba ...

  9. 如何更好理解Peterson算法?

    如何更好理解Peterson算法? 1 Peterson算法提出的背景 在我们讲述Peterson算法之间,我们先了解一下Peterson算法提出前的背景(即:在这个算法提出之前,前人们都做了哪些工作 ...

  10. CSS中常用的函数

    一.CSS函数的用法 设置css的属性值时可以使用css函数,如果color:rgba(20,30,50,0.5),css中有很多这样的函数. 二.常用的CSS函数 a.calc()函数   这个函数 ...