美文网首页
DFA 与 NFA

DFA 与 NFA

作者: 放开那个BUG | 来源:发表于2023-03-18 16:19 被阅读0次

一、前言

FA(Finite Automata,有穷状态自动机)是在有限个输入的情况下,在这些状态中转移并期望最终达到终止状态。有穷状态自动机根据确定性可以分为“确定有穷状态自动机”(DFA - Deterministic finite automaton)和“非确定有穷自动机”(NFA - Non-deterministic finite automaton)。

DFA 通俗点就是一个输入一个输出;NFA 通俗点就是一个输入多个输出。

二、解释

DFA 状态机由一个5-tuple 组成(Q, ∑, δ, q0, F) ,它们的解释如下:

  • Q 是一组有限的状态集合
  • ∑ 是一组有限的符号,称为字母表
  • δ 是转换函数,其中 δ:Q × ∑ → Q
  • q0 是任何输入的初始状态 (q0 ∈ Q),即初始状态
  • F 是 Q (F ⊆ Q) 的一组最终状态,即终止状态

DFA 的图形表示如下:
DFA 由称为状态图的有向图表示。

  • 顶点代表状态。
  • 标有输入字母表的弧线显示了转换。
  • 初始状态由一个空的单个传入弧表示。
  • 最终状态由双圆圈表示。

举个例子:
我们设定一个 DFA 如下 →

  • Q = {a, b, c},
  • ∑ = {0, 1},
  • q0 = {a},
  • F = {c},

并且转换函数δ如下表所示 -

Present State Next State for Input 0 Next State for Input 1
a a b
b c a
c b c

它的图形表示如下 -


DFA转换图

三、代码

其实实际工作中,一堆 状态机转换,只是我们没那么严谨罢了,没有把它对应到 DFA 上。

相关文章

  • 编译原理系列之三 词法分析

    词法分析 NFA与DFA的等价性:对于每个NFA M ′都一定存在一个DFA M,使L(M′)=L(M)。 NFA...

  • NFA转DFA(附代码)

    每一台NFA都有一台等价的DFA 设是识别语言A的NFA,要构造一套DFA M 识别A。再给出完整的构造之前,先考...

  • 用 Java 实现一个正则表达式引擎

    实现一个正则表达式需要几步? 就三步: 分析正则表达式并构建出NFA 根据NFA得出DFA 根据DFA匹配字符串当...

  • DFA确定化和最小化

    从正规式开始 一、先将正规式转换成NFA 通过下面的对应法则将正规式转换成NFA 例如: 二、再将NFA转成DFA...

  • 8.4 NFA和DFA

    上一节粗略介绍了回溯,它是NFA特有的功能,DFA不需要回溯,也就不需要保存状态再反复尝试。这样看来,NFA不是更...

  • NFA与DFA的等价性

    前言 如果两台机器识别相同的语言,则称它们是等价的。换句话说确定型(DFA)和非确定型(NFA)有穷自动机识别相同...

  • NLP复习笔记-FA

    DFA和NFA的区别 1.DFA没有epsilon transaction (必须读入字符) 2.对每一个确定的状...

  • 正则表达式快速入门

    正则表达式的引擎分为三种:NFA、DFA、POSIX NFAJavaScript 使用的是 NFA 的正则表达式引...

  • 正则匹配

    正则 正则表达式引擎匹配 正则引擎大体上可分为不同的两类:DFA和NFA,而NFA又基本上可以分为传统型NFA和P...

  • 第二章第6节 从 NFA 到 DFA 的转换

    从NFA 到 DFA 的转换 image.png image.png 子集构造法 subset construct...

网友评论

      本文标题:DFA 与 NFA

      本文链接:https://www.haomeiwen.com/subject/xupnbrtx.html