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

遷移行列による受理文字列数の一般項

DFA の遷移を数える行列 ( は から へ移る記号の個数)を作り、 の固有値・対角化を使って、受理される長さ の文字列の個数 を の式で表せる

前提

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

読み込み中…

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

一覧で見る(前提が先)
  1. 決定性有限オートマトンの動作と受理判定 (大学数学 オートマトン・形式言語)
  2. 樹形図で数え上げる (算数 場合の数)
  3. 積の法則と和の法則 (算数 場合の数)
  4. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  5. 状態ごとの文字列数の漸化式 (大学数学 オートマトン・形式言語)
  6. 三角形の角の大きさ (算数 平面図形)
  7. 対頂角と平行線の同位角・錯角 (中学数学 平面図形)
  8. 三角形の外角と角の組み合わせ (中学数学 平面図形)
  9. 小数の四則計算 (算数 計算と数のきまり)
  10. 分数のたし算・ひき算 (算数 計算と数のきまり)
  11. 分数のかけ算・わり算 (算数 計算と数のきまり)
  12. 小数と分数のまじった計算 (算数 計算と数のきまり)
  13. 逆算(□ を求める) (算数 計算と数のきまり)
  14. 正負の数の加法・減法 (中学数学 数と式)
  15. 四則の混じった計算の順序 (算数 計算と数のきまり)
  16. 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
  17. 分配法則を使った計算のくふう (算数 計算と数のきまり)
  18. 文字式の計算(同類項・分配法則) (中学数学 数と式)
  19. 1 次方程式の解き方 (中学数学 方程式)
  20. 二等辺三角形の角 (中学数学 平面図形)
  21. 平行四辺形と特別な四角形の性質 (中学数学 平面図形)
  22. 三角形・四角形の面積 (算数 平面図形)
  23. 約数の見つけ方 (算数 整数の性質)
  24. 素因数分解と約数の個数 (算数 整数の性質)
  25. 平方根の意味と根号の簡単化 (中学数学 数と式)
  26. 三平方の定理 (中学数学 相似と三平方の定理)
  27. 乗法公式による展開 (中学数学 数と式)
  28. 折り返した図形の角と長さ (中学数学 平面図形)
  29. 三平方の定理と平面図形 (中学数学 相似と三平方の定理)
  30. ベクトルの演算と成分 (数学C ベクトル)
  31. 行列の和・積と 2 次の逆行列 (大学数学 線形代数)
  32. 順列・円順列・重複順列 (数学A 場合の数と確率)
  33. 行列式 (大学数学 線形代数)
  34. 掃き出し法と連立 1 次方程式 (大学数学 線形代数)
  35. 行列の階数と解の存在 (大学数学 線形代数)
  36. ベクトル空間・一次独立・基底・次元 (大学数学 線形代数)
  37. 円の周の長さと面積 (算数 平面図形)
  38. おうぎ形の弧の長さと面積 (算数 平面図形)
  39. 弧の長さからおうぎ形の中心角と面積を求める (中学数学 平面図形)
  40. 特別な直角三角形の辺の比 (中学数学 相似と三平方の定理)
  41. 弧度法と単位円による三角関数 (数学II 三角関数)
  42. 加法定理と 2 倍角・半角・積和の公式 (数学II 三角関数)
  43. 線形変換と行列 (大学数学 線形代数)
  44. 核と像と次元定理 (大学数学 線形代数)
  45. 固有値と固有ベクトル (大学数学 線形代数)
  46. 掃き出し法による逆行列 (大学数学 線形代数)
  47. 基底の変換と表現行列 (大学数学 線形代数)
  48. 対角化と行列の累乗 (大学数学 線形代数)

説明

DFA の状態どうしの移り方を、記号の個数を成分とする行列 にまとめます。こうすると、受理される長さ の文字列の個数を、 のような具体的な値ごとではなく、 の式(一般項)として求められます。行列 を対角化して を の式で表すのが中心の作業です。言語の大きさの増え方を調べるときや、条件付きの文字列を数える組合せの問題で使います。

なぜそうしてよいのか

状態を と番号付けし、 を「 となる記号 の個数」とします。長さ の文字列を読んで各状態に到達する個数を並べた行ベクトルを とおきます。前提の漸化式 では、右辺で がちょうど 回足されます。したがって となり、行列で書くと です。

長さ の文字列は空文字列だけで、初期状態 にとどまります。よって ( の成分だけ 、他は )で、これを繰り返すと になります。受理される文字列の個数は、受理状態の集合 に属する状態の成分の和です。 の状態の成分を 、それ以外を とした列ベクトルを とすると、求める個数は です。同じことを別の見方で言うと、 は「 から 文字で に着く文字列の個数」です。1 文字ずつの選び方を積の法則で掛け、途中で通る状態について和の法則で足したものが、行列の積の定義そのものになっています。

あとは を の式で書ければ終わりです。 が対角化できて ()となれば、 で です。そのため答えは、 によらない定数 を使って の形になります。なお、 が対角化できない場合はこの方法をそのままでは使えません。

手順

  1. 状態に順番を付け、各状態の組 について から へ移る記号の個数を数え、行列 ( がその個数)を作る。各行の和は記号の個数 になるので、これで検算する。

  2. 初期状態を表す と受理状態を表す を作り、求める個数を と書く。

  3. 特性方程式 を解いて固有値を求め、固有ベクトルを並べて と を作る。このとき対角化できること(一次独立な固有ベクトルが状態の個数だけそろうこと)を確かめる。

  4. を計算し、 を整理して の形にする。

  5. を代入し、直接数えた値(または前提の漸化式で求めた値)と一致するか確かめる。

例題

アルファベット 上の DFA を考える。状態は の 2 つで、初期状態は 、受理状態は だけである。遷移は次の表のとおり。

状態

この DFA が受理する長さ ( は 0 以上の整数)の文字列の個数 を の式で求めよ。

例題の解答

手順 1(行列を作る)
状態の順番を とします。 からは の 1 個で へ、 の 2 個で へ移ります。 からは の 2 個で へ、 の 1 個で へ移ります。よって

です。各行の和は となり、検算も合います。

手順 2(求める量を式にする)
、 なので、 です。

手順 3(対角化する)
特性多項式は なので、固有値は です。 の固有ベクトルとして 、 の固有ベクトルとして がとれます。固有値が異なるので、この 2 つは一次独立で、 は対角化できます。

手順 4( を計算する)

なので、

となります。よって です。

手順 5(小さい で確かめる)
- :式の値は 。空文字列だけが受理されるので一致します。
- :式の値は 。受理されるのは だけなので一致します。
- :式の値は 。受理されるのは の 5 個なので一致します。

なお、この DFA は「 と の個数の合計が偶数である文字列」を受理するものです。

答え:

よくある誤り

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

入口の問題

この技能を使う問題