如何在TOC中从NFA转换为DFA?

在非确定性有限自动机中,对于任何当前状态和输入符号,都存在多个下一输出状态。

当且仅当存在至少一个从初始状态开始到最终状态结束的转换路径时,才接受任何字符串。

按照以下步骤将给定的 NFA 转换为 DFA -

算法

步骤-01

  • 让我们将“q”作为 DFA 的一组新状态。它在开始时被声明为空。

  • 让我们把T'作为DFA的一个新的转换表。

Step-02

  • 将 NFA 的起始状态添加到 q'。

  • 添加从开始状态到 T' 的转换。

  • 如果某些输入字母表的起始状态已转换为多个状态,则将这些多个状态作为 DFA 中的单个状态接受。

Step-03

如果 T' 中存在任何新状态,

  • 在 q' 中添加新状态。

  • 在转换表 T' 中添加状态转换。

Step-04

  • 继续重复第三步,直到转换表 T' 中没有新的状态出现。

  • 最后得到的转换表T'就是所需DFA的完整转换表。

注意-

转换后,DFA 中的状态数可能与 NFA 相同,也可能不同。

DFA 中存在的最大状态数是 NFA 中的两个状态数。

NFA 和 DFA 中的状态数 -

1 <= n <= 2m

这里,

  • n = DFA 中的状态数

  • m = NFA 中的状态数

在生成的 DFA 中,所有包含state(s)NFA 的最终状态的状态都被视为最终状态。