1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3}

画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言。

解析:

 

a

b

0

{0,1}

0

1

2

2

3

3

 

状态转换图如下:

                      

识别语言为:(a | b)*abb

2.NFA 确定化为 DFA

1.解决多值映射:子集法

1). 上述练习1的NFA

解析:

根据1的NFA构造DFA状态转换矩阵如下:

a

b

A

{0}

{0,1}

{0}

B

{0,1}

{0,1}

{0,2}

C

{0,2}

{0,1}

{0,3}

D

{0,3}

{0,1}

{0}

  根据1的NFA构造DFA状态转换图如下:

  

  识别语言:b*aa*(ba)*bb, 与1的NFA的识别的语言相同,都是以abb结尾的字符串的集合。

2). P64页练习3

状态转换矩阵如下:

 

0

1

A

{S}

{Q,V}

{Q,U}

B

{Q,V}

{V,Z}

{Q,U}

C

{V,Z}

{Z}

{Z}

D

{Q,U}

{V}

{Q,U,Z}

E

{V}

{Z}

F

{Q,U,Z}

{V,Z}

{Q,U,Z}

G

{Z}

{Z}

{Z}

状态转换图如下:

                          

2.解决空弧:对初态和所有新状态求ε-闭包

1). 发给大家的图2

解析:

识别语言:0*(11*2 | 2)2*

2).P50图3.6

子集法:

f(q,a)={q1,q2,…,qn},状态集的子集

将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合。

步骤:

1).根据NFA构造DFA状态转换矩阵

①确定DFA的字母表,初态(NFA的所有初态集)

②从初态出发,经字母表到达的状态集看成一个新状态

③将新状态添加到DFA状态集

④重复23步骤,直到没有新的DFA状态

2).画出DFA

3).看NFA和DFA识别的符号串是否一致。

解析:

 识别语言:(a | bb*a)a*(ba)*bb((bb*aa*(ba)*bb)* | (aa*(ba)*bb)*)

编译原理:非确定的自动机NFA确定化为DFA的更多相关文章

  1. 编译原理之非确定的自动机NFA确定化为DFA

    1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3} 画出状态转换矩阵 ...

  2. 非确定的自动机NFA确定化为DFA

    摘要: 在编译系统中,词法分析阶段是整个编译系统的基础.对于单词的识别,有限自动机FA是一种十分有效的工具.有限自动机由其映射f是否为单值而分为确定的有限自动机DFA和非确定的有限自动机NFA.在非确 ...

  3. 第八次作业-非确定的自动机NFA确定化为DFA

    NFA 确定化为 DFA 子集法: f(q,a)={q1,q2,…,qn},状态集的子集 将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合. 步骤: 1. ...

  4. 作业八——非确定的自动机NFA确定化为DFA

    NFA 确定化为 DFA 子集法: f(q,a)={q1,q2,…,qn},状态集的子集 将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合. 步骤: 1. ...

  5. 第八次——非确定的自动机NFA确定化为DFA

    NFA 确定化为 DFA 子集法: f(q,a)={q1,q2,…,qn},状态集的子集 将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合. 步骤: 1. ...

  6. 第八次-非确定的自动机NFA确定化为DFA

     提交作业 NFA 确定化为 DFA 子集法: f(q,a)={q1,q2,…,qn},状态集的子集 将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合. ...

  7. NFA转化为DFA

    NFA(不确定的有穷自动机)转化为DFA(确定的有穷自动机) NFA转换DFA,通常是将带空串的NFA(即:ε-NFA)先转化为不带空串的NFA(即:NFA),然后再转化为DFA. 提示:ε是空串的意 ...

  8. 编译原理-非确定有穷自动机(nondeterministic finite automata,NFA)

    是一个五元组,M=(S,∑,f,S0,F) S:有穷状态集 ∑:输入字母表(有穷) f:f(S,α)=S' 表示从一个状态S出发,识别了一个字α后,可以到达S'这个状态集合之间的某一个状态(可能的后继 ...

  9. 编译原理 | 构造LR(1)自动机的注意事项

    在画图之前,有时候要先对产生式集合进行某些操作. 下图所示的情况,不需要补一条拓广产生式,因为开始符Z没有出现在某条产生式的右侧. 即,如果开始符出现在某条产生式的右部,需要增加拓广产生式.

随机推荐

  1. sed 分组替换

    将文件以help开头的句子前加# [root@localhost]# cat a.txthelp b helphelp1helphelp2help c help[root@localhost]# se ...

  2. Python 爬虫 selenium 笔记

    1. selenium 安装, 与文档 pip install selenium Selenium with Python中文翻译文档 selenium官网英文文档 2. selenium 的第一个示 ...

  3. d3学习day3 --y轴添加文本标签

    y轴添加文本标签 g.append("g") .call(y_axis) .append("text") .text("price($)") ...

  4. 教你如何使用css隐藏input的光标

    今天公司的ui突然跑过来问我一个问题:"如何在不影响操作的情况下,把input的光标隐藏了?". 我相信很多人会跟我一样,觉得这是个什么狗屁需求,输入框不要光标这不是反人类吗?可惜 ...

  5. 使用EventBus + Redis发布订阅模式提升业务执行性能(下)

    前言 上一篇博客上已经实现了使用EventBus对具体事件行为的分发处理,某种程度上也算是基于事件驱动思想编程了.但是如上篇博客结尾处一样,我们源码的执行效率依然达不到心里预期.在下单流程里我们明显可 ...

  6. RestTemplate 负载均衡原理

    RestTemplate 是通过拦截器改变请求的URI的方式来指定服务器的,此处将通过一个自定义LoadBalanced的方式来进行说明 1.导入jar包 <parent> <gro ...

  7. PTP从时钟授时模块应用及介绍

    PTP从时钟授时模块应用及介绍 随着网络技术的不断进步和发展,NTP网络时间协议已经满不了一些精密设备和仪器的精度要求,这时就需要精度更高的PTP协议,PTP协议是一种应用于分布式测量和控制系统中的精 ...

  8. Alibaba Sentinel 限流与熔断初探(技巧篇)

    目录 1.Sentinel 是什么 ?主要能解决什么问题? 2.限流与熔断的使用场景 3.Sentinel 源码结构 4.在 IntelliJ IDEA 中运行 Sentine Demo 温馨提示:源 ...

  9. 高可用Keepalived+LVS搭建流程

    本流程搭建1个master,1个backup节点的Keepalived,使用lvs轮询2个节点的服务. 一.使用版本 CentOS 7.7 Keepalived 1.3.5 ipvsadm 1.27( ...

  10. WEB渗透 - XSS

    听说这个时间点是人类这种生物很重要的一个节点 cross-site scripting 跨站脚本漏洞 类型 存储型(持久) 反射型(非持久) DOM型 利用 先检测,看我们输入的内容是否有返回以及有无 ...