确定有限自动机DFA非确定有限自动机NFA
确定有限自动机DFA&非确定有限自动机NFA
Part 1_自动机介绍:
有穷自动机(finite state automata)是一个识别器,它对每个输入的字符做识别和判断,以确定其能到达的最终状态或状态集和路径,有穷自动机分为两类,即不确定的有穷自动机NFA和确定的有穷自动机DFA[1].
例子1:红绿灯系统: G(绿灯亮了的状态);R(红灯亮的状态);Y(黄灯亮的状态)
例子2:零售机(vending machine)。它接受五角和一块的硬币,但是要至少积累到3元才能按下选择,并且只有作出选择才会执行。所以从初始state开始,每一个状态之后都有两种选择:要么投5角,要么投1元;每次投完都会到达一个新的状态(目前投入硬币总数)。
Part 2_专用名词解释:
在介绍DFA和NFA之前,先介绍几个名词:
alphabet 字母表:符号的有限集合。 记作: Σ 例如:{a, b, ... , x, m}
strings 字符串: 通常我们用到建立在 Σ 上的字符串:有穷的符号序列。 例如:对于 Σ={a, b, c}, “ababc” 就是 Σ 上的一个字符串。
languages 语言:通常我们也只用建立在Σ上的语言,语言就是多个字符串的集合。例如 {ababc, ab, bc, ..}
sentences 句子:句子是语言集合中元素(字符串)的另一个称呼。
notation 符号:Σ* 是Σ上所有可能的字符串的集合。例如:Σ={a, b}, Σ* = { ε, a, b, ab, ba}
Part 3_DFA:
DFA: Deterministic Finite State 确定的有穷自动机
- 第一种计算模型:用来解决对一个已知字符串,看它是否能被某个自动机所接受。
- 一个DFA有有穷个状态(state),主要分为三种状态:
- 初始状态(initial state):自动机开始的状态;
- 终止状态(final state):一个DFA至少有一个终止状态;
- 中间状态。
「状态间转换的公式: 状态 x 输入字符 --> 状态」
3. DFA的定义:(共5部分)
A = ( Σ, S, s0, F, N )
- Σ: 输入字母表(alphabet),是一个输入字符的集合。
- S:状态的集合
- s0: 初始状态
- F:终止状态集合 F ⊆ S
- N:转换公式 N:S×Σ → S
4. 「“确定”意味着对于一个输入字符,只有唯一的可能状态」
5. 例子:
从上图我们可以得到一个转换公式表格:
单步表示: N (S0, 0): 是自动机从s0状态,读取符号0之后的状态。从表格中可以看出N (S0, 0) = S1.
多步表示: N (N (S0, 0), 1) = S2.
** 重要定理: 对S中所有的状态s,所有 Σ*中的字符串 α,β, 有:
N*(s, αβ) = N*(N*(s, α), β)。
6. 最终状态公式 (eventual state function):
从任意一个状态,经过一个string到达的最终状态的所有可能情况。
表达为: N* : S × Σ* → S
7. 如果一个字符串从一个DFA的初始状态出发,能在某一个终止状态结束,那这个字符串就被这个DFA所接受。所有的这种字符串的集合就是这个自动机的语言(language)。
8. 自动机等同:如果两个自动机接受相同的语言,就说这两个自动机相等。
9. 状态等同:如果对于所有的输入字符串 w, 有并且只有
N*(Sj,w) ∈ F 并且N*(Sk,w) ∈ F (F是final state的集合)
注意,一个非终止状态永远不可能与一个终止状态等同。
10. 状态消除:
1)等同状态消除:如果两个状态等同,那么其中一个可以被消除,来简化自动机。
以上面9.为例,Sk可以被消除, 消除Sk之后的新的自动机A' = (Σ, S', s0, F', N' )
S' = S-Sk
F‘ = F-Sk
N‘(s,w)= (if N(s,w)=Sk then Sj
else N(s,w))
(注意这里有个前提,Sk不能是初始状态,因为初始状态不能被消除。)
2) 无法到达的状态消除:如果一个状态是无法从初始状态到达的,那么它可以被消除,例如下图的S3。
11. 这里有一个传统的分组算法,可以用来最简化自动机,这里不做详细介绍。
Part 4_NFA:
1. NFA(Non-Deeterministic Finite State Automata)不确定的有穷自动机: 对一个输入符号,有两种或两种以上可能对状态,所以是不确定的。
2. NFA可以转换成DFA,NFA和DFA的主要区别在于[1]:
1)DFA没有输入空串之上的转换动作;
2)对于DFA,一个特定的符号输入,有且只能得到一个状态,而NFA就有可能得到一个状态集;
3. NFA的定义:(共5部分)
A = ( Σ, S, s0, F, N ) (具体表示内容与DFA相同)
4. 对于输入字符串w,如果满足 ∃ s ∈F. R*(s0, w, s), 那么w是被自动机所接受的。 所有被该自动机接受的字符串就是这个自动机的语言。
5. 定理:如果语言L被一个NFA所接受,那么一定存在一些DFA也接受这一语言L。
确定有限自动机DFA非确定有限自动机NFA相关推荐
- 【编译原理】确定有限自动机与非确定有限自动机
- 【计算理论】非确定性有限自动机 ( 计算过程 | 计算树 | 确定可接受字符串 | 设计非确定性有限自动机 | 空字符 )
文章目录 一.非确定性自动机 计算过程 ( 计算树 ) 二.判定 非确定性自动机 接受的字符串 三.自动机 设计要求 四.非确定性有限自动机设计 五.非确定性有限自动机 与 确定性 有限自动机 比较 ...
- 【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA | 示例 ) ★★
文章目录 一.NFA 转 DFA 示例 1 二.NFA 转 DFA 示例 2 三.NFA 转 DFA 示例 3 一.NFA 转 DFA 示例 1 将下图的 非确定性有限自动机 NFA 转为确定性有限自 ...
- 【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★
文章目录 一.正则表达式转为非确定性有限自动机 NFA 要点 二.正则表达式转为非确定性有限自动机 NFA 示例 1 三.正则表达式转为非确定性有限自动机 NFA 示例 2 四.正则表达式转为非确定性 ...
- 【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★
文章目录 一.正则表达式 二.正则语言运算示例 ★ 三.根据正则表达式构造自动机 一.正则表达式 1 . 正则表达式原子定义 : 如果 RRR 是 字符集 Σ\SigmaΣ 中的 111 个字符 , ...
- 【计算理论】可判定性 ( 非确定性有限自动机的接受问题 | 证明 “非确定性有限自动机的接受问题“ 的可判定性 )
文章目录 一.非确定性有限自动机的接受问题 二.证明 "非确定性有限自动机的接受问题" 可判定性 一.非确定性有限自动机的接受问题 非确定性有限自动机 的 接受问题 , 首先将 计 ...
- 【计算理论】正则语言 ( 推广型的非确定性有限自动机 GNFA | 删除状态 | 确定性有限自动机 转为 正则表达式 )
文章目录 一.推广型的非确定性有限自动机 ( GNFA ) 引入 二.推广型的非确定性有限自动机 ( GNFA ) 删除状态 三.确定性有限自动机 ( DFA ) 转为 正则表达式 四.确定性有限自动 ...
- 编译原理——非确定有限自动机(三)
非确定有限自动机 一.非确定有限自动机的定义(NFA) NFA和DFA的区别: 接收的字符可以是空(即当前状态可以接收一个null字符然后转移到另一个状态):一个状态接收一个字符之后可以转换到多个状态 ...
- 【计算理论】上下文无关语法 ( 代数表达式 | 代数表达式示例 | 确定性有限自动机 DFA 转为 上下文无关语法 )
文章目录 I . 代数表达式 语法 II . 代数表达式 语法 示例 III . 设计 上下文无关语法 IV . 确定性有限自动机 DFA 转为 上下文无关语法 I . 代数表达式 语法 1 . 代数 ...
- 确定与不确定有限自动机DFA与NFA及子集法互相转换
编译原理正规式NFA与DFA及子集法 1.基础术语与概念: 语法描述基本概念 字母表:一个有穷字符集记为Σ 字母表中每个元素称为字符 Σ上的字(字符串)是指Σ中的字符所构成的一个有穷序列 不包含任何字 ...
最新文章
- 定义并调用函数输出 fibonacci 序列_科学网—Zmn-0351 薛问天:再谈数学概念的定义,评新华先生《0345》...
- java自定义一个方法,用于返回两个整数的和
- app素材模板|ui界面的导航设计实用干货
- 国内版Office 365和Azure AAD绑定的问题及解决方案
- android 渐变展示启动屏
- 合成未来宝宝照片_父母照片重叠是宝宝长相?关晓彤鹿晗颜值逆天,邓超孙俪……...
- Myeclipse自定义包自动加入
- java rt.jar的源代码的位置
- JAVA程序入门(✨详解✨)
- 基于SSM的志愿者管理系统
- 游戏加加:科学的算法+公平的引擎=最真实的BenchMark
- winform,鼠标移动到label标签时变成手的形状
- 【免费】Linux命令行与Shell脚本编程大全 第3版 PDF全本 21MB 百度网盘下载
- 电子邮票出售面临着两大困境
- TypeError: date.locale is not a function
- Visual Studio打开文件时出现“向程序发送命令时出现问题
- 解决IDEA JavaWeb项目启动运行后出现404错误
- 同步挤压s变换matlab,同步挤压广义S变换信号时频分解与重构方法与流程
- 索引,主键,唯一索引,联合索引 的区别
- 神州信息喜获信创服务15个软件著作权证书