DFA 的最小化

17 Mar 2025 | 阅读 2 分钟

DFA 最小化意味着减少给定 FA 中的状态数。 因此,在最小化 FSM 后,我们得到具有冗余状态的 FSM(有限状态机)。

我们必须遵循各种步骤来最小化 DFA。 这些步骤如下:

步骤 1:删除所有无法从初始状态通过任何 DFA 转换集到达的状态。

步骤 2:为所有状态对绘制转换表。

步骤 3:现在将转换表拆分为两个表 T1 和 T2。 T1 包含所有最终状态,T2 包含非最终状态。

步骤 4:从 T1 中查找相似的行,例如:

这意味着,找到两个 a 和 b 的值相同的状态,然后删除其中一个。

步骤 5:重复步骤 3,直到在转换表 T1 中找不到相似的行。

步骤 6:对表 T2 也重复步骤 3 和步骤 4。

步骤 7:现在合并简化的 T1 和 T2 表。 合并后的转换表是最小化 DFA 的转换表。

示例

Minimization of DFA

解决方案

步骤 1:在给定的 DFA 中,q2 和 q4 是无法到达的状态,因此删除它们。

步骤 2:绘制其余状态的转换表。

国家01
→q0q1q3
q1q0q3
*q3q5q5
*q5q5q5

步骤 3:现在将转换表的行分为两组:

1. 一组包含那些从非最终状态开始的行

国家01
q0q1q3
q1q0q3

2. 另一组包含那些从最终状态开始的行。

国家01
q3q5q5
q5q5q5

步骤 4:集合 1 没有相似的行,因此集合 1 将保持不变。

步骤 5:在集合 2 中,第 1 行和第 2 行相似,因为 q3 和 q5 在 0 和 1 上转换到相同的状态。 因此,跳过 q5,然后在其余部分中将 q5 替换为 q3。

国家01
q3q3q3

步骤 6:现在合并集合 1 和集合 2,如下所示:

国家01
→q0q1q3
q1q0q3
*q3q3q3

现在它是最小化 DFA 的转换表。

Minimization of DFA