另类 DFA 最小化算法:有限状态自动机算法界的“新优选”

国内互联网上常见的 Hopcroft 算法常常被用于解决 DFA 最小化问题,在此我们介绍另一种更易于实现的 DFA 最小化算法。

在本算法中,每一个节点有对应 \(c_i\in\{0,1\}\),表示其是否为终止态。进一步的,可以扩展为 \(c_i\in\mathbb{N}\) 的情况。

DFA 的最小化实质上为划分等价类的过程,可以证明两个点等价当且仅当对于接下来的任意连续不超过 \(n\) 个输入,其走到的终止态对应 \(c_i\) 均相同。

初始时将所有点根据 \(c_i\) 划分为若干个等价类,接下来迭代以下过程 \(\left\lceil\log_2n\right\rceil\) 次:

  • 重新将 \(n\) 个点划分为若干个等价类,其中两个点位于同一个等价类当且仅当操作前这两个点位于同一个等价类且它们的所有转移对应的新节点位于同一个等价类。

这个正确性是由于在一次迭代中,考虑的最长路径长度上的点数(初始为 \(1\))会翻倍。

来源:Aho, Hopcroft, Ullman (AHU) Automata Theory (1974)。

posted @ 2025-11-10 11:53  hhoppitree  阅读(176)  评论(1)    收藏  举报