跳转至

2 自动机

NFA

定义

一个数学模型,包括:

(Ⅰ)有限的状态集合 S

(Ⅱ)输入符号集合 \Sigma(不考虑 \varepsilon\in \Sigma);

(Ⅲ)转换函数 \text{move}:S\times(\Sigma\cup\{\varepsilon\})→\mathscr{P}(S)

这里写的有点逆天,实际上就是指 move 函数接收两个参数,表示当前位于状态 S_i,当接收到某个字符 i\in\Sigma\cup\{\varepsilon\} 时会跳转到什么状态(因为可能有很多个,所以是 S 的幂集的一个元素)。

(Ⅳ)唯一的一个开始状态 s_0

(Ⅴ)接受(终止)状态集合 F\subseteq S

NFA 转换表

相当于一个矩阵,行是 S 的枚举 S_i,列是 \Sigma\cup\{\varepsilon\} 的枚举 c_j,每个元素是 \text{move}(S_i,c_j)

NFA 接受一个串 x,当且仅当 NFA 中存在从开始状态到某个接受状态的路径,此路径上的标记拼成 x

DFA

定义

DFA 是 NFA 的一个特殊情形,特殊就特殊在

(Ⅰ)任何状态下没有 \varepsilon 转换;

(Ⅱ)转换函数变为 \text{move}:S\times\Sigma→S,并且可以是一个部分函数。

本文阅读量