有穷自动机为一种识别装置,能准确地识别正规集。它为词法分析程序的自动构造提供了有效的方法和工具。
有穷自动机分为两类:
- 确定的有穷自动机 (Deterministic Finite Automata: DFA)
- 不确定的有穷自动机 (Nondeterministic Finite Automata: NFA)
确定的有穷自动机DFA :
DFA定义:
一个确定的有穷自动机(DFA)M是一个五元组:
M= (K,Σ, f, S, Z), 其中
- K是一个有穷集,它的每个元素称为一个状态;
- Σ是一个有穷字母表,它的每个元素称为一个输入符号,所以Σ也称为输入符号表;
- f是转换函数,是在K×Σ→K上的单值映射,即如存在f(ki, a)=kj, (ki∈K,kj∈K) ,则当前状态为ki且输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态;
- S∈K是唯一的一个初态;
- Z⊂K是一个终态集,终态也称可接受状态或结束状态。
例 : DFA M=({S,U,V,Q},{a,b},f,S,{Q}) 其中f定义为:
f(S,a)=U f(V,a)=U
f(S,b)=V f(V,b)=Q
f(U,a)=Q f(Q,a)=Q
f(U,b)=V f(Q,b)=Q
DFA 的状态图表示:
DFA 的矩阵表示:
-
∑
*上的符号串t被DFA M接受 :
- 定义1: 对∑ *中的任何符号串t, 若存在一条从初态结点到某一终态结点的道路,且这