📜  NDFA到DFA的转换

📅  最后修改于: 2020-11-26 10:07:22             🧑  作者: Mango


问题陈述

X =(Q X,Σ,δX,Q 0,F x)为一个NDFA其接受的语言L(X)。我们要设计的等效DFA Y =(Q Y,Σ,δY,Q 0,F y)的,使得L(Y)= L(X)。以下过程将NDFA转换为其等效的DFA-

算法

输入-NDFA

输出-等效的DFA

步骤1-从给定的NDFA创建状态表。

步骤2-在等效的DFA的可能输入字母下创建一个空白状态表。

步骤3-通过q0标记DFA的开始状态(与NDFA相同)。

步骤4-找出每个可能输入字母的状态{Q 0 ,Q 1 ,…,Q n }的组合。

步骤5-每次我们在输入字母列下生成新的DFA状态时,我们都必须再次应用步骤4,否则转到步骤6。

步骤6-包含NDFA的任何最终状态的状态是等效DFA的最终状态。

让我们考虑下图所示的NDFA。

国家发改委

q δ(q,0) δ(q,1)
a {a,b,c,d,e} {d,e}
b {c} {e}
c {b}
d {e}
e

使用上述算法,我们发现其等效DFA。 DFA的状态表如下所示。

q δ(q,0) δ(q,1)
[a] [a,b,c,d,e] [d,e]
[a,b,c,d,e] [a,b,c,d,e] [b,d,e]
[d,e] [e]
[b,d,e] [c,e] [e]
[e]
[c, e] [b]
[b] [c] [e]
[c] [b]

DFA的状态图如下-

DFA状态图