“DFA 最小化计算的正是可达状态的未来语言等价:分割细化从接受/拒绝开始,反复用字符转移暴露区分后缀,直到每一块对应一个 Nerode 类。最小结果可作为正则语言的规范表示,用于等价检查、缓…”
“考虑在 $\Sigma={a,b}$ 上的语言 $L=a^ b(\varepsilon\mid b)$。确定化为它生成了五个可达子集,最小化又把其中两个合并成四态机器。这里从语言本身出发回答…”
算法Algorithm
Finite automaton minimization · DFA minimization
删除不可达状态并按全部未来后缀的行为划分状态,构造识别同一语言的唯一最小 DFA。
等价状态具有相同右语言,可以合并。DFA 最小化先删除从
接受块是与
Hopcroft 分割细化算法可按以下步骤求这些类:
初始分割保证接受态不会与拒绝态合并。一次拆分意味着字符
设删去不可达状态后有
较小块规则让每条逆边只为所属目标状态的对数次有效细化付费;已经排队的块被拆开时,以两个子块替换只是分摊原来的待处理任务,不是无条件新增两份全量工作。初始两块也只产生线性扫描。若字母表采用区间或符号表示,成本必须按实际表示重新核算。下文手算使用更直接的 Moore 同步细化,用来展示划分变化,不冒充 Hopcroft 工作队列的执行轨迹。
两个状态是否长得相似、编号相邻或当前同为接受态都不是最终标准。唯一标准是:从这里开始,任何可能的后缀会不会让它们给出不同答案。若永远不会,保留两个状态只是重复存储同一份未来行为;若存在一个区分后缀,哪怕很长,也绝不能合并。
分割细化从最粗的可观察差异开始。空后缀已经能区分接受态与拒绝态,所以先分成两块;随后检查每个字符会把状态送往哪一块,发现不一致就继续拆分。短区分后缀先暴露,长区分后缀通过多轮传播逐渐显现。算法不需要枚举无限多个后缀,因为有限状态会让这个过程达到稳定点。
“只把较小半块加入工作集”不改变数学分割,只减少重复扫描。每当一个状态落入被选择的小半块,其所在块大小至少减半;同一状态只能经历对数次这样的事件。这是 Hopcroft 复杂度界的关键,而不是一条可有可无的实现技巧。
沿用子集构造得到的五态完整 DFA:
先按接受位分割,记拒绝块为
一轮 Moore 细化同时记录“当前块、
| 状态 | 相对于 |
细化后所在块 |
|---|---|---|
所以
令
| 商状态 | 仍能接受的后缀 | 读 |
读 |
接受 |
|---|---|---|---|---|
| 否 | ||||
| 是 | ||||
| 是 | ||||
| 否 |
这张表有四个状态、八条字符转移。分割稳定保证无论用
压缩后各块都可由
Moore 算法也能用于一般机器:从接受分割出发,不断按完整后继签名细化。至多发生
从关键词集合 {cat, car} 直接建立前缀树 DFA,会得到分别对应完整前缀 cat 与 car 的两个接受态。若机器只回答“是不是这两个词之一”,这两个状态在任意后续字符上都会进入同一个死状态,对空后缀都接受,因此未来行为完全相同,可以合并。前缀 ca 不能与它们合并,因为空后缀会区分接受与拒绝。
若词法分析器还要返回不同 token,例如 cat 对应 ANIMAL、car 对应 VEHICLE,问题就不再是二值语言接受。此时状态的可观察输出不同,初始分割必须按输出标签而不只是接受/拒绝划分;把两态合并会丢失调用者明确需要的信息。最小化总是相对于声明的观察语义。
不可达状态应在细化前删除。它们不会被任何输入前缀访问,却可能拥有独特未来行为;若保留,商自动机仍可识别同一语言,但不一定在所有 DFA 中状态最少,也不再给出规范结果。对缺边的“部分 DFA”,则应先补入共享死状态,或在算法中把缺边一致地解释为该状态。
对 NFA,具有相同右语言的状态可以安全合并:某状态在字符
本例还说明状态数必须说明计数约定。删掉
最小 DFA 是正则语言的规范指纹。两个完整 DFA 删除不可达状态并最小化后,只需检查是否存在保持初态、字符转移和接受性的状态同构;更直接的等价算法也可在状态对图中搜索区分字,两者都建立在相同未来行为上。
词法分析器生成、模式数据库去重和硬件控制综合都可从状态合并中获益。最小状态数还是不可压缩性的度量:若应用需要区分
LALR 状态合并采用另一个标准:合并 LR(1) 项目核心相同的状态,并把向前看集合取并。它可能引入新的归约冲突;该页的四词文法由14态合成13态后,固定优先某条归约会丢掉两个合法词。本页合并的则是所有未来后缀接受行为相同的 DFA 状态,语言保持由等价关系保证。两种状态压缩不能共用同一正确性结论。
John E. Hopcroft, STAN-CS-71-190, January 1971,报告正文第 2–5 页:逆转移、工作表与实现成本分析。以下出版版本与这份已核对的技术报告分别列出。
John E. Hopcroft, “An
John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006, §4.4.
Jean-Éric Pin, Mathematical Foundations of Automata Theory, 2022, Chapter II.
正在载入交互图谱…