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

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

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

アルファベット 上の言語 を次のように定める。 は文字列 の長さを表す。

を受理する DFA を、次の手順で作る。

  • :それまでに読んだ文字列 について、 を で割った余り()を状態として記憶する DFA。
  • :それまでに読んだ文字列 の末尾が の先頭部分とどこまで一致しているか、を状態として記憶する DFA。状態は、 の末尾と一致する の先頭部分のうち最も長いものが「空文字列」「」「」の 通りに対応する。
  • : と の積構成で作った DFA。状態は の状態と の状態の組で、 のすべての状態と のすべての状態の組をすべて状態とする。各文字を読むと、組の両方の成分をそれぞれの DFA の遷移に従って同時に動かす。初期状態は両方の初期状態の組、受理状態は両方の成分が受理状態である組とする。

このとき、DFA の状態の個数を求めよ。

この問題で使うもの

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

ヒント

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

ヒント 1

技能「言語の条件から DFA を作る(余り・接尾辞・積構成)」を使います。まず 2 つの条件それぞれについて、何を記憶すればよいか(状態)を決めましょう。

ヒント 2

は長さを で割った余り、 は末尾が のどこまでと一致しているかを記憶します。積構成では、状態は の組です。

ヒント 3

の状態は の 個、 の状態は「空文字列」「」「」に対応する 個です。あとは組の個数を積の法則で数えます。

答えと解説

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

手順 1:(長さの余り)を作る。
状態を とする。 は「これまでに読んだ文字列の長さを で割った余りが 」を表す。どの文字を読んでも長さは 増えるので、遷移は

となる。初期状態は (空文字列の長さは )、受理状態は である。状態数は 。

手順 2:(接尾辞 )を作る。
状態を とし、 は末尾が の先頭部分と一致していない(一致する最長部分が空文字列)、 は末尾が 、 は末尾が を表す。遷移表は次のとおり。

状態

(例: で を読むと末尾が になるので 。 で を読むと末尾は なので 。)初期状態は 、受理状態は である。状態数は 。

手順 3:積構成。
の状態は組 ()である。 の選び方が 通り、 の選び方が 通りなので、積の法則より状態の個数は

である。初期状態は 、受理状態は の つだけである。

(確認) は長さ (余り )で で終わるので に属する。実際に でたどると

となり、受理状態で終わるので受理される。

よって、 の状態の個数は である。

別解

問題文の手順どおり、積構成の状態は の状態と の状態の組をすべて数える。 の状態は余り の 通り。 の状態は「空文字列」「」「」の 通り。

問題文は「すべての状態の組をすべて状態とする」と明記しているので、初期状態から到達できない状態があっても数に含める。したがって状態数は 。

念のため到達可能性を確かめる。初期状態は 。 を読むと 、 を読むと 。 から を読むと 、 を読むと 。 から を読むと 。 から次に読むと余り になり、、、 に到達できる。余り 、 についても同様に、、、 のすべてに到達できる。よって 個すべてが到達可能で、到達可能な状態だけで数えても答えは同じ。

の遷移は次のとおり。 は で 、 で に遷移する。 は で 、 で に遷移する。 は で 、 で に遷移する。 の受理状態は 。

の初期状態は 、受理状態は 。

答えは 。

この問題の確認

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

間違いを報告する

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

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

関連する問題