このNFAをDFAに変換しようとしています。私は、空の文字列のための異なる状態を設定しようとした このNFAからDFAへの変換が混乱しています
:
私はNFAとDFAの両方のための遷移テーブルを有しています。しかし、何をすれば元のNFAで動作しないDFAが得られます。
私はサークルで少し行きました、誰かが私が間違っていることを私に見せることができますか?
このNFAをDFAに変換しようとしています。私は、空の文字列のための異なる状態を設定しようとした このNFAからDFAへの変換が混乱しています
:
私はNFAとDFAの両方のための遷移テーブルを有しています。しかし、何をすれば元のNFAで動作しないDFAが得られます。
私はサークルで少し行きました、誰かが私が間違っていることを私に見せることができますか?
NFAの同等のDFAを生成するアルゴリズムは、DFAの状態のセットとして、NFAの状態のセットのパワーセットを取ります。つまり、NFAの状態がq0
とq1
の場合、DFAの状態は{}, {q0}, {q1}, {q0, q1}
になります。 NFAがq
からq'
への遷移をa
とすると、DFAはp
からp'
のa
になります。ここで、p'
はNFAの状態のセットに対応する状態です入力中のNFAの状態のp
に対応する集合内の状態のいずれかによって到達される。a
。私たちのため:
{}
はそれ自身にしかつながりません。それは死んだ状態です。遷移{}
〜{}
の0
または1
。{q0}
は0
にし、どこにも1
にq0
またはq1
につながるq0
含まれています。遷移{q0}
~{q0, q1}
の0
と{q0}
~{}
の1
。{q1}
は1
にし、どこにも0
にq0
またはq1
につながるq1
含まれています。遷移{q1}
~{q0, q1}
は0
となり、{q1}
~{}
は1
となります。{q0, q1}
は、q0
とq1
の両方を含んでいます。 q0
はq0
に、q1
は0
に、q1
はどこにも行きません。遷移{q0, q1)
〜{q0, q1}
〜0
です。 q1
はq0
またはq1
は1
になり、q0
はどこでもなく1
になります。そのため、遷移{q0, q1}
〜{q0, q1}
は1
です。ここテーブルである:
0,1
/ \
| |
\ v
{q0} -0-> {q0,q1} <-1- {q1}
\ /
\ /
\-1--> { } <--0-/
注この構成では、最終的な状態は含むセットに対応するDFAのいずれかの状態であること:ここ
0 | 1
{} | {} | {}
{q0} | {q0,q1} | {}
{q1} | {} | {q0,q1}
{q0,q1} | {q0,q1} | {q0,q1}
グラフでありますNFAの状態を受け入れる。私たちについては、受諾状態は、q0
がNFAの唯一の受け入れ状態であるので、{q0}
と{q0,q1}
です。
また、この構成では、初期状態は、NFAの初期状態のみを含むセットに対応する状態であることにも注意してください。私たちのために、{q0}
。