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

第二章 目录

在这里插入图片描述

【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. 摩尔机
    输出只与状态有关

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值