Automata Theory 简明教程
Non-deterministic Finite Automaton
在 NDFA 中,对于特定的输入符号,机器可以移动到机器中的任何状态组合。换句话说,无法确定机器移动到的确切状态。因此,它称为 Non-deterministic Automaton 。由于它有有限数量的状态,因此机器称为 Non-deterministic Finite Machine 或 Non-deterministic Finite Automaton 。
Formal Definition of an NDFA
NDFA 可以用 5 元组 (Q, ∑, δ, q0, F) 表示,其中−
-
Q 是一个有限的状态集。
-
∑ 是称为字母的符号的有限集合。
-
δ 是过渡函数,其中 δ: Q × ∑ → 2Q(这里取 Q 的幂集 (2Q),因为在 NDFA 的情况下,从一个状态到另一个状态,可以转换为 Q 状态的任何组合)
-
q0 是处理任何输入的初始状态 (q0 ∈ Q)。
-
F 是 Q 的一组终态/状态 (F ⊆ Q)。
Graphical Representation of an NDFA: (same as DFA)
NDFA 由称为状态图的有向图表示。
-
顶点表示状态。
-
带有输入字母标签的弧线表示转换。
-
初始状态由一条空传入弧线表示。
-
终态由双圆圈表示。
Example
令非确定性有限自动机为→
-
Q = {a, b, c}
-
∑ = {0, 1}
-
q0 = {a}
-
F = {c}
过渡函数 δ 如下所示−
Present State |
输入 0 时的下一状态 |
输入 1 时的下一状态 |
a |
a, |
b |
b |
c |
a, c |
c |
b, |
c |
它的图形表示如下−
DFA vs NDFA
下表列出了 DFA 和 NDFA 之间的差异。
DFA |
NDFA |
一个状态的转换对于每个输入符号来说都是到一个单一的特定下一个状态。因此,它称为确定性的。 |
一个状态的转换对于每个输入符号来说都可以到多个下一个状态。因此,它称为非确定性的。 |
空字符串转换在 DFA 中看不到。 |
NDFA 允许空字符串转换。 |
可以在 DFA 中进行回溯。 |
在 NDFA 中,并不总是可以进行回溯。 |
Requires more space. |
Requires less space. |
如果一个字符串转换到一个最终状态,它就会被 DFA 接受。 |
如果所有可能的转换中至少有一个结束于最终状态,一个字符串就会被 NDFA 接受。 |
Acceptability by DFA and NDFA
当 DFA/NDFA 从初始状态开始在完整读取字符串后结束于接受状态(任何最终状态)时,一个字符串才会被 DFA/NDFA 接受。
字符串 S 被 DFA/NDFA (Q, ∑, δ, q0, F) 接受,当且仅当
δ (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}*
Example
我们考虑图 1.3 中所示的 DFA。可以从 DFA 推导出可接受的字符串。
上述 DFA 所接受的字符串:{0, 00, 11, 010, 101, ………..}
上述 DFA 所不接受的字符串:{1, 011, 111, ……..}