编译原理期末速成–正规式、NFA转DFA、DFA的简化
什么是DFA、NFA?
**确定有限自动机(DFA)**是一种计算模型,它对于给定的输入符号和当前状态,具有唯一的下一个状态转换。每个状态只能转换到一个确定的下一个状态,不会存在多个选择(即初态唯一)。DFA 的状态转换是确定的,没有任何非确定性。
一个确定有限自动机可以用一个五元组表示:M = (Q, Σ, δ, q₀, F),其中:
- Q 是有限状态集合。
- Σ 是输入符号集合。
- δ 是状态转换函数,即 δ: Q × Σ → Q,表示给定当前状态和输入符号,自动机将转移到的下一个状态。
- q₀ 是初始状态。
- F 是接受状态集合,F ⊆ Q。
**非确定有限自动机(NFA)**是另一种计算模型,相对于 DFA 具有更高的表达能力。在 NFA 中,对于给定的输入符号和当前状态,可以存在多个可能的下一个状态转换(即初态可以有多个)。NFA 的状态转换存在非确定性,即在某个状态下,可以有多个不同的选择路径。
一个非确定有限自动机可以用一个五元组表示:N = (Q, Σ, δ, q₀, F),其中的组成与 DFA 相同,但与 DFA 不同的是,NFA 的状态转换函数 δ: Q × Σ → 2^Q,其中 2^Q 表示从当前状态通过输入符号可以转移到的所有可能状态的幂集。
看个题消化一下
步骤一:
根据正规构造NFA,引入初始状态X和终止状态Y
步骤二:
根据三个规则,将NFA图进行分解,得到分解后的NFA
步骤三:
对NFA进行确定化,获得转换矩阵
步骤四:
对所有状态集重新命名,得到新的状态转换矩阵
步骤五:
根据状态转换矩阵获取相应的DFA
步骤六:
化简DFA,获得最简DFA即为所求
步骤七:
最终所求DFA如图所示