オートマトン・形式言語の問題
アルファベット 上の決定性有限オートマトン(DFA) を考える。状態の集合は 、初期状態は 、受理状態は と の 2 つである。遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
と同じ言語を受理する DFA のうち、状態数が最小のもの(最小 DFA)の状態数を求めよ。
この問題で使うもの
- DFA の最小化(区別可能な状態の対)(説明と入口の問題)
この問題を解けるようになるまで(2 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
DFA の最小化の手順を使う。まず初期状態から到達できない状態を取り除き、そのあと区別可能な状態の対に表で印をつけていく。
ヒント 2
最初に、受理状態と非受理状態からなる対すべてに印をつける。そのあと、対 について、ある入力 での遷移先の対 に印があれば、 にも印をつける。これを新しい印が増えなくなるまで繰り返す。
ヒント 3
は到達不能なので除く。受理状態 と非受理状態 の間の 6 対に印をつけると、残りは になる。たとえば は、入力 で印のある に移る。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
手順 1:到達不能な状態を除く。
初期状態 から遷移をたどる。
- から に行ける。
- から に、 から に行ける。
- から に、 から に行ける。
よって、到達できる状態は である。 へ入る遷移は 自身からのもの()しかないので、 には到達できない。 を取り除いても受理する言語は変わらない。
手順 2:受理状態と非受理状態の対に印をつける。
受理状態は 、非受理状態は である。空文字列 で区別できるので、次の 6 個の対に印をつける。
印のついていない対は の 4 個である。
手順 3:遷移先の対に印があれば印をつける(1 巡目)。
- :入力 で 、入力 で 。どちらも印なしなので、まだ印をつけない。
- :入力 で 。これには印があるので、 に印をつける。
- :入力 で (印なし)、入力 で (同じ状態)。印をつけない。
- :入力 で 。これには印があるので、 に印をつける。
手順 4:新しい印が増えなくなるまで繰り返す(2 巡目)。
残っているのは と である。
- :遷移先は と で、どちらも印なし。
- :遷移先は と で、印なし。
新しい印は増えないので、ここで終了する。
手順 5:同値な状態をまとめる。
最後まで印のつかなかった対 と は同値である。よって、同値類は
の 3 個になる。同値類どうしは区別可能なので、これ以上まとめられない。
したがって、最小 DFA の状態数は である。(この DFA は、入力に含まれる の個数を で割った余りが である文字列を受理している。)
別解
初期状態 から到達可能な状態を調べる。、、、、 より、到達可能なのは で、 は到達不能なので除く。
次に分割の細分化を行う(状態同値性の判定)。
- 初期分割:受理 、非受理 。
- 非受理側を見る。:(非受理)、(非受理)。:(非受理)、(受理)。:(非受理)、(非受理)。 だけ入力 1 で受理側に行くので、 は と区別される。分割は となる。
- 受理側を見る。:、。:、。 では両方 、 では両方 に行くので区別されない。
- を見る。:、。:、。 では両方 、 では両方 に行くので区別されない。
分割は安定したので、同値類は の 3 つ。
検算: は入力 1 で受理状態 に行くので、空語以外にも から受理される語がある(死状態ではない)。 は空語を受理するが、 と は受理しない。よって 3 状態は互いに区別でき、最小 DFA の状態数は 3。