アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 | 入力 |
|---|---|---|---|
を正の整数とする。 に受理される長さ の文字列の個数を、遷移を数える行列の対角化を用いて の式で表せ。
DFA の遷移を数える行列 ( は から へ移る記号の個数)を作り、 の固有値・対角化を使って、受理される長さ の文字列の個数 を の式で表せる
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
DFA の状態どうしの移り方を、記号の個数を成分とする行列 にまとめます。こうすると、受理される長さ の文字列の個数を、 のような具体的な値ごとではなく、 の式(一般項)として求められます。行列 を対角化して を の式で表すのが中心の作業です。言語の大きさの増え方を調べるときや、条件付きの文字列を数える組合せの問題で使います。
状態を と番号付けし、 を「 となる記号 の個数」とします。長さ の文字列を読んで各状態に到達する個数を並べた行ベクトルを とおきます。前提の漸化式 では、右辺で がちょうど 回足されます。したがって となり、行列で書くと です。
長さ の文字列は空文字列だけで、初期状態 にとどまります。よって ( の成分だけ 、他は )で、これを繰り返すと になります。受理される文字列の個数は、受理状態の集合 に属する状態の成分の和です。 の状態の成分を 、それ以外を とした列ベクトルを とすると、求める個数は です。同じことを別の見方で言うと、 は「 から 文字で に着く文字列の個数」です。1 文字ずつの選び方を積の法則で掛け、途中で通る状態について和の法則で足したものが、行列の積の定義そのものになっています。
あとは を の式で書ければ終わりです。 が対角化できて ()となれば、 で です。そのため答えは、 によらない定数 を使って の形になります。なお、 が対角化できない場合はこの方法をそのままでは使えません。
状態に順番を付け、各状態の組 について から へ移る記号の個数を数え、行列 ( がその個数)を作る。各行の和は記号の個数 になるので、これで検算する。
初期状態を表す と受理状態を表す を作り、求める個数を と書く。
特性方程式 を解いて固有値を求め、固有ベクトルを並べて と を作る。このとき対角化できること(一次独立な固有ベクトルが状態の個数だけそろうこと)を確かめる。
を計算し、 を整理して の形にする。
を代入し、直接数えた値(または前提の漸化式で求めた値)と一致するか確かめる。
アルファベット 上の DFA を考える。状態は の 2 つで、初期状態は 、受理状態は だけである。遷移は次の表のとおり。
| 状態 | |||
|---|---|---|---|
この DFA が受理する長さ ( は 0 以上の整数)の文字列の個数 を の式で求めよ。
手順 1(行列を作る)
状態の順番を とします。 からは の 1 個で へ、 の 2 個で へ移ります。 からは の 2 個で へ、 の 1 個で へ移ります。よって
です。各行の和は となり、検算も合います。
手順 2(求める量を式にする)
、 なので、 です。
手順 3(対角化する)
特性多項式は なので、固有値は です。 の固有ベクトルとして 、 の固有ベクトルとして がとれます。固有値が異なるので、この 2 つは一次独立で、 は対角化できます。
手順 4( を計算する)
なので、
となります。よって です。
手順 5(小さい で確かめる)
- :式の値は 。空文字列だけが受理されるので一致します。
- :式の値は 。受理されるのは だけなので一致します。
- :式の値は 。受理されるのは の 5 個なので一致します。
なお、この DFA は「 と の個数の合計が偶数である文字列」を受理するものです。
答え:
同じ移り先へ行く記号が複数あるのに、成分を としてしまう誤り。正しくは記号の個数を入れる。例題なら ( と の 2 個)で、 ではない。
添字の向きを逆にして を使い、 を計算してしまう誤り。これは と同じで、「受理状態から出発して に着く文字列の個数」になってしまう。正しくは を「 から へ」とし、 を計算する。
と順番を取り違える誤り。( の列が固有ベクトル)のときは、正しくは である。
固有値に があるとき、一般項 の の項を何も考えずに として、 でも同じ式が成り立つとしてしまう誤り。 なので では として扱う必要がある。式を に限って書くなど、適用できる範囲を明記する。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 | 入力 |
|---|---|---|---|
を正の整数とする。 に受理される長さ の文字列の個数を、遷移を数える行列の対角化を用いて の式で表せ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | 入力 | 入力 | 入力 |
|---|---|---|---|
を 以上の整数とする。 が受理する長さ の文字列( の記号を 個並べたもの。 のときは空文字列)の個数 を、遷移を数える行列の対角化を用いて の式で表せ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | |||
|---|---|---|---|
を正の整数とする。 が受理する長さ の文字列の個数を、遷移を数える行列の対角化を用いて の式で表せ。
アルファベット 上の決定性有限オートマトン を考えます。状態の集合は 、初期状態は 、受理状態は のみです。遷移関数 は次の表で与えられます。
| 状態 | |||
|---|---|---|---|
を 以上の整数とします。 が受理する長さ の文字列の個数を の式で求めてください。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は と の 2 つであり、遷移関数 は次の表で与えられる。
| 状態 | |||
|---|---|---|---|
を正の整数とする。 が受理する長さ の文字列の個数を の式で表せ。
アルファベット 上の決定性有限オートマトン を考える。状態の集合は 、初期状態は 、受理状態は のみであり、遷移関数 は次の表で与えられる。
| 状態 | |||
|---|---|---|---|
0 以上の整数 に対して、 が受理する長さ の文字列( 上の文字列)の個数を とする(長さ の文字列は空文字列 1 個だけである)。 を の式で表せ。