📅  最后修改于: 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的状态图如下-