语言的识别器是一个程序,它取串x作为输入,当x是语言的句子时,它回答“是”,否则回答“否”。

可以通过构造 称为有限自动机更一般转换图,把正规式翻译成识别器

有限机分 确定的 和 不确定的 两种情况。“不确定”指的是,存在这样的状态,对于某个输入符号,它存在不止一种转换。

确定的和不确定的有限自动机都能识别正规集。但是他们之间存在时空权衡问题,从确定的有限自动机比不确定的有限自动机得到的识别器要快得多。但是确定的有限自动机比等价的不确定的有限自动机占用更多的空间。

不确定的有限自动机(Non-deterministic Finite Automata, NFA)

NFA是一个数学模型,它包括:

1)一个有限的状态集合S

2)一个输入符号的集合(空串不出现在其中)

3)一个转换函数move 它把状态和符号两元组映射到一个状态集合

4)状态s0是唯一的开始状态

5)状态集合F是接受(或终止)状态集合,FS

确定的有限自动机(Deterministic Finite Automata, DFA)

1)任何状态下都没有空串的转换

2)对任何状态s 和 任何输入符号a,最多只有一条标记为a的边离开s,

即转换函数move:S×S 可以是一个部分函数,这边不是P(S),只能是S(表示一个确定的状态),部分函数的意思是对于某个状态并不是对里的所有符号都有转换。

从NFA到DFA的变换

子集构造法

1)NFA(不确定有限自动机)的一个状态  是 DFA的 一个状态集合

算法 从NFA到DFA的子集构造法

输入 一个NFA N

输出 一个接受同样语言的DFA D

方法 为D构造转换表,表中的每个状态是N中的状态的集合,D“并行”地模拟 N面对输入串的所有可能的移动。

简单说就是将NFA中的状态进行合并成为DFA中的新状态。

在NFA有以下几种运算来将其构造成DFA

-closure(s)  求的是从NFA的状态s出发,通过空串转换能到达的NFA状态的集合(求出的是集合 状态可能是多个)

-closure(T) 这个运算建立在-closure(s) 的基础上,T是NFA的一个状态集合,对里面的每个状态求-closure(s) ,再将求出的结果合并(求并集)。

move(T,a)  从集合T中的任意一个状态通过输入符号a能转换到的状态的并集。

因为允许空串转换,看见a后,N可以处于 -closure(move(T,a))的任何一个状态中。

所以从N的开始状态s0通过a能到达的集合为 -closure(move(-closure(s0),a))

DFA的化简

(理论上)每一个正规集都存在一个状态数最少的DFA识别

原理:基于转换函数是全函数

算法 极小化DFA的状态数

输入 一个DFA M,它的状态集合是S,输入符号集合是,转换函数是move:S ×   S

开始状态是s0。接受状态是集合是F。

输出 一个DFA M`,它和M接受同样的语言,且状态数最少。

算法过程

1) 将状态集合分为两个子集,接受状态集合F和 非接受状态集合S-F.

2) 构造新的划分,对 每个子集G进行新的划分,当且仅当对任意输入符号a,状态s和t转换到同一子集中,G的两个状态s和t在同一子集中。

用新划分的子集替代之前的被划分的子集。

3)如果有划分的可能则继续执行2)

4)在最后的划分中选中一个状态子集代表最简DFA 的 M`的一个状态

5) 如果有死状态则去掉它

编译原理的有限自动机相关推荐

  1. 【编译原理】有限自动机NFA-ε到NFA的探索

    文章目录 1 原理分析 2 图解 3 实例推导 1 原理分析 Q:有限个数状态的集合 ∑:输入字母表 T :迁移函数 S :初始状态 F :结束状态 现在来介绍从 NFA-ε 到 NFA 的转换 令Q ...

  2. 编译原理(正规式、有限自动机)

    正规文法(3型文法) 文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法(文法是用于描述语言的语法结构的形式规则).由正规文法(3型文法)产生的语言称为正规集. 之所以用"正规 ...

  3. 计算机的编译原理pdf,计算机编程基础--编译原理.pdf

    第一章 引论(1) 1.1 什么叫编译程序 编译程序:是指这样的程序,它能够把某种 语言的程序转换成另一种语言的程序, 而后者与前者在逻辑上是等价的.如果 源语言是诸如FORTRAN.Pascal.C ...

  4. 编译原理视角下的 c c 语言左值教学,西安交通大学18年3月课程考试《编译原理》作业考核试题...

    Q.微信均是1219895388,Q:1219895388 联系:QQ:576696131 西安交通大学18年3月课程考试<编译原理>作业考核试题 共题,总分:100分 答题中 分 一.单 ...

  5. 编译原理学习笔记一(待续)

    这几天忙着学英语,同时在学习编译原理,对这门课很感兴趣,已经制作了词法分析器,同时还在补充这个分析器的功能,也准备着手开始写语法分析器,看到最后能不能连在一起,我想如果能够将整套编译器的流程跑下来真的 ...

  6. 编译原理什么是移进规约冲突_编译原理复习题

    可以微信扫码观看 河南城建 <编译原理>复习题丨杨海振整理丨20150521 一.单项选择题 1.构造编译程序应掌握   .D a. 源程序                         ...

  7. 《编译原理》课程标准

    XX大学软件学院 <编译原理>课程标准 制定人:张晨光 课程代码: 773033 课程名称(中文 / 英文):编译原理 / Compiler Principle 学时( 实验学时 )/ 学 ...

  8. 大学编译原理试卷考试题

    <编译原理>期末试题(一) 一.是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) 1.编译程序是对高级语言程序的解释执行.(× ) 2.一个有限状态自动机中,有且仅有一个 ...

  9. 《编译原理》实验教学大纲

    <编译原理>实验教学大纲 课程编号: 773033 课程名称:编译原理 英文名称:Compiler Principle 课程类型: 模块课 学 时:5 学 分:4 适用对象: 软件开发各专 ...

  10. 《编译原理》课程教学大纲

    <编译原理>课程教学大纲 课程编号:773033 课程名称(中/英文):编译原理 / Compiler Principle 课程类型: 模块课 总 学 时:5学时/周 讲课学时:4学时/周 ...

最新文章

  1. JavaScript--练习1--99乘法表
  2. frame,iframe,frameset用法和区别
  3. HDU-1541 Stars 树状数组
  4. linux命令:du,df用法说明
  5. asp.net(c#) static关键字用法小结
  6. android返回后屏幕旋转了,Android recovery 模式下屏幕显示旋转
  7. ubuntu下面调整Atom的python运行结果中的字体大小
  8. 【树状数组】CF961E Tufurama
  9. 华为机试HJ54:表达式求值
  10. shell脚本显示颜色的设置
  11. html表格ppt,HTML表格.ppt
  12. Algorithms-3.3补充 Geometric Applications of BSTs 二叉树的几何应用
  13. dubbo异常源码分析处理
  14. drcom 不耍流氓
  15. 黑苹果:主板解锁CFG LOCK教程
  16. 一起零基础学Python
  17. python实现实现快速输入无法粘贴的内容
  18. CF-Watermelon
  19. BugKu:WEB——gam1
  20. [THUWC2017]在美妙的数学王国中畅游 LCT+泰勒展开+求导

热门文章

  1. 新大陆NVH200条码扫描枪使用及设置教程
  2. 中国有哪些python比赛_有哪些大学生值得参与的竞赛?
  3. 山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。
  4. 如何理性的从经济学角度看待“互联网寒冬”?
  5. 喜讯——软件测试在大学里开始红火
  6. 误码率曲线matlab代码,matlab画误码率曲线
  7. 氚云SaaS介绍文档
  8. 层次分析matlab例题,层次分析法例题
  9. 无刷电机FOC控制笔记
  10. Vue 移动端 股票 分时 K线