-title: 非決定性オートマトンから決定性オートマトンへの変換
非決定性オートマトンは、ある状態から複数の可能な状態へ遷移する。そのうちのどれかが受理状態へ遷移すれば accept となる。
状態は有限なので、複数の可能な状態は、状態の部分集合となる。状態Qの部分集合は、
Q → Bool
と表すことができる。つまり、その部分集合に含まれるかどうかを表す関数が部分集合そのものになる。これを、Bool
Q と書くことがある。Bool は二つの要素がある。状態数4からBoolへの関数は、2
4個ある。集合のべき乗をこのようにして定義することができる。
非決定性オートマトンを状態Qの部分集合を状態とする決定性オートマトンと考えることができる。
NAutomaton Q Σ は状態の集合Qと入力文字の集合Σからなる非決定性オートマトンだった。これから、
Automaton (Q → Bool) Σ
を作れれば、非決定性オートマトンから決定性オートマトンへの変換ができることになる。
状態Q入力文字Σの決定性オートマトンの状態遷移関数は Q → Σ → Q だったから、
この状態Qの部分集合を状態とするAutomatonの状態遷移関数は、
(Q → Bool) → Σ → (Q → Bool)
となる。右のかっこは省略可能である。
(Q → Bool) → Σ → Q → Bool
つまり、状態遷移関数は三つの入力を持つ。f i q としよう。決定性オートマトンの状態遷移関数は、
Nδ : Q → Σ → Q → Bool
だった。f : Q → Bool が入力の状態で、i : Σ が決まっている。出力状態は Q → Bool なので q を入力に持つ。
λ q → f q ∧ Nδ q i
---問題7.1 以下の非決定性オートマトンを決定性オートマトンへ変換せよ
例題