• 正规式——》最小化DFA

1.先把正则式——》NFA(非确定有穷自动机)

涉及一系列分解规则

2.再把NFA通过"子集构造法"——》DFA

通过子集构造法将NFA转化为DFA

将表里的变量名用比较简单的符号代替(最好是在进行构造的时候顺手在草稿纸上标记好,方便后面的工作)

对照上面的表,画出DFA的状态转换图

图中0,1,2,3,4,5都是终态,因为他们的集合里都包含了最初的终态“数字9”。

3.再把DFA通过"分割法”进行最小化

  • 消除多余状态

从这个状态没有通路到达终态;S1 
从开始状态出发,任何输入串也不能到达的那个状态。S2 

  • 合并等价状态

采用“分割法”

兼容性(一致性)条件——同是终态或同是非终态 
传播性(蔓延性)条件——对于所有输入符号,状态s和状态t必须转换到等价的状态里。

DFA的最小化—例子,第一步都是固定的。分成终态和非终态

1.将M的状态分为两个子集一个由终态k1={C,D,E,F}组成,一个由非终态k2={S,A,B}组成,

2.考察{S,A,B}是否可分.

因为A经过a到达C属于k1.而S经过a到达A属于k2.B经过a到达A属于k2,所以K2继续划分为{S,B},{A},

3.考察{S,B}是否可再分:

B经过b到达D属于k1.S经过b到达B属于k2,所以S,B可以划分。划分为{S},{B}

4.考察{C,D,E,F}是否可再分: 

因为C,D,E,F经过a和b到达的状态都属于{C,D,E,F}=k1所以相同,所以不可再分:

5.{C,D,E,F}以{D}来代替则,因为CDEF相同,你也可以用C来代替。无所谓的最小化的DFA如图,: 

“后面这些内容鄙人以为书上都有,列出来整理一下思路、多加练习即可,不必浪费时间敲到电脑上”

  • 正则表达式——》正则文法
正则表达式是哟中抽象数学表达式,而正则文法是一种N型文法
由正则表达式转换为正则文法的步骤如下:
  • 令开始符号为S,S属于非终结符集,VT等于字符集
  • 先生成正规产生式S->r
  • 再分解正规产生式S->r,分解规则如下:

(R.1)对形如A->r1r2的正规产生式分解为

·
A->r1B,B->r2,B属于非终结符

(R.2)对形如A->r1*r2的正规产生式分解为

A->rB,A->r1,B->rB,B->r1,B属于非终结符
(R.3)对形如A->r1|r2的正规产生式分解为A->r1,A->r2
不断应用分解规则做变换,知道每个产生式右端只含一个非终结符为止。
  • 正则文法——》正则表达式
从正则文法转换为正规表达式,实际上就是一个推倒过程。从开始符号出发,合并正规产生式S->r。合并规则如下:
(R.1)对形如A->xB,B->y的正规产生式合并为A=xy
 (R.2)对形如A->xA|y的正规表达式合并为为A=x*y
(R.3)对形如A->x|y的正规产生式合并为A=x|y
如果正规产生式中有相同的左边表达式,可以先合并出发点相同的
  • 有限自动机——》正则表达式
转换步骤:
首先加入初态x和终态y,构成一个新的NFA
然后反复使用替换规则,反复使用替换规则逐步消去NFA中的状态节点,直至剩下x,y为止。
  • 正则表达式——》有限自动机

自动构造词法分析器的步骤——正规式转换为最小化DFA的更多相关文章

  1. 正规式->最小化DFA说明

      整体的步骤是三步: 一,先把正规式转换为NFA(非确定有穷自动机), 二,在把NFA通过"子集构造法"转化为DFA, 三,在把DFA通过"分割法"进行最小化 ...

  2. 《编译原理》构造与正规式 (0|1)*01 等价的 DFA - 例题解析

    <编译原理>构造与正规式 (0|1)*01 等价的 DFA - 例题解析 解题步骤: NFA 状态转换图 子集法 DFA 的状态转换矩阵 DFA 的状态转图 解: 已给正规式:(0|1)* ...

  3. 报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"

    报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState".   出错语句停留 ...

  4. 正规式α向有限自动机M的转换

    [注:这一节是在学习东南大学廖力老师的公开课时,所记录的一些知识点截屏,谢谢廖力老师的辛劳付出] 引入3条正规式分裂规则来分裂α,所得到的是NFA  M(因为包含ε弧,之后进行确定化就是所需要求得DF ...

  5. 有穷自动机(NFA、DFA)&正规文法&正规式之间的相互转化构造方法

    在编译原理(第三版清华大学出版社出版)中第三章的词法分析中,3.4.3.5.3.6小节中分别讲解了 1.什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机) 2.如何将  不确定的有穷自动机 ...

  6. 正规式与正规集,DFA与NFA

    词法分析器的设计 词法分析器的功能:输入源程序.输出单词符号 词法分析器的设计:给出程序设计语言的单词规范--单词表, 对照单词表设计识别该语言所有单词的状态转换图, 根据状态转换图编写词法分析程序 ...

  7. using 语句中使用的类型必须可隐式转换为“System.IDisposable

    在使用 EF 出现 using 语句中使用的类型必须可隐式转换为“System.IDisposable 今天写在这里分享给大家 出现这样的问题,是因为没有引用  EntityFramework 这个程 ...

  8. 编译原理:正规式转变成DFA算法

    //将正规式转变成NFApackage hjzgg.formal_ceremony_to_dfa; import java.util.ArrayList; class Edge{ public int ...

  9. NHibernate无法将类型“System.Collections.Generic.IList<T>”隐式转换为“System.Collections.Generic.IList<IT>

    API有一个需要实现的抽象方法: public IList<IPermission> GetPermissions(); 需要注意的是IList<IPermission>这个泛 ...

随机推荐

  1. hihocoder #1034 : 毁灭者问题 平衡树(set)+线段树

    #1034 : 毁灭者问题 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁 ...

  2. Nginx配置文件nginx.conf 详解

    #定义Nginx运行的用户和用户组 user www www;   #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8;   #全局错误日志定义类型,[ debu ...

  3. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式_后缀数组_二分答案

    Milk Patterns 产奶的模式 bzoj-1717 Usaco-2006 Dec 题目大意:给定一个字符串,求最长的至少出现了$k$次的子串长度. 注释:$1\le n\le 2\cdot 1 ...

  4. POJ2586 Y2K Accounting Bug 解题报告

    Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K bug and lost some vi ...

  5. litepal创建数据库表失败

    今天学习郭神的litepal框架遇到了一个坑,就是程序正常跑了,但是数据库和表完全没创建!!!!!!! 先核对了litepal.xml文件,确认配置正确,assets文件夹放的也正确,最后发现竟然是因 ...

  6. Eclipse-Java代码规范和质量检查插件-PMD

    PMD是一个源代码分析器. 它发现常见的编程缺陷,如未使用的变量.空catch块.不必要的对象创建等等. 它支持Java.JavaScript.Salesforce.com Apex.PLSQL.Ap ...

  7. SqlServer2008发布订阅(数据同步)

    目录 1. 发布必备条件 1.1. 数据库故障还原模型必需为完全还原模型 1.2. 数据库被同步的数据表必须有主键 1.3. 计算机名称来进行SQLServer服务器的注册 1.4. SQLServe ...

  8. mysql设置datetime默认值为now

    mysql设置datetime默认值为now MYSQL-TIMESTAMP数据类型的默认值与自动更新问题 http://blog.csdn.net/scogeek/article/details/5 ...

  9. #!/usr/bin/env 脚本解释程序的作用

    the Zimbu programming language http://www.zimbu.org/getting-started -------------------------------- ...

  10. 001 Cisco router prewired

    Cisco router 预配: Router>en Router#config t Enter configuration commands, one per line.  End with ...