NDFAからDFAへの変換
問題文
しましょう X = (Qx, ∑, δx, q0, Fx)言語L(X)を受け入れるNDFAであること。同等のDFAを設計する必要がありますY = (Qy, ∑, δy, q0, Fy) そのような L(Y) = L(X)。次の手順では、NDFAを同等のDFAに変換します-
アルゴリズム
Input − NDFA
Output −同等のDFA
Step 1 −指定されたNDFAから状態テーブルを作成します。
Step 2 −同等のDFAの可能な入力アルファベットの下に空白の状態テーブルを作成します。
Step 3 − DFAの開始状態をq0でマークします(NDFAと同じ)。
Step 4-国{Qの組み合わせを見つける0、Q 1、...、Q nはそれぞれの可能な入力アルファベットのために}。
Step 5 −入力アルファベット列の下に新しいDFA状態を生成するたびに、ステップ4を再度適用する必要があります。それ以外の場合は、ステップ6に進みます。
Step 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の状態図は次のとおりです。