构造Half(L)的NFA

搬运自我的百度空间

原创文章,转贴请贴出处

偶尔来点纯理论问题。这是一道高级算法作业题,L是正则语言,语言B是L中所有字符串对半开的前一半,证明B也是正则的。

目的明确,构造B的一台NFA,非确定型有限状态机。

要用到“平行NFA”的概念。比如举例另外一个问题:如何判断一个字符串既是正则语言A又是正则语言B?可以构造这样一台NFA,状态集合为Qa*Qb(Qa与Qb为A与B的状态集)。接受集合为Fa*Fb,这样机器的一部分(状态元组的前半部分)匹配语言A,另一部分(元组的后半部分)匹配语言B。

回到我们的主题。假设L的对应DFA为D=(Q,[sum],[delta],q0,F)。构造语言B(L中所有字符串对半开的前一半)的NFA,思路是首先非确定性的猜测输入x在D中运行后到达的状态q(很有可能不是结束状态,因为输入x只是L中某个字符串的一半)。知道q后,构造子NFA:Dq,使用“平行NFA”,状态集为Q*Q,起始状态时(q0,q),接受状态为{q}*F。这个Dq作用是平行的判断x是不是语言A的一半(状态元组的前一半,从q0到q),并且非确定性的判断、猜测x在语言A中对应字符串的后半部分(状态元组的前一半,从q到F)。而且由于x与他的“后半部分”长度相同,从起始状态到接受状态所需的步数是相同的。

上图是为B构造的NFA。为D(L的DFA)中所有的状态qi构造子状态机Dqi。

Dq=(Q*Q,[sum],[delta]’,(q0,q),{q}*F)

其中,Q是D的状态集,[sum]是D的字符集,q0为D 的起始状态,F为D的接受状态,[delta]为D的转移函数。

转移函数[delta]’( (q1,q2),a)) = { ( [delta](q1,a),[delta](q2,b) ) |all b in [sum] }

(对于状态的第一部分,按照原来的状态集进行转移,识别输入x。对于状态的第二部分,非确定性的从q2转移,猜测x的“后半部分”)

参考文献:http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_cs;action=display;num=1046126973

构造Half(L)的NFA相关推荐

  1. 【计算理论】正则语言 ( 正则表达式原子定义 | 正则表达式递归定义 | 正则表达式语言原子定义 | 正则表达式语言结构归纳 | 正则表达式语言示例 | 根据正则表达式构造自动机 )

    文章目录 一.正则表达式 定义 二. 正则表达式语言 原子定义 三.正则表达式语言 结构归纳定义 四.正则表达式语言 示例 五.空集 ∅\varnothing∅ 与 空字符 ε\varepsilonε ...

  2. 【编译原理笔记03】词法分析:正则表达式、有穷自动机(FA)、DFA与NFA及RE的相互转换、DFA识别单词、语法检测

    本次笔记内容: 3-1 正则表达式 3-2 正则定义 3-3 有穷自动机 3-4 有穷自动机的分类 3-5 从正则表达式到有穷自动机 3-6 从NFA到DFA的转换 3-7 识别单词的DFA 文章目录 ...

  3. [转]NFA/DFA算法

    作者:陈梓瀚  (http://www.cppblog.com/vczh/) 1.问题概述 随着计算机语言的结构越来越复杂,为了开发优秀的编译器,人们已经渐渐感到将词 法分析独立出来做研究的重要性.不 ...

  4. 构造可配置词法语法分析器生成器(上)

    本文为笔者原创,转载请注明出处 http://blog.csdn.net/xinghongduo 前言 源程序在被编译为目标程序需要经过如下6个过程:词法分析,语法分析,语义分析,中间代码生成,代码优 ...

  5. NFA转换成DFA的方法——子集法

    承接上文在上一篇文章中说了 DFA 是 NFA 的特例 对于每个NFA M 存在一个DFA M" 使得 L(M)=L(M") NFA缺点: 其不确定性使得识别单词符号的速度较慢 D ...

  6. 确定与不确定有限自动机DFA与NFA及子集法互相转换

    编译原理正规式NFA与DFA及子集法 1.基础术语与概念: 语法描述基本概念 字母表:一个有穷字符集记为Σ 字母表中每个元素称为字符 Σ上的字(字符串)是指Σ中的字符所构成的一个有穷序列 不包含任何字 ...

  7. 词法分析(NFA与DFA)

    词法分析(1)---词法分析的有关概念以及转换图 词法分析是编译的第一个阶段,前面简介中也谈到过词法分析器的任务就是: 字符流------>词法记号流 这里词法分析和语法分析会交错进行,也就是说 ...

  8. 【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★

    文章目录 一.正则表达式 二.正则语言运算示例 ★ 三.根据正则表达式构造自动机 一.正则表达式 1 . 正则表达式原子定义 : 如果 RRR 是 字符集 Σ\SigmaΣ 中的 111 个字符 , ...

  9. 有限状态自动机java实现_用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机...

    阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: 上一节,我们通过代码,实现了一个有限状态自动机,并将其应用于对整形和浮点数的识别.构造有限状态自动机,并驱动它,从而实现 ...

最新文章

  1. 李茶:虎牙直播推荐系统架构详解
  2. Ubuntu14.04重启网卡不生效
  3. JS编程建议——8:谨慎使用运算符(3)
  4. Velocity配置优化
  5. FastReport.net分组排序、打印顺序、分页、函数使用语法、数据块编辑
  6. 安装mysql8.0.11版本,并使用mybatis进行连接mysql遇到的问题
  7. 安装oracle 11g 客户端,检查过程中报物理内存不足的解决
  8. Linux-Centos安装JDK
  9. 美团笔试题——公司食堂
  10. [论文阅读] Stereoscopically Attentive Multi-scale Network for Lightweight Salient Object Detection
  11. 简书留言收费可行性评估
  12. [转载]AutoCAD2013 以上利用AccoreConsole+ c# NetApi 批量处理图纸
  13. 街头篮球一直提示服务器维护怎么解决,街头篮球为什么进不去 街头篮球进不去怎么办...
  14. vue开发网站seo优化方法
  15. 洛谷 P2014 选课
  16. exoplay切换全屏_02.视频播放器整体结构
  17. 类似于QQ的网络聊天室
  18. 【看表情包学Linux】环境安装 | 安装XShell | 基本的账号管理
  19. 终于解决qq浏览器里面播放video会带自己广告的问题了
  20. tinymce自动实现斑马纹表格

热门文章

  1. 网络研讨室_Java移动开发网络研讨会2:续集
  2. 常用的display的属性
  3. 女性吃红枣会带来哪些好处
  4. XMLHTTP中setRequestHeader()简单分析
  5. 均值回归的相当好的例子
  6. 2021-02-02 _REENTRANT
  7. 全球十大搜索引擎排名及网址
  8. linked list inverse
  9. 金仓数据库KingbaseES数据类型和oracle数据类型的映射表
  10. 建模大神带你全方位解读科幻枪械模型制作,硬表面建模材质全析