正规式与有限自动机的等价性

一个正规式r与一个有限自动机M等价, L(r)=L(M)

FA ->正规式,对任何FA M,都存在一个正规式r,使得L(r)=L(M)。

正规式 -> FA, 对任何正规式r,都存在一个FA M,使得L(M)=L(r)

为NFA构造正规式

对转换图概念拓广,令每条弧可用一个正规式作标记,对Σ上任一NFA M,都存在一个Σ上的正规式r,使得L(r)=L(M)

假定NFA M=<S, Σ, δ, S 0 , F>,我们对M的状态转换图进行以下改造:

在M的转换图上加进两个状态X和Y,从X用ε弧连接到M的所有初态结点,从M的所有终态结点用ε弧连接到Y,从而形成一个新的NFA,记为M’,它只有一个初态X和一个终态Y,显然L(M)=L(M’)。

然后,反复使用下面的三条规则,逐步消去结点,直到只剩下X和Y为止。

最后,X到Y的弧上标记的正规式即为所构造的正规式r

显然L(r)=L(M’)=L(M),得证: 对Σ上任一NFA M,都存在一个Σ上的正规式r,使得L(r)=L(M)

为正规式构造NFA

定理:对任何正规式r,都存在一个FA M,使得L(M)=L(r)

定理: 对于Σ上的正规式r,都存在一个NFA M,使L(M)=L(r),并且M只有一个初态和一个终态,而且没有从终态出发的箭弧

对给定正规式r中的运算符数目进行归纳:

  • 验证r中的运算符数目为0时,结论成立
  • 假设结论对于运算符数目少于k(k≥1)的正规式成立
  • 基于该假设,证明结论对于运算符数目为k的正规式成立

若r具有零个运算符,则r=ε或r=φ或r=a,其中a∈Σ

针对上述3类正规式r,分别按照下图构造NFAM,M只有一个初态和一个终态,而且没有从终态出发的箭弧,而且使L(M)和对应的L(r)相等。

假设对于运算符数目少于k(k≥1)的正规式成立

当r中含有k个运算符时,r有三种情形:



上述过程实质上是一个将正规表达式转换为有限自动机的算法

构造Σ上的NFA M’ 使得 L(r)=L(M’),首先,把r表示成

按下面的三条规则对r进行分裂

逐步把这个图转变为每条弧只标记为Σ上的一个字符或ε,最后得到一个NFA M’,显然L(M’)=L(r)


词法分析器的自动产生--LEX



LEX的工作过程

  • 对每条识别规则P i 构造一个相应的非确定有限自动机M i ;
  • 引进一个新初态X,通过ε弧,将这些自动机连接成一个新的NFA;
  • 把M确定化、最小化,生成该DFA的状态转换表和控制执行程序


最新文章

  1. ABP源码分析三十七:ABP.Web.Api Script Proxy API
  2. OSX 下搭建Asp.Net vNext的开发环境
  3. CSS3 Transform Matrix
  4. JavaWeb基础: Web应用和Web服务器
  5. htmlparser源码简单分析
  6. 工程经济学economics of project summarize
  7. haproxy简单负载均衡搭建
  8. Oracle EBS-SQL (WIP-16):检查期间手工下达的车间任务数.sql
  9. Find the k-th Smallest Element in the Union of Two Sorted Arrays
  10. 6、iOS快速枚举
  11. 远程过程调用发展历程 WebAPI GRPC Hprose
  12. 解决Unable to load native-hadoop library for your platform
  13. C#基于wpf编写的串口调试助手
  14. OpenCV3计算机视觉Python语言实现笔记(三)
  15. 20175310 迭代和JDB
  16. ActiveReports 区域报表中的事件介绍
  17. Java基础-字符串连接运算符String link operator
  18. ansible安装过程遇到的问题
  19. Android-广播总结
  20. 【BZOJ】2631: tree LCT

热门文章

  1. 学习 lind api 十月 第一弹
  2. Java学习笔记(二) 面向对象---构造函数
  3. Irrelevant Elements UVA-1635 (二项式定理)
  4. markdown常用语法使用笔记+使用技巧(持续更新......)
  5. 文件系统(01):基于SpringBoot框架,管理Excel和PDF文件类型
  6. C语言遇到的关于清除标准输入缓冲区的问题[编程入门]
  7. LeetCode 200. Number of Islands 岛屿数量(C++/Java)
  8. eclipse编写代码所遇到的问题
  9. asp.net core 3.x 身份验证-3cookie身份验证原理
  10. [python-docx]docx文档操作的库