オートマトン・形式言語の問題
アルファベット 上の非決定性有限オートマトン( 遷移なし) を考える。状態の集合は 、初期状態は 、受理状態は のみである。遷移関数 は次の表で与えられる( は遷移先がないことを表す)。
| 状態 | ||
|---|---|---|
に部分集合構成を適用して決定性有限オートマトン をつくる。 の初期状態は であり、 の状態 ( の状態の部分集合)と文字 に対して、遷移先を と定める。 の状態のうち、初期状態 からある入力文字列(空文字列を含む)を読んで到達できるもの(到達可能な状態)の個数を求めよ。なお、空集合 も到達できる場合は 1 つの状態として数える。
この問題で使うもの
- 非決定性有限オートマトンと部分集合構成(説明と入口の問題)
この問題を解けるようになるまで(2 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
技能「部分集合構成」を使います。初期状態 から始め、各文字で到達しうる状態の集合を順にたどって、新しく現れる部分集合を記録していきましょう。
ヒント 2
部分集合 から文字 での遷移先は です。たとえば から を読むと になります。
ヒント 3
、 となります。続けて から , を読んだ先を計算し、新しい部分集合が出なくなるまで続けましょう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
部分集合構成では、初期状態 から始めて、まだ調べていない部分集合について各文字での遷移先(集合の各要素の遷移先の和集合)を計算し、新しい部分集合が出てくるたびに調べる対象に加えていきます。新しい部分集合が出てこなくなったら終わりです。
手順 1: から
新しく が出てきました。
手順 2: から
新しく が出てきました。
手順 3: から
新しく が出てきました。
手順 4: から
新しい部分集合は出てきません。
どの到達可能な状態の遷移先もすでに見つかった部分集合なので、ここで構成は終わります。得られた の遷移表は次のとおりです。
| の状態 | ||
|---|---|---|
どの状態にも が含まれ、 は空でないので、空集合 には到達しません。
よって、到達可能な状態は の 個です。
別解
部分集合構成を初期状態 から順に進める。
- : で 、 で 。
- : で 、 で 。
- : で 、 で 。
- : で 、 で 。
新しい状態が出なくなったので、到達可能な状態は , , , の 4 個である。空集合は、どの状態も を含み続けるため到達できない。
検算:この NFA は「 を部分文字列として含む文字列」を受理する。入力例 はそれぞれ に到達し、上の表と一致する。
答え:4