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

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

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

アルファベット 上の文字列 ()を 3 進数として読んだ値を と書く(先頭に があってもよい。空文字列 については とする)。たとえば である。

言語

を受理する DFA を、次のように作る。

  • 状態の集合は とし、状態 は「ここまで読んだ文字列 について を で割った余りが である」ことを表す。
  • 初期状態は 、受理状態は のみとする。
  • 遷移関数 は、余りが の文字列の後ろに文字 を 1 つ付け加えたときの、新しい値を で割った余りとする。

この DFA の遷移表(4 つの状態 × 3 つの文字で、全部で 個の欄がある)を完成させたとき、遷移先が受理状態 である欄の個数を求めよ。

この問題で使うもの

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

ヒント

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

ヒント 1

「2 進数の値が の倍数」の DFA と同じように、状態を「ここまでの値を 4 で割った余り」にして遷移を決める技能を使います。

ヒント 2

3 進数では なので、 となります。

ヒント 3

の行は 、 の行は を 4 で割った余りで です。残りの の行も同様に計算し、 の欄を数えましょう。

答えと解説

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

手順 1:1 文字付け加えたときの値の変化を式にする。

3 進数の後ろに 1 桁 を付け加えると、それまでの各桁の位が 1 つずつ上がるので

となる。

手順 2:余りだけで遷移が決まることを確かめる。

ならば、合同式の性質より

である。よって新しい余りは と だけで決まり、

と定めればよい。空文字列の値は なので初期状態は 、値が の倍数のとき受理するので受理状態は である。

手順 3:遷移表を作る。

状態

計算の内容は次のとおり。
- : →
- : →
- : →
- : →

手順 4:遷移先が の欄を数える。

表で遷移先が になっているのは 、、 の 3 か所である。( は と同じで、 なので のときは解がない、と確かめることもできる。)

確認として、 を読むと となり、 と一致する。

したがって、求める個数は である。

別解

文字 を付け加えると新しい値は になるので、 である。

各状態について計算する。
- : に対し 。
- : なので余りは 。
- : なので余りは 。
- : なので余りは 。

遷移表(初期状態 0、受理状態 0)

状態c=0c=1c=2
0012
1301
2230
3123

遷移先が 0 の欄は , , の 3 個である。 の行には 0 がない。

検算として、各状態で すなわち となる を数える。 では がちょうど 1 つ存在し、 では が必要だが に含まれない。したがって合計は 3 個である。

この問題の確認

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

間違いを報告する

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

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

関連する問題