単元一覧 › 大学数学 オートマトン・形式言語

オートマトン・形式言語の問題

難易度 1教科書の例題レベル大学数学 オートマトン・形式言語

アルファベット 上の文字列 について、 に含まれる の個数を と書く。言語 を次のように定める。

条件「」を判定する DFA と、条件「 は で終わる」を判定する DFA を、それぞれ状態数が最小になるように作る。次に、 の状態と の状態の組 をすべて状態とする積構成によって、 を受理する DFA を作る。

の状態数を求めよ。

この問題で使うもの

この問題を解けるようになるまで(20 技能)

ヒント

行き詰まったら、上から順に 1 つずつ開いてください。

ヒント 1

条件ごとに「何を記憶すればよいか」を決めて DFA を作り、積構成(状態の組)で共通部分の DFA を作る技能を使います。

ヒント 2

条件 (i) では の個数を で割った余りを、条件 (ii) では「末尾が のどこまで一致しているか」(何もなし//)を記憶します。積構成の状態数は、2 つの DFA の状態数の積です。

ヒント 3

は余り に対応する 状態、 は (一致なし)、(末尾が )、(末尾が )の 状態です。あとは組の個数を数えます。

答えと解説

答えを見る
結果を記録する(このブラウザにだけ保存されます):
解説を読む

手順 1:条件 (i)「」の DFA を作る。

記憶しておけばよい情報は「これまでに読んだ の個数を で割った余り」だけである。そこで、余り に対応する状態 を用意する。

  • 初期状態は (空文字列では は 個)
  • を読んでも の個数は変わらないので、
  • を読むと個数が 増えるので、
  • 受理状態は

この 4 状態はどの 2 つも区別しなければならない。たとえば と ()は、後ろに を 個つけると、 からは (受理)に、 からは 以外(不受理)に行く。よって の最小の状態数は である。

手順 2:条件 (ii)「 で終わる」の DFA を作る。

記憶しておけばよい情報は「 の末尾が の先頭部分とどこまで一致しているか」である。

  • :末尾が でも でもない(空文字列を含む)
  • :末尾が
  • :末尾が

遷移は次のとおり。

状態
(初期)
(受理)

だけが受理状態なので、 は と区別される。 と は、後ろに をつけると (不受理)、(受理)となるので区別される。よって の最小の状態数は である。

手順 3:積構成で を作る。

の状態は組 で、 文字読むごとに両方の成分を同時に遷移させる。たとえば である。初期状態は 、受理状態は両方の条件を満たす のみである。

状態の組の個数は、積の法則より

である。

したがって、 の状態数は である。

別解

(最小 DFA): 状態は の個数を 4 で割った余り の 4 個。初期状態は 、受理状態は 。遷移は では状態を変えず、 では とする。
状態 () は、接尾辞 を とすると、 からは受理されるが からは受理されない。よって 4 状態はすべて区別でき、最小は 4 状態である。

(最小 DFA): 状態は (直前が でなく、 の途中でもない。初期状態)、(直前の文字が )、( で終わっている)の 3 個。受理状態は 。

状態

区別可能性は次のとおり。 だけが受理状態なので、 は他と区別できる。 と は、文字列 を読むと (非受理)、(受理)となるので区別できる。したがって最小は 3 状態である。

積構成: 問題文の指定により、状態集合は のすべての組である。到達可能かどうかで数を減らさない。
初期状態は 、受理状態は 。遷移は成分ごとに とする。
状態数は 。

検算: 到達可能性を確かめると、 から で 、 で 、 で などと進み、12 個すべてに到達できる。よって到達不能状態を除いても 12 個で、答えは変わらない。

この問題の確認

AI が作成した問題です。公開前に次の確認を行いました。確認の方法について

間違いを報告する

この問題の誤り・分かりにくい点・難易度や学年のずれを知らせる
どこについての報告ですか

報告の内容と問題の番号を保存します。名前やメールアドレスは保存しません。

関連する問題