有穷自动机(finite automata)分为不确定的有穷自动机(Nondeterministic Finate Automata,NFA)和确定的有穷自动机(Deterministic FiniteAutomata,DFA)。
NFA和DFA都是有穷自动机,一个是不确定的,一个是确定的,这里的确定和不确定应该怎么理解呢?
其实确定和不确定指的是一个状态到另一个状态的输入是否是确定的。拿NFA和DFA的状态转换图来说就是:NFA同一个符号可以标记离开同一状态的多条边,并且e也可以作为标记;DFA同一个符号只能标记一个状态到另一个状态的一条边,即一个状态到另一个状态的边是确定的。
e表示一个空的串
下面是一个能识别正则表达式(a|b)*abb的语言的NFA和DFA状态转换图
NFA从状态0出发对于同一个输入有两条边指向了不同的状态,即从0状态出发,当输入为a的时候下一个状态可以是0也可以是1,这就是NFA的不确定。
DFA从一个状态到另一个状态只有唯一的一个输入与之对应。比如从S0到S1对应的输入是a,从S0到S0对应的输入时b,从S1到S2对应的输入是b,这就是DFA的确定。