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

状態ごとの文字列数の漸化式

DFA の各状態に到達する長さ の文字列の個数を で順に更新し、受理される長さ ( など具体的な値)の文字列の個数を求められる

前提

この技能までの道筋(4 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 決定性有限オートマトンの動作と受理判定 (大学数学 オートマトン・形式言語)
  2. 樹形図で数え上げる (算数 場合の数)
  3. 積の法則と和の法則 (算数 場合の数)
  4. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)

説明

DFA(決定性有限オートマトン)が受理する長さ の文字列が何個あるかを、文字列を 1 つずつ書き出さずに数える技能です。長さ の文字列を「読み終えたときにどの状態にいるか」で分類し、状態ごとの個数 を と順に更新していきます。「連続する 1 を含まない」「1 の個数が 3 の倍数」のような条件をみたす文字列の個数を求める場面で使います。 通りを全部調べる代わりに、状態の数 × 回ほどの足し算で答えが出ます。

なぜそうしてよいのか

DFA は決定的です。そのため、どの文字列 にも、読み終えた状態 がただ 1 つ決まります。そこで、長さ の文字列のうち となるものの個数を と書きます。長さ の文字列はどれも、ちょうど 1 つの状態に振り分けられます。つまり状態ごとのグループは互いに重ならず、しかも全体をもれなく分けています。

長さ の文字列は、長さ の文字列 の後ろに 1 文字 を付けた形 に、ただ 1 通りに書けます。その最後の状態は です。したがって が状態 で終わるのは、「 が状態 で終わり、かつ 」となるときに限ります。組 を 1 つ決めると、そのような は の選び方の数だけ、つまり 個あります。組 が違えば、できる文字列も違います。よって和の法則から

が成り立ちます。右辺の和は、 に入ってくる遷移(状態と文字の組)すべてについてとります。

出発点は長さ 0 の空文字列 だけで、これは初期状態 にいます。ですから で、それ以外の状態では です。 回更新したあと、受理状態の集合 についての和 が、受理される長さ の文字列の個数になります。

手順

  1. 初期値を置く: 初期状態だけ とし、他の状態はすべて とする。

  2. 遷移表を「行き先ごと」に読み替える: 各状態 について、 となる組 をすべて書き出す。同じ から 2 つの文字で に行くなら、 を 2 回足す。

  3. 更新式 を使い、 の順に表を埋める。

  4. 検算する: 全状態・全文字について遷移が定義されている DFA なら、各 で全状態の和は (文字の種類数) になる。これを確かめる。

  5. 受理状態についての和 を計算し、答えとする。

例題

アルファベット 上の DFA を次の表で定める。状態は 、初期状態は 、受理状態は と である。

状態0 を読む1 を読む

この DFA が受理する長さ の文字列の個数を求めよ。

例題の解答

手順1(初期値): とする。

手順2(行き先ごとの読み替え): 各状態に入ってくる遷移は次のとおりである。
- に入る遷移:
- に入る遷移:
- に入る遷移:

よって更新式は

となる。

手順3(表を埋める): は順に次のようになる。
- :
- :
- :
- :
- :
- :
- :
- :
- :

手順4(検算): この DFA は全状態・全文字について遷移が定義されている。各段の和は で、確かに になっている。例えば では である。

手順5(受理状態の和): 。

なお、この DFA が受理するのは「 を部分文字列として含まない(連続する を含まない)文字列」である。

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題

この技能の次に学べること