アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
長さ の文字列 (全部で 個)のうち、 に受理されるものの個数を求めよ。
DFA の各状態に到達する長さ の文字列の個数を で順に更新し、受理される長さ ( など具体的な値)の文字列の個数を求められる
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
DFA(決定性有限オートマトン)が受理する長さ の文字列が何個あるかを、文字列を 1 つずつ書き出さずに数える技能です。長さ の文字列を「読み終えたときにどの状態にいるか」で分類し、状態ごとの個数 を と順に更新していきます。「連続する 1 を含まない」「1 の個数が 3 の倍数」のような条件をみたす文字列の個数を求める場面で使います。 通りを全部調べる代わりに、状態の数 × 回ほどの足し算で答えが出ます。
DFA は決定的です。そのため、どの文字列 にも、読み終えた状態 がただ 1 つ決まります。そこで、長さ の文字列のうち となるものの個数を と書きます。長さ の文字列はどれも、ちょうど 1 つの状態に振り分けられます。つまり状態ごとのグループは互いに重ならず、しかも全体をもれなく分けています。
長さ の文字列は、長さ の文字列 の後ろに 1 文字 を付けた形 に、ただ 1 通りに書けます。その最後の状態は です。したがって が状態 で終わるのは、「 が状態 で終わり、かつ 」となるときに限ります。組 を 1 つ決めると、そのような は の選び方の数だけ、つまり 個あります。組 が違えば、できる文字列も違います。よって和の法則から
が成り立ちます。右辺の和は、 に入ってくる遷移(状態と文字の組)すべてについてとります。
出発点は長さ 0 の空文字列 だけで、これは初期状態 にいます。ですから で、それ以外の状態では です。 回更新したあと、受理状態の集合 についての和 が、受理される長さ の文字列の個数になります。
初期値を置く: 初期状態だけ とし、他の状態はすべて とする。
遷移表を「行き先ごと」に読み替える: 各状態 について、 となる組 をすべて書き出す。同じ から 2 つの文字で に行くなら、 を 2 回足す。
更新式 を使い、 の順に表を埋める。
検算する: 全状態・全文字について遷移が定義されている DFA なら、各 で全状態の和は (文字の種類数) になる。これを確かめる。
受理状態についての和 を計算し、答えとする。
アルファベット 上の DFA を次の表で定める。状態は 、初期状態は 、受理状態は と である。
| 状態 | 0 を読む | 1 を読む |
|---|---|---|
この DFA が受理する長さ の文字列の個数を求めよ。
手順1(初期値): とする。
手順2(行き先ごとの読み替え): 各状態に入ってくる遷移は次のとおりである。
- に入る遷移:
- に入る遷移:
- に入る遷移:
よって更新式は
となる。
手順3(表を埋める): は順に次のようになる。
- :
- :
- :
- :
- :
- :
- :
- :
- :
手順4(検算): この DFA は全状態・全文字について遷移が定義されている。各段の和は で、確かに になっている。例えば では である。
手順5(受理状態の和): 。
なお、この DFA が受理するのは「 を部分文字列として含まない(連続する を含まない)文字列」である。
答え:
初期値をすべての状態で としたり、長さ 1 から始めて としたりしてしまう誤り。正しくは、初期状態にいるのは空文字列だけなので、 とし、他はすべて とする。
入ってくる遷移ではなく、出ていく遷移で式を作ってしまう誤り。例えば例題の表の の行を見て、行き先が だからと としたり、 の行から としたりしてしまう。正しくは、 となる組 、つまり に入ってくる遷移の元の状態の値を足す。 に入る遷移は だけなので である。 に入る遷移は なので である。
同じ状態から 2 つの文字で同じ行き先に行く遷移を、1 回しか数えない誤り。例の では である。したがって ではなく、正しくは である。
最後に全状態の和をとったり、受理状態でない状態まで足したりしてしまう誤り。例で と答えるのは誤りで、正しくは受理状態 だけを足して とする。また、更新を 回で止めたり 回行ったりしないよう、添字 が文字列の長さと一致していることを確かめる。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
長さ の文字列 (全部で 個)のうち、 に受理されるものの個数を求めよ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は と の 2 つであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
が受理する長さ の文字列( 上の文字列)の個数を求めよ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は と の 2 つであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
上の長さ の文字列(全部で 個)のうち、 に受理されるものの個数を求めよ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 \\ 入力 | ||
|---|---|---|
上の長さ の文字列のうち、 が受理するものの個数を求めよ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
を 以上の整数とする。 が受理する長さ の文字列の個数を の式で表せ。
アルファベット 上の決定性有限オートマトン を次で定める。状態の集合は 、初期状態は 、受理状態の集合は であり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 |
|---|---|---|
0 以上の整数 に対し、 が受理する長さ の文字列(長さ の文字列は空列 のみとする)の個数を とする。すべての 0 以上の整数 について
が成り立つことを証明せよ。
アルファベット 上の決定性有限オートマトン を考えます。状態の集合は 、初期状態は 、受理状態は のみです。遷移関数 は次の表で与えられます。
| 状態 | |||
|---|---|---|---|
を 以上の整数とします。 が受理する長さ の文字列の個数を の式で求めてください。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる(表の各欄は、左の状態で上の文字を読んだときの遷移先)。
| 状態 | |||
|---|---|---|---|
を正の整数とする。 が受理する長さ の文字列( の文字を 個並べたもの)の個数を の式で求めよ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | |||
|---|---|---|---|
0 以上の整数 に対して、 が受理する長さ の文字列( 上の文字列)の個数を とする(長さ の文字列は空文字列 1 個だけである)。 を の式で表せ。