FA的分类
- 确定的FA(Deterministic finite automata, DFA)
- 非确定的FA(Nondeterministic finite automata, NFA)
确定的有穷自动机(DFA)
M = ( S , ∑ , δ , s 0 , F ) M=(S, \sum, \delta,s_0,F) M=(S,∑,δ,s0,F)
- S:有穷状态集
- ∑ \sum ∑:输入字母表,即输入符号集合。假设 ϵ \epsilon ϵ不是 ∑ \sum ∑中的元素
- δ \delta δ:将 S ∗ ∑ S*\sum S∗∑映射到S的转换函数。 ∀ s ∈ S , a ∈ ∑ \forall s \in S, a \in \sum ∀s∈S,a∈∑, δ ( s , a ) \delta(s,a) δ(s,a)表示从状态s出发沿着标记为a的边所能到达的状态。
- s 0 s_0 s0:开始状态(或初始状态), s 0 ∈ S s_0 \in S s0∈S
- F:接收状态(或终止状态)集合, F ⊆ S F \subseteq S F⊆S
可以用转换表表示DFA
非确定的有穷状态机(NFA)
M = ( S , ∑ , δ , s 0 , F ) M=(S, \sum, \delta,s_0,F) M=(S,∑,δ,s0,F)
- δ \delta δ:将 S ∗ ∑ S*\sum S∗∑映射到 2 S 2^S 2S的转换函数。 ∀ s ∈ S , a ∈ ∑ \forall s \in S, a \in \sum ∀s∈S,a∈∑, δ ( s , a ) \delta(s,a) δ(s,a)表示从状态s出发沿着标记为a的边所能到达的状态集合。
- 其余与DFA相同
这就是一个典型的NFA。从状态0出发沿着标记为a(b)的边所能到达的状态集合不止一个。
DFA和NFA的等价性
- 对任何NFA,存在识别同一语言的DFA
- 对任何DFA,存在识别同一语言的NFA
给定一个正则文法就能给出一个正则表达式,给定一个正则表达式就能给出一个FA