非确定性有限自动机

在 NDFA 中,对于特定的输入符号,机器可以移动到机器中的任意状态组合。换句话说,无法确定机器移动到的确切状态。因此,它被称为非确定性自动机。由于它具有有限数量的状态,因此该机器被称为非确定性有限机器非确定性有限自动机

NDFA 的正式定义

NDFA 可以用 5 元组 (Q、∑、δ、q0、F) 表示,其中 −

  • Q 是一组有限的状态。

  • 是一组称为字母表的有限符号。

  • δ 是转换函数,其中 δ: Q × ∑ → 2Q

    (这里取 Q 的幂集 (2Q),因为在 NDFA 的情况下,从一个状态可以转换到 Q 状态的任意组合)

  • q0 是处理任何输入的初始状态 (q0 ∈ Q)。

  • F 是 Q 的一组最终状态/状态 (F ⊆ Q)。

NDFA 的图形表示:(与 DFA 相同)

NDFA 由称为状态图的有向图表示。

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

示例

让非确定性有限自动机为 →

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

转换函数 δ 如下所示 −

当前状态 输入 0 的下一个状态 输入 1 的下一个状态
a a, b b
b c a, c
c b, c c

其图形表示如下 −

NDFA 图形表示

DFA 与 NDFA

下表列出了 DFA 与 NDFA 之间的差异。

DFA NDFA
从一个状态转换到每个输入符号的特定下一个状态。因此它被称为确定性 从一个状态转换到每个输入符号的多个下一个状态。因此它被称为非确定性
DFA 中看不到空字符串转换。 NDFA 允许空字符串转换。
DFA 中允许回溯 在 NDFA 中,回溯并不总是可能的。
需要更多空间。 需要更少空间。
如果字符串转换到最终状态,则 DFA 接受该字符串。 如果所有可能的转换中至少有一个以最终状态结束,则 NDFA 接受该字符串。

接受器、分类器和传感器

接受器(识别器)

计算布尔函数的自动机称为接受器。接受器的所有状态都是接受或拒绝给予它的输入。

分类器

分类器具有两个以上的最终状态,并在终止时提供单个输出。

传感器

根据当前输入和/或先前状态产生输出的自动机称为传感器。传感器可以分为两种类型 −

  • Mealy 机 − 输出取决于当前状态和当前输入。

  • Moore 机 −输出仅取决于当前状态。

DFA 和 NDFA 的可接受性

当且仅当 DFA/NDFA 从初始状态开始,在完整读取字符串后以接受状态(任何最终状态)结束,则 DFA/NDFA 接受字符串。

当且仅当

δ*(q0, S) ∈ F

DFA/NDFA 接受的语言 L

{S | S ∈ ∑* 和 δ*(q0, S) ∈ F

字符串 S′ 不被 DFA/NDFA (Q, ∑, δ, q0, F) 接受,当且仅当

δ*(q0, S′) ∉ F

不被 DFA/NDFA 接受的语言 L′(接受语言 L 的补集)是

{S | S ∈ ∑* and δ*(q0, S) ∉ F

示例

让我们考虑图 1.3 中所示的 DFA。从 DFA 中,可以得出可接受的字符串。

DFA 接受字符串

上述 DFA 接受的字符串:{0, 00, 11, 010, 101, ...........>

上述 DFA 不接受的字符串:{1, 011, 111, ........>