形式语言复习三
# 语言的识别
系统识别语言 的字符串过程中状态的变化图示如下:
- 识别系统 (模型)
- 系统具有有穷个状态,不同的状态代表不同的意义。按照实际的需要,系统可以在不同的状态下完成规定的任务
- 我们可以将输入字符串中出现的字符汇集在一起构成一个字母表。系统处理的所有字符串都是这个字母表上的字符串
- 系统在任何一个状态 (当前状态) 下,从输入字符串中读入一个字符,根据当前状态和读入的这个字符转到新的状态。当前状态和新的状态可以是同一个状态,也可以是不同的状态;当系统从输入字符串中读入一个字符后,它下一次再读时,会读入下一个字符。这就是说,相当于系统维持有一个读写指针,该指针在系统读入一个字符后指向输入串的下一个字符。
- 系统中有一个状态,它是系统的开始状态,系统在这个状态下开始进行某个给定句子的处理。
- 系统中还有一些状态表示它到目前为止所读入的字符构成的字符串是语言的一个句子,把所有将系统从开始状态引导到这种状态的字符串放在一起构成一个语言,该语言就是系统所能识别的语言。
- 相应的物理模型:
- 一个右端无穷的输入带
- 一个有穷状态控制器 (FSC)
- 一个读头
- 系统的每一个动作由三个节拍构成:读入读头正注视的字符;根据当前状态和读入的字符改变有穷控制器的状态;将读头向右移动一格。
# 有穷状态自动机
有穷状态自动机
Q—— 状态的非空有穷集合。 称为 的一个状态
—— 输入字母表。输入字符串都是 上的字符串
——,是 的开始状态,也可以叫做初始状态或者启动状态
—— 状态转移函数,又叫状态转换函数。
对 表示: 在状态 读入字符,将状态变成,并将读头向右移动一个带方格而指向输入字符串的下一个字符
——,是 的终止状态集合。 称为 的终止状态,又称为接受状态
有穷状态自动机两种表示方法:
- 状态转移表
- 状态转移表是一个二维表,左边第二列列出有穷状态自动机的所有状态,并在第一列中标出开始状态和终止状态,上边第一行列出所有的输入字符,中间的方格内是该行所对应状态下输入该列所对应字符后转换到的新状态。
- 状态转换图
- 是该有向图中的一个顶点
- 图中有一条从顶点 到顶点 的标记为 的弧
- 标记为 的顶点被用双层圈标出
- 用标有 的箭头指出 的开始状态
- 状态转移表
确定的有穷状态自动机 (DFA)
- 对于任意的 均有确定的值,所以将这种 FA 称为确定的有穷状态自动机
M 接受 (识别) 的语言
对于,如果,则称 x 被 M 接受;如果,则称 M 不接受 x
- 称为由 M 接受 (识别) 的语言$0\vert n\ge1$}
- 如果,则称 与 等价
即时描述
称为 的一个即时描述,表示 是 正在处理的一个字符串, 引导 从 启动并达到状态 当前正注视着 的首字符
即时描述转换
- 如果 是 的一个即时描述,且,则
- :表示 从即时描述 经过 n 次移动到达即时描述
- 存在即时描述,使得
- 当 n=0,有。即
- :表示 M 从即时描述 经过至少 1 次移动到达即时描述
- :表示 M 从即时描述 经过若干步移动到达即时描述
对于任意一个,按照一下方式定义关系:
- 对 使得 同时成立
- 按照这个定义所得到的关系实际上是 上的一个等价关系。利用这个等价关系,可以将 划分成不多于 个等价类
# NFA
# 作为对 DFA 的修改
FA 和 DFA 的区别在于:
- 并不是对于所有的 都有状态与它对应
- 并不是对于所有的 只对应一个状态
- FA 在任意时刻可以处于有穷多个状态
# NFA 的形式定义
不确定的有穷状态自动机 (NFA)
- 是一个五元组
- 的意义同
- ,对 表示 在状态 读入字符,可以选择地将状态变成,或者,...,或者。并将读头向右移动一个带方格而指向输入字符串的下一个字符
- 是一个五元组
FA 的状态转移图、FA 的状态对应的等价类、FA 的即时描述对 NFA 都有效
M 接受 (识别) 的语言
- 对于,如果,则称 被 M 接受,如果,则称 M 不接受 x
- ,称为由 M 接受 (识别) 语言
对于一个输入字符,NFA 可以进入若干个状态,而 DFA 只能进入一个唯一的状态
# NFA 与 DFA 等价
定理:NFA 与 DFA 等价(证明过程过于复杂,可略过)
构造与 等价的 DFA
- ,
- ,{{}&{}}
- {}
证明{}
设,施归纳与
{},
设当 时结论成立。下证当 时结论也成立。设
{}{}
由归纳假设{}
根据 的定义,{}{}
所以,
故,如果{} 则必有
由上述推导可知,反向的推导也成立,即结论对 也成立
由归纳法原理,结论对 成立
证明
设{},从而, 即 {},由 的定义,,已知,所以,因此。反过来推,可得。从而 得证。综上,定理成立
不可达状态:
- 不存在从 对应的顶点出发,到达该状态对应的顶点的路。我们称此状态从开始状态是不可达的
构造给定 NFA 等价的 DFA 步骤:
- 把开始状态 填入表的状态列中
- 如果表中所列的状态列表有未处理的,则任选一个未处理的状态,对 中的每个字符 a,计算,并填入相应的表项中
- 如果 在表的状态列未出现过,则将它填入表的状态列
- 如此重复下去,直到表中的状态列中不存在未处理的状态
# 带空移动的有穷状态自动机
带空移动的不确定的有穷状态自动机:
的意义同 DFA。{}
- 非空移动
- {}
- 表示 M 在状态 q 读入字符 a,可以选择地将状态变成,并将读头向右移动一个带方格而指向输入字符串的下一个字符
- 空移动
- {}
- 表示 M 在状态 q 不读入任何字符,可以选择地将状态变成。读头不动
- 在 中,对任意, 需要严格区分
定理: 与 等价
证明:设有
构造与之等价的
取
# FA 是正则语言的识别器
# FA 与右线性文法
DFA ,处理句子 的特性
- M 按照句子 中字符的出现顺序,从开始状态 开始,依次处理字符,在这个处理过程中,每处理一个字符进入一个状态,最终停止在某个终止状态
- 它每次处理且进处理一个字符:第 i 步处理输入字符
- 对应与使用 状态转移函数的处理,相当于是在状态 q 完成对 a 的处理,然后由 p 接下去实现对后续字符的处理
- 当,且 a 是输入字符串的最后一个字符时,M 完成对此输入串的处理
定理:FA 接受的语言是正则语言
构造
基本思想是让 RG 的派生对应 DFA 的移动
设
取右线性文法,{}{}
定理:正则语言可以有 FA 接受
构造
基本思想:让 FA 模拟 RG 的派生
设,取
对
用 与产生式 对应
用 与产生式 对应
推论:FA 与正则文法等价
# FA 与左线性文法
DFA 的状态转移图作如下预处理:
- 删除 DFA 的陷阱状态 (包括与之相关的弧)
- 在图中加一个识别状态
- "复制" 一条原来到达终止状态的弧,使它从原来的起点出发,到达新添加的识别状态
定理:左线性文法与 FA 等价