DFA(或 NFA、$\varepsilon$-NFA)接受的语言称正则语言。正则语言可以用正则表达式来表示,即正则表达式表示语言的能力和 DFA 等价。
在字母表 $\Sigma$ 上,正则表达式是这样定义的:
例如:
将 DFA 中的状态用 $\{1, 2, \cdots, n\}$ 编号,记正则表达式 $R_{ij}^{(k)}$ 表示这样的字符串:能使状态 $i$ 到状态 $j$,而且在途中除了 $i$ 和 $j$ 外,不再经过其他编号高于 $k$ 的状态。
$R_{ij}^{(k)}$ 有如下的递推公式:
$$ \begin{aligned} R_{ij}^{(k)}&=R_{ij}^{(k-1)}\cup R_{ik}^{(k-1)}(R_{kk}^{(k-1)})^*R_{kj}^{(k-1)} \end{aligned} $$
按下面的规则从 DFA 中逐个删除起始状态和接受状态外的所有其他状态:
按下面的规则从外到内构造 $\varepsilon$-NFA: