形式语言与自动机——第二章 自动机

2024-02-29 10:32

本文主要是介绍形式语言与自动机——第二章 自动机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 第二章 目录
    • 【2.1】 有穷自动机(有限自动机)
    • 【2.2】 不确定有穷自动机(NFA)
    • 【2.3】 确定的有穷自动机
    • 【2.4】 格局
    • 【2.5】 DFA与NFA等效
    • 【2.6】 有ε转换的不确定有限自动机
    • 【2.7】 有ε转换NFA和无ε转换的NFA的等效
    • 【复习】
    • 【2.8】正规式和正规集
      • 【2.8.1】正规式和正规集
      • 【2.8.2】从右线性文法到正规式——联立方程
    • 【2.9】右线性文法和正规集
      • 【2.10】右线性文法与有限自动机
        • 【2.10.1】右线性文法→有限自动机
        • 【2.10.2】确定有限自动机→右线性文法
      • 【2.11】右线性语言的性质
        • 【2.11.1】DFA M的化简
      • 【2.11.2】泵浦原理
      • 【2.11.3】右线性语言的封闭性
      • 【2.11.4】有限自动机的可解问题(判定问题)
    • 【2.12】双向和有输出的有限自动机
      • 【2.12.1】双向有限自动机
      • 【2.12.2】有输出的FA

第二章 目录

在这里插入图片描述

【2.1】 有穷自动机(有限自动机)

我们来回顾一下文法与自动机的区别:

  • 文法:对语言的有穷说明
  • 识别器:有穷的说明无穷语言的一种方法,最简单的识别器就是有穷自动机

文法可以建模,但是文法不能有效地编程实现,因此引出了有穷自动机。

有穷自动机不能定义所有由文法定义的语言,它所能定义的语言是3型文法。

在这里插入图片描述

  • 第一项:状态集
  • 第二项:字母表,可以理解文自动机中的终结符集合
  • 第三项:得儿塔,映射关系(要强调的是,如果是德尔塔’,代表输入的是一个字而不是一个字母)
  • 第四项:s0起始状态、初态,是S的成员
  • 第五项:终止状态集,F是S的子集
    在这里插入图片描述

【2.2】 不确定有穷自动机(NFA)

它的特点是,对于一个状态Si,经过函数变换,它的结果是不确定的,有可能会变到Sj,也有可能变到Sk。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意DFA和NFA的区别,因为NFA可能到达的终止状态有多个,因此是个集合,只要其中一个能满足终止条件即可

【2.3】 确定的有穷自动机

DFA:M = (S, Σ, δ, q0, F)
在这里插入图片描述
由于空字的转移不影响当前状态,因此可以省略上角标
在这里插入图片描述

【2.4】 格局

为描述FA的工作状态,可用两个信息表明:

  • 当前时刻有限自动机所处的状态q
  • 当前时刻等待输入的字符串ω

这两者构成一个瞬间描述,称为格局,用(q, ω)表示。

符号“|-”表示连接两个格局,从第一个格局变为第二个格局。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【2.5】 DFA与NFA等效

NFA简单明了,容易编程,但是很难编程实现特性,因为一旦走错(如上图),可能要进行大量回溯。但是DFA很难编程实现,所以我们希望通过NFA来转换为DFA。

DFA、NFA在没有公共转移时是等效的。

由于DFA是NFA的特例,所以DFA能接受的语言,NFA也一定能接受,相反,NFA接受的语言,则能找到一个等效的DFA接受语言。

**定理:**设L(Mn)是接受的语言,则存在DFA Md接受L(Md),满足L(Md) = L(Mn)。

在这里插入图片描述

【2.6】 有ε转换的不确定有限自动机

前面定义的NFA M,当有空串ε输入时,并不能进行状态转换,而且NFA也不能接受空串,除非NFA的初态也是终态,下面的NFA,在输入空串ε时,也能进行状态转换。

虽然经过之前的学习,我们知道了理论上是不允许出现空串的,但实际中,如果不允许空串的出现,会很难以实现。

引入概念“ε闭包,又写作ε-closure()

简单来说q状态的ε闭包就是q经过零个、一个或多个空字符串所能达到的下态的集合。
在这里插入图片描述
定理:ε-closure({q1, q2}) = ε-closure(q1) + ε-closure(q2)

这里要注意Ia的定义,通俗讲是指经过弧a所能到达所有空字的转移的下态的集合
在这里插入图片描述
在这里插入图片描述
例:
在这里插入图片描述

【2.7】 有ε转换NFA和无ε转换的NFA的等效

其中,“当ε-closure(q0)含F的一个状态”,意思就是说,原自动机是否能识别空字ε。识别就是能不能从初态由ε到达终态。
在这里插入图片描述
例子:
在这里插入图片描述
在这里插入图片描述

【复习】

我们来看底下这张图,老师先讲了无空字转移的FA分为NFA和DFA,他们两者是可以转换的,我们的目的一般是要得到DFA。

但后面又讲到,在实际中是很难不使用空字的,因此我们的解决思路是,先把带空字的NFA转换为不带空字的NFA,然后再转换为DFA,我们今天要讲的就是:将带空字的NFA转换为带空字的DFA(也有可能是将带空字的NFA转换为不带空字转移的DFA,这里是老师画错了还是口误?)。
在这里插入图片描述


【2.8】正规式和正规集

【2.8.1】正规式和正规集

设G为正规式,则L(G)是它可以识别的正规集。

  1. 空字、空集是正规式(正规式是一个模型,可以识别正规集,相当于自动机),分别表示的正规集是{空字},空集。
  2. 任意一个字母表的成员α是正规式,表示的正规集是{α}
  3. 若A、B是正规式,则A、B的正规运算也是正规式,比如A或B,A连接B,A的闭包,B的闭包等。若A、B是正规式,表示的正规集是L(A)、L(B),且L(A)、L(B)的集合运算也是正规集。
    在这里插入图片描述
    一些运算
    在这里插入图片描述

【2.8.2】从右线性文法到正规式——联立方程

什么是右线性文法?推导出的式子如果包含非终结符,只能有一个且一定在最右边。
右线性文法RG、正规式R。
在这里插入图片描述
在这里插入图片描述

【2.9】右线性文法和正规集

我们想要让右线性文法RG、自动机FA、正规式R三者之间相互转换。上一小节中,我们已经讨论了RG如何到R,使用的是联立方程法。
在这里插入图片描述
如果我们已知两个右线性文法所识别的对象(语言集),我们希望构造一个新的右线性文法,新右线性文法识别的对象(语言集)是这两个右线性文法识别的对象(语言集)的或。
在这里插入图片描述
我们采取先构造、再证明的方法。
在这里插入图片描述
在这里插入图片描述
如果,一个语言是正规集,那么它一定可以通过上图的方法构造一个闭包为右线性文法。
在这里插入图片描述

【2.10】右线性文法与有限自动机

【2.10.1】右线性文法→有限自动机

至此,我们已经知道了,右线性文法和正规集之间的互相转换。现在我们来讨论,右线性语言与有限自动机的关系,它们如何等价转换?因为自动机容易编程实现。

非终结符 - 状态 + {H},引入吸纳状态,H是新的终态表示,因为文法没有识别态的概念。

q0 = S

为了自动机能识别空字,我们引入“当S → e 包含于 P”。当文法能识别空字,F 要包含S,否则不包含。

反过来看最后两行,如果A接受a映射到B,则原式应该属于P。
如果非终结符A,接收小a,到达新终结态H,则原式应该属于P。
在这里插入图片描述
证明:

例1:
B输入a有两种可能。具有不确定性,推导式理应用属于符号,不应用等号,这里简写了。
在这里插入图片描述
在这里插入图片描述

【2.10.2】确定有限自动机→右线性文法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【2.11】右线性语言的性质

在这里插入图片描述

【2.11.1】DFA M的化简

找一个状态数比DFA M少的DFA M1,且满足L(M) = L(M1),称为对M的化简。

如何化简?

  1. 将M的Q,按终止态和非终止态分成两个子集。
  2. 将基本划分再不断细分
  3. 删去M1中不可达状态,得最小化的DFA
    在这里插入图片描述

【2.11.2】泵浦原理

利用泵浦原理可以证明某个语言不是正规集。可以得出哪些问题不可以用正规集或文法或自动机来建模。

用途:泵引理给出一个语言是正规语言的必要条件。

泵引理:

  1. 如果L是Σ上的正规 语言,则存在一个正整数N(与L(句子长度)有关)。

在这里插入图片描述
在这里插入图片描述

【2.11.3】右线性语言的封闭性

在这里插入图片描述
之前我们用文法证明了xxxxx的各种运算也是封闭的,接下来就用自动机证明它们是封闭的,而且补集也是封闭的。
连接、或、闭包、补、交、差集。

【2.11.4】有限自动机的可解问题(判定问题)

【2.12】双向和有输出的有限自动机

ppt 第72页

  1. 双向有限自动机
  2. 有输出的FA

有限自动机的类型很多,下面介绍双向有限 自动机和有输出的自动机,因为它们有用。

【2.12.1】双向有限自动机

【2.12.2】有输出的FA

  1. 米兰机
    输出与输入有关

  2. 摩尔机
    输出只与状态有关

这篇关于形式语言与自动机——第二章 自动机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758461

相关文章

hdu 3065 AC自动机 匹配串编号以及出现次数

题意: 仍旧是天朝语题。 Input 第一行,一个整数N(1<=N<=1000),表示病毒特征码的个数。 接下来N行,每行表示一个病毒特征码,特征码字符串长度在1—50之间,并且只包含“英文大写字符”。任意两个病毒特征码,不会完全相同。 在这之后一行,表示“万恶之源”网站源码,源码字符串长度在2000000之内。字符串中字符都是ASCII码可见字符(不包括回车)。

POJ 1625 自动机

给出包含n个可见字符的字符集,以下所提字符串均由该字符集中的字符构成。给出p个长度不超过10的字符串,求长为m且不包含上述p个字符串的字符串有多少个。 g++提交 int mat[108][108] ;int matn ;int N ;map<char ,int> to ;//ACconst int maxm = 108 ;const int kin

zoj 3228 ac自动机

给出一个字符串和若干个单词,问这些单词在字符串里面出现了多少次。单词前面为0表示这个单词可重叠出现,1为不可重叠出现。 Sample Input ab 2 0 ab 1 ab abababac 2 0 aba 1 aba abcdefghijklmnopqrstuvwxyz 3 0 abc 1 def 1 jmn Sample Output Case 1 1 1 Case 2

正规式与有限自动机例题

答案:D 知识点: 正规式 正规集 举例 ab 字符串ab构成的集合 {ab} a|b 字符串a,b构成的集合 {a,b} a^* 由0或者多个a构成的字符串集合 {空,a,aa,aaa,aaaa····} (a|b)^* 所有字符a和b构成的串的集合 {空,a,b,ab,aab,aba,aaab····} a(a|b)^* 以a为首字符的a,b字符串的集

第二章 《凯斯迈之岛》

就在埃塞克斯大学的两名大学生紧锣密鼓地开发MUD之时,位于大洋彼岸的美国弗吉尼亚大学的两名大学生也在做着自己的游戏,他们名字叫做约翰•R•泰勒(John R Taylor III)和凯尔顿•弗林(Kelton Flinn)。泰勒与特鲁布肖一样是计算机科学专业的学生,而弗林则正在攻读应用数学专业的博士学位。   和当时美国大学校园中的多数学生一样,二人最大的乐趣是使

第一篇 第一章资金时间价值计算及应用 第二章经济效果评价

第1章 资金时间价值计算及应用 资金具有时间价值 1.1 利息的计算 1.1.1 利息和利率 I=F-P 债务人为资金需求方 债权人为资金供给方利息对经济活动的影响(1.影响企业行为 2.影响居民资产选择行为 3.影响政府行为) 利率 1.影响因素(1.社会平均利润率的高低 2.市场资金供求对比状况 3.资金要承担的风险 4.债务资金使用期限长短 5.政府宏观调控政策 6.经济周期所处

第二章 可行性研究与软件开发计划简记

第二章  可行性研究与软件开发计划 可行性研究的任务:回答所开发的软件系统有无可行的解决办法或者这个系统值得开发么。 可行性研究大体可分为三个大的方面:工艺技术、市场需求、财务经济状况。 可行性研究的目的:就是尽可能的用最小的代价在尽可能短的时间内确定问题是否能解决。 可行性研究的解决方案:一般集中在 1.技术可行性2.经济可行性3.操作可行性。

第二章 感受Mac 之美-惊艳从Mac 外设开始,一周后的使用感受

期望已久,同时老婆也是极力推荐说,既然是吃饭的家伙,那么就下点血本投资下自己,原来那台已经满足不了你现在的工作效率了,继续沿用,得不偿失啊。 衡量了一下目前的情况,同时考虑到自己也是一个程序员爸爸了,也有房贷在身,所以去没有选择 16g 内存,512g 的 ssd,15.4 或者新版 16 寸大屏幕的高配,而是选择了比较适合我现阶段的配置的【Apple 2019 款 MacBook Pro 13

AC自动机 - 多模式串的匹配运用 --- HDU 3065

病毒侵袭持续中  Problem's Link:http://acm.hdu.edu.cn/showproblem.php?pid=3065   Mean:  略 analyse:  AC自动机的运用. 这一题需要将模式串都存储下来,还有就是base的取值一定要弄清楚,由于这题的模式串都是大写字母所以我们可以通过剪枝来加速。 Time complexity:o(n)+o(m

AC自动机 - 多模式串的匹配运用 --- HDU 2896

病毒侵袭 Problem's Link:http://acm.hdu.edu.cn/showproblem.php?pid=2896   Mean:   略 analyse: AC自动机的运用,多模式串匹配。就是有几个细节要注意,在这些细节上卡了半天了。 1)输出的网站编号和最终的病毒网站数不是一样的; 2)next指针要设128,不然会爆栈; 3)同理,char转换为i