如何在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的最终状态的状态都被视为最终状态。