オートマトン・形式言語の問題
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
長さ の文字列 (全部で 個)のうち、 に受理されるものの個数を求めよ。
この問題で使うもの
- 状態ごとの文字列数の漸化式(説明と入口の問題)
この問題を解けるようになるまで(5 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
技能「状態ごとの文字列数の漸化式」を使う。長さ の文字列で状態 に着くものの個数 を、 から 1 文字ずつ増やして更新していこう。
ヒント 2
遷移表から各状態に入ってくる遷移を集めると、, , となる。初期値は 。
ヒント 3
順に計算すると は で 、 で 、 で 、 で となる。あと 1 回更新して を求めよう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
方針 長さ の文字列のうち、初期状態 から読み始めて状態 で止まるものの個数を とおく。DFA なので、どの文字列も止まる状態はちょうど 1 つに決まる。長さ の文字列で状態 に着くものは、「長さ で状態 に着き、最後の 1 文字 で と移る」ものに一通りに分けられるから、和の法則により
が成り立つ。
漸化式を作る 遷移表から、各状態へ入ってくる矢印を集める。
- に入る遷移: ,
- に入る遷移: ,
- に入る遷移: ,
したがって
初期値 長さ の文字列は空列だけで、状態 にいるから 。
順に計算する
| 合計 | ||||
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 | 2 |
| 2 | 2 | 1 | 1 | 4 |
| 3 | 3 | 3 | 2 | 8 |
| 4 | 6 | 5 | 5 | 16 |
| 5 | 11 | 11 | 10 | 32 |
| 6 | 22 | 21 | 21 | 64 |
| 7 | 43 | 43 | 42 | 128 |
| 8 | 86 | 85 | 85 | 256 |
例えば から では , , である。各行の合計が になっていることで検算できる。
答え 受理状態は のみなので、受理される長さ の文字列の個数は である。
別解
長さ の文字列を読んだ後に状態 にいる文字列の個数を とする。初期状態は なので 。
遷移表から次の漸化式が得られる。
- へ入る遷移は と なので 。
- へ入る遷移は と なので 。
- へ入る遷移は と なので 。
これを順に計算する。
- :
- :
- :
- :
- :
- :
- :
- :
各 で和が になっている( では )ので検算も合う。受理状態は のみなので、受理される文字列は 個。