非确定性有限自动机


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

NDFA 的正式定义

NDFA 可以用 5 元组 (Q, Σ, δ, q 0 , F) 表示,其中 -

  • Q是有限状态集。

  • Σ是称为字母表的有限符号集。

  • δ是过渡函数,其中 δ: Q × Σ → 2 Q

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

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

  • F是 Q 的最终状态的集合 (F ⊆ Q)。

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

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

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

例子

设一个非确定性有限自动机为 →

  • Q = {a, b, c}
  • Σ = {0, 1}
  • q 0 = {a}
  • F = {c}

转换函数 δ 如下所示 -

现状 输入 0 的下一个状态 输入 1 的下一个状态
A 甲、乙
C 一、三
C 乙、丙 C

其图形表示如下 -

NDFA 图形表示

DFA 与 NDFA

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

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

接受器、分类器和转换器

接受器(识别器)

计算布尔函数的自动机称为接受器。接受器的所有状态要么接受,要么拒绝给它的输入。

分类器

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

传感器

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

  • Mealy Machine - 输出取决于当前状态和当前输入。

  • 摩尔机- 输出仅取决于当前状态。

DFA 和 NDFA 的可接受性

如果从初始状态开始的 DFA/NDFA 在完全读取字符串后以接受状态(任何最终状态)结束,则字符串被 DFA/NDFA 接受。

字符串 S 被 DFA/NDFA 接受 (Q, Σ, δ, q 0 , F), iff

δ*(q 0 , S) ∈ F

DFA/NDFA接受的语言L是

{S | S ε Σ* 且 δ*(q 0 , S) ε F}

DFA/NDFA 不接受字符串 S′ (Q, Σ, δ, q 0 , F), iff

δ*(q 0 , S′) ∉ F

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

{S | S ∈ Σ* 且 δ*(q 0 , S) ∉ F}

例子

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

DFA 对字符串的可接受性

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

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