形式语言和自动机总结DFA、NFA正则语言

news/2024/4/20 1:26:38/文章来源:https://blog.csdn.net/qq_62260432/article/details/130142341

第一章DFA

形式定义和状态转移函数:

DFA是一种特殊的NFA,

A={Q,\sum,\delta,q_0,F} Q:输入状态集,∑:字母表,δ:状态转移函数Q×∑→Q q0∈Q初始状态 F终结集

设计举例

1.设计接受偶数个0和偶数个1串的DFA

2.设计 DFA 接受 {0,1} 上的字符串 w, 且 w 是 3 的倍数的二进制表示(前面可以有0)

3.要求同上,前面不允许有0 

 扔出来一个死状态。

4.Design a DFA for L = {w {0,1} | w contains both 00 and 11 as substrings}.(最后一个状态没加入01)

5.

第2章NFA

NFA的设计

NFA的习题很少可以尝试将DFA的题变成NFA的题。

1.设计一个由01构成的串,1是偶数0是奇数的NFA

 对0 1的状态进行区分

2. Design an NFA within four states for the language { 0 }* \cup{ 01 }*.

3.Design an NFA for L = { w∈{0,1}∗ | w contains an equal number of occurrences of the substrings 01 and 10 }

 4.由 0 和 1 构成的串中, 接受全部以 01 结尾的串

 5.. 设计 L = {w {0,1}^{+}w的首尾字符相同}的 NFA 很容易忘了中间的情况
 

 6.L = {w {0,1} *|w either begins or ends (or both) with 01. }

7.对以下几种语言设计NFA :

8.Design a NFA for L = {w {0,1} | w contains both 00 and 11 as substrings}. 

9.Design an NFA for L = {w ∈ {0,1} ∗ | w contains an equal number of occurrences of the substrings 01 and 10}.

做这种题的时候观察他的结构,猜想这种结构有什么特点.永远不要忘了中间的情况。

 ε-NFA:

空转移有利于减少我们的状态并且自然的将条件分隔开来。

DFA和NFA的相互转换 

等价性证明

NFA->DFA 理解思想吧。

 NFA转DFA 子集构造法:

注意一点:对于\varnothing与其他子集一样用到就保留,没用到就去掉,NFA卡死,对应到DFA就是死状态

1.

 2.L = {(0+1)*|倒数第三个字符是1}的NFA转换成DFA

3.

 ε-NFA转换为DFA

第3-4章正则表达式

正则表达式的设计举例

 正则表达式的运算

正则表达式的优先级

举例

1.倒数第三个字符是1

               (0+1)*1(0+1)(0+1)

2.不含有连续的0

                (1+01)*(0+\varepsilon

3.含有000

                (0+1)*000(0+1)*

4.不含000/111的正则语言(/代表两个式等价的)

                (1+01+001)*(\varepsilon+0+00)  / 1*(01^{+}+001^{+})

DFA\Leftrightarrow正则表达式

 为什么要引入:有的时候我们做设计正则表达式习题的时候发现直接想很困难,我们不如利用正则表达式和DFA之间的等价性,构造出DFA,进而构造正则表达式。

1.设计不含001/110的正则表达式

 2.设计不含010/101的正则表达式

方法1:直接猜测法:

0^{*}(1+000^{*})0^{*}

方法2:DFA转正则表达式

 3.设计不含001/110的正则语言

4 . L = { w∈{0,1}* | w contains both 01 and 10 as substrings }

这个题的出错点在于可能忘记考虑010 101的情况

分类相加的方法:

(0+1)^{*}01(0+1)^{*}10(0+1)^{*}+(0+1)^{*}10(0+1)^{*}01(0+1)^{*}+(0+1)^{*}010(0+1)^{*}+(0+1)^{*}101(0+1)^{*}

直接的方法 :合并情况的方法

(0+1)^{*}(100^{*}1+011^{*}1)(0+1)^{*}

5.The set of all strings with an equal number of 0's and 1's, such that no prefix has two more 0's than 1's, nor two more 1's than 0's. 

                                        (01+10)^{*}

6. Let L={ w | w∈{0,1}* and if there are two 0s of w, they must be separated by 1 or 11 }

 1^{*}(0+\varepsilon )(110+10)^{*}1^{*} or 1*(01+011)^{*}(0+\varepsilon)^{*}

                             |11  | 11 |

explaination : 1^{*}0 | 10 | 10 |................................

 正则语言的性质

泵引理老师上课也讲了 不少,感觉上课再看看书上的例题熟悉一下思路基本就没问题了,后面PDA那里也有一个泵引理,不过考试还是喜欢正则语言的泵引理。我自己的感觉是取语言中的一个串,如果不符合那么这个语言就不是正则语言。

1.证明泵引理

  • 往多泵
  • 往少泵
  • 利用语言的封闭性证明:if L_{1} L_{2}都是正则语言L = L_{1}\cup /\cap /\setminus L_{2},或者其反转L^{R}也是正则语言,如果不是正则语言那么L不一定不是正则语言。

具体实例见第四章习题,一般的方法是取语言中的子串。利用语言中的一个元素不是正则来确定不是正则语言。 

 1.证明回文字符不是正则语言:

2.Prove that L = {a^{i}b^{j}c^{k}|i + j = k |is not regular with pumping lemma.}

 3.

4.

5. 取0的N次方 1的N次方

6.The set of strings of 0’s and 1’s whose length is a perfect square. 

0^{m}1^{n} \,\,m+n=N^{2} 利用放缩

7.The set of strings of 0’s and 1’s that are of the form ww, that is some string repeated.

0^{N}1^{N}0^{N}1^{N} 证明不是正则语言。

2.利用封闭性的泵引理证明:

1.The set of strings of the form 0^{i}1^{j}such that the greatest common divisor of i and j is 1.

设L={0^{i}1^{j}|gcd(i,j)=1} L'=\overline{L}\cap0*1*={0^{i}1^{j}|gcd(i,j)>1}

如果L是正则语言那么L的反转也是正则语言,取0^{N}1^{N}(N不是素数)由泵引理,0^{N-m}1^{N}不和题意 

2.

2.DFA的最小化:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_286215.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】-计数排序

🎇作者:小树苗渴望变成参天大树 🎉 作者宣言:认真写好每一篇博客 🎊作者gitee:link 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录前言一、计数排序二、排序算法复杂度…

《花雕学AI》18:AI绘画尝鲜Prompt Hunt,使用人工智能模型来创造、探索和分享艺术作品

引言: 人工智能是当今科技领域的热门话题,它不仅可以帮助人类解决各种实际问题,也可以激发人类的创造力和艺术感。Prompt Hunt就是一个利用人工智能模型来创造、探索和分享艺术作品的AI绘画网站。它提供了三种不同的模型,分别是S…

Java垃圾收集原理

程序计数器、虚拟机栈、本地方法栈这三个区域随线程而灭,栈中栈帧的内存大小也是在确定的。这几个区域的内存分配和回收都具有确定性,因此不需要过多考虑如何回收。 Java堆和方法区这两个区域有着很显著的不确定性 一个接口的实现类需要的内存可能不一…

用Flutter开发一款音乐App(从0到1开发一款音乐App)

Flutter Music_Listener(flutter音乐播放器) Flutter version 3.9 项目介绍 1、项目整体基于getxretrofitdiojsonserialize开发 2、封装通用控制器BaseController,类似jetpack mvvm框架中的BaseViemodel 3、封装基础无状态基类BaseStatelessWidget,结合…

十三、市场活动:全部导出

功能需求:批量导出市场活动 用户在市场活动主页面,点击"批量导出"按钮,把所有市场活动生成一个excel文件,弹出文件下载的对话框; 用户选择要保存的目录,完成导出市场活动的功能. *导出成功之后,页面不刷新 功能分析:导出市场活动 1.给批量…

Vue组件化编程【Vue】

2.Vue 组件化编程 2.1 模块与组件、模块化与组件化 2.1.1 模块 理解:向外提供特定功能的js程序,一般就是一个js文件为什么:js文件很多很复杂作用:复用js、简化js的编写、提高js运行效率。 2.1.2 组件 理解:用来实…

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)

文章目录 前言一、requests库的使用二、json和字典的区别三、后端登录接口-请求数据生成四、接口自动化-对应电商项目中的功能五、来自postman的代码-后端登录总结前言 记录:json和字典的区别,json和字段的相互转化;postman发送请求与Python…

source insight4.0使用技巧总结

一、技巧1:查看函数调用关系 步骤 1:在主菜单中点击下图中的按钮 图 1 打开relation界面 步骤 2:在弹出的relation界面点击“设置”按钮, 图2 点击“设置”按钮 步骤3: 在“设置”界面中,“Levels”选择…

AC7811-FOC无感控制代码详解

目录 矢量控制原理 矢量控制框图 电流采样方式 电流在整个控制过程中的传递 采样关键点 三电阻 双电阻 单电阻 三者对比 坐标变换 dq轴电流的PI控制 启动方式 启动波形 脉冲注入 高频注入 Startup 预定位到指定角度 PulseInject_api hfi_api Speed loop s…

前端学习:HTML块、类、Id

目录 快 一、块元素、内联元素 二、HTML 元素 三、HTML元素 类 一、分类块级元素 二、分类行内元素 Id 一、使用 id 属性 二、 class与ID的差异 三、总结 快 一、块元素、内联元素 大多数HTML元素被定义为块级元素或内联元素。 块级元素在浏览器显示时,通常会…

FTP-----局域网内部传输文件(1)

在日常工作中,如果需要跨设备的传输文件,您需要借助USB数据线或者借助应用实现无线互联,将所需文件传输到对应设备,这一来一去,花费的时间与精力变多了,那么,怎么实现不使用第三方软件来实现跨设…

3-5年以上的功能测试如何进阶自动化?【附学习路线】

做为功能测试人员来讲,从发展方向上可分两个方面: 1、业务流程方向 2、专业技能方向。 当确定好方向后,接下来就是如何达到了。(文末自动化测试学习资料分享) 一、业务流程方向 1、熟悉底层的业务 作为功能测试工程师来讲,了解…

【C++高级】手写线程池项目-经典死锁问题分析-简历项目输出指导

作为五大池之一, 线程池的应用非常广 泛,不管是客户端程序,还是后台服务程序,掌握线程池,是提高业务处理能力的必备模块 本课程将带你从零开始,设计一个支持fixed和cached模式的线程池,玩转C11、…

IGA_PLSM3D的理解1

文章目录前言一、IgaTop3D_FAST.m给的参数二、Material properties 材料特性对Geom_Mod3D的理解对Pre_IGA3D的理解 输出1-----CtrPts: 输出2-----Ele: 输出3-----GauPts:前言 只是为方便学习,不做其他用途 一、IgaTop3D_FAST.m给的…

Python爬虫-某跨境电商(AM)搜索热词

前言 本文是该专栏的第42篇,后面会持续分享python爬虫干货知识,记得关注。 关于某跨境电商(AM),本专栏前面有单独详细介绍过,获取配送地的cookie信息以及商品库存数据,感兴趣的同学可往前翻阅。 1. python爬虫|爬取某跨境电商AM的商品库存数据(Selenium实战) 2. Seleni…

5.39 综合案例2.0 - STM32蓝牙遥控小车1(手机APP遥控)

综合案例2.0 - 蓝牙遥控小车1- 手机APP遥控成品展示案例说明器件说明连线小车源码手机遥控APPAPP使用说明成品展示 案例说明 用STM32单片机做了一辆蓝牙控制的麦轮小车,分享一下小车的原理和制作过程。 控制部分分为手机APP,语音模块控制,Ha…

15-721 chapter2 内存数据库

Background 随着时代的发展,DRAM可以容纳足够的便宜,容量也变大了。对于数据库来说,数据完全可以fit in memory,但同时面向disk的数据库架构不能很好的发挥这个特性 这张图是disk database的cpu instruction cost 想buffer pool…

第5章 继承-Java核心技术·卷1

文章目录Java与C不同基本概念继承:基于已有的类创建新的类。构造器多态定义超类变量可以引用所有的子类对象,但子类变量不能引用超类对象。子类引用的数组可以转换成超类引用的数组覆写返回子类型强制类型转换阻止继承:final类和方法多态 vs …

ROS学习-ROS简介

文章目录1.ROS1.1 ROS概念1.2 ROS特征1.3 ROS特点1.4 ROS版本1.5 ROS程序其他名词介绍1. 元操作系统2. IDL 接口定义语言一些网站1.ROS 1.1 ROS概念 ROS(Robot Operating System,机器人操作系统) ROS 是一个适用于机器人的开源的元操作系统,提供一系列…

linux驱动开发 - 04_Linux 设备树学习 - DTS语法

文章目录Linux 设备树学习 - DTS语法1 什么是设备树?2 DTS、DTB和DTC3 DTS 语法3.1 dtsi 头文件3.2 设备节点3.3 标准属性1、compatible 属性2、model 属性3、status 属性4、#address-cells 和#size-cells 属性5、reg 属性6、ranges 属性7、name 属性8、device_type…