ε转换

下面的有限机器识别包含重复模式的字符串。

机器接受包含1个或多个子字符串011重复的任何字符串。为了使机器能够接受包含一个以上重复模式的输入,机器使用了一种称为epsilon转换的特殊类型的转换。

非确定性

跃迁使机器不确定。当一台机器进入一种状态,它有一个跃迁,机器可以决定是否留在那个状态,等待下一个输入符号,或者它可以立即进行跃迁,进入一个新的状态。

一个不确定的有限自动机,或NFA,接受它的输入,如果有一些路径通过机器驱动的输入,导致机器使其接受状态。

另一个例子

下面的机器接受包含子字符串101或子字符串010的任何输入字符串。

机器使用来自状态1的两个epsilon跃迁来猜测模式101或模式010何时开始。如果机器猜对了,并且能够进入最终状态,机器就会接受输入。

模棱两可的转换

这是另一台机器,它接受与前一台机器相同的输入语言。

这台机器的特点是模糊过渡。如果一个转换来自一个由相同输入符号驱动的状态,那么它就是不明确的。当机器进入一种模糊状态时,它可以猜测从该状态中采取哪一种转换。如果机器猜对了,并且能够进入最终状态,机器就接受输入。

NFA是一个有限的机器,它包括ε跃迁和/或模糊跃迁。

正式的定义

一个不确定性有限自动机是一个元组{Q, Σ, δ, q0, F},其中

  1. Q是一个叫做状态的有限集合,
  2. Σ是一个有限集合,叫做字母表,
  3. δ : × ΣεP)是转换函数
  4. 0开始状态,
  5. F是可接受状态的集合。

将nfa转换为dfa

q中状态q的闭包E(q)是集合{q}与从q出发通过一个或多个ε跃迁可以到达的赢博体育状态的集合的并集。

如果R是来自Q的态的集合,闭包E(R)被定义为R中赢博体育态的闭包的并集。

如何将NFA转换为DFA:

  1. DFA的状态集为P(Q),即原始NFA中状态的幂集Q。
  2. DFA的启动状态为E({0}),0为NFA的初始启动状态。
  3. 为集RP)及输入字符cΣ,跃迁函数δ用过渡函数来定义DFAδ

DFA的接受状态集合F定义为包含NFA的至少一个最终状态的赢博体育状态的集合。

例子

将下面描述的NFA转换为DFA。

步骤1:为状态集的每个可能子集创建一个状态。如果子集中至少有一个状态是最终状态,则将状态标记为最终状态。

步骤2:添加过渡。