Skip to content

2.3 DFA State Minimization

:material-circle-edit-outline: 约 491 个字 :material-clock-time-two-outline: 预计阅读时间 2 分钟

最少状态数的 DFA State Minimization

对于某个 DFA,我们尝试找一个等价的 DFA,让其拥有最少的状态数

image-20241021082554237

image-20241021082822417

移出所有不可达状态,等价于找出所有可到达状态,后者更简单,算法如下:

image-20241021193800546

再将等价的状态进行合并:

image-20241021084021440

状态等价就是在这个状态上,输入相同的字符能得到同样的结果

字符串等价就是输入后能得到相同末状态

关于语言等价的等价类

等价有三个特性,自反,对称,传递,满足的话就是等价

定义语言的等价关系

image-20241021084212571

image-20241021083630255

这四个就是 $\Sigma ^\star $ 的一个划分

关于机器等价的等价类

输入同一个机器,最后停在相同状态,就是等价的

image-20241021084400807

\(E_q\) 表示所有会停在 \(q\) 上的字符串

image-20241021084448268

两种等价关系的关系

机器等价类更细,是在语言等价类上进一步划分的

image-20241021084655145

image-20241021085355919

refinement 即细分,前者划分地更细,而且是在后者的基础上进行划分的

image-20241021201402781

我们想,能不能让机器等价类刚好与语言等价类一模一样,不要细分

答案是可以的,我们只要从语言等价类出发去构造 FA,保证得到的 FA 等价类不变即可

构造方式见证明:

image-20241021085710872

image-20241025111400977

我们还需要证明:

  1. K 是有限的
  2. \(\delta\) 是一个函数
  3. L = L(M)

image-20241025111319681

image-20241025111324394

image-20241025111342389

等价类与正则语言

image-20241025111442872

这个定理可以用来证明某语言不是正则的

image-20241025111519466

FA 最小化算法

image-20241025111924146

image-20241025112348898

两个状态等价的意思是,对任意字符串,要么都是能进入末状态,要么都不是

最小化算法的思路是,一步步合并等价状态

看例子吧

image-20241021084448268

image-20241025112403186

image-20241025112553984

形式语言与自动机 Myhill-Nerode定理 | Dnull's Blog

编译原理之确定有限自动机的最小化_有限自动机最小化-CSDN博客