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

オートマトン・形式言語の問題

難易度 2教科書の演習問題レベル大学数学 オートマトン・形式言語

終端記号 、非終端記号 、開始記号 をもち、次の生成規則からなるチョムスキー標準形の文脈自由文法 を考える。

長さ の文字列

は で生成される。 の(開始記号 を根とする)導出木の個数を求めよ。

この問題で使うもの

この問題を解けるようになるまで(3 技能)
算数中学高校大学大学院

読み込み中…

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

一覧で見る(前提が先)
  1. 文脈自由文法の導出と導出木
  2. CYK 法
  3. 導出木の個数の数え上げ

ヒント

行き詰まったら、上から順に 1 つずつ開いてください。

ヒント 1

CYK 法の表で、各部分文字列について「 から導く導出木が何個あるか」を数えていく。 は とまとめて考えるとよい。

ヒント 2

を開き括弧、 を閉じ括弧とみると、 から導かれるのは対応のとれた括弧列である。 を「深さが 0 に戻る位置」で区切ってみよう。

ヒント 3

と 4 ブロックに分かれ、各ブロックの導出木はそれぞれ 1 個。ブロック 個の連結の個数 は を満たし、 となる。

答えと解説

答えを見る
結果を記録する(このブラウザにだけ保存されます):
解説を読む

規則 , , をまとめると、 の規則は実質的に

である。したがって から導かれる文字列は、 を開き括弧、 を閉じ括弧とみたときの空でない「括弧の対応がとれた文字列」である。

部分文字列 に対し、 を根として を導く導出木の個数を とおく(CYK 法の表の各欄に、非終端記号 の導出木の個数を書き込むことに相当する)。

(1) の分解. 括弧の深さを左から数えると、 は深さが に戻る位置で

の つのブロックに分かれる。各ブロックは、それ以上「対応のとれた 2 つの空でない文字列の連結」に分けられない。

(2) 各ブロックの導出木の個数.
- : のみが使える( は長さ の が存在しないので不可、 は が長さ の文字列を導けないので不可)。よって 。
- : で とし、 で とする。内側の は 通り。 は , , のどの分け方でも両側が から導けないので不可。 は長さ のときだけ。よって 。

(3) 連結部分の導出木の個数. 2 つ以上のブロックの連結 では、根の規則は に限る( を使うと で が対応のとれた文字列になり、 が 1 ブロックになってしまう)。 で分けるとき、左右がともに から導けるのはブロックの境目で分けるときだけなので

が成り立つ。各ブロックで であるから、ブロックの個数を として とおくと

は ブロックの連結なので、導出木の個数は である(これはカタラン数 に等しい)。

答え:

別解

, なので、 を開き括弧、 を閉じ括弧とみなす。 を に代入すると、 の規則は実質 と同じで、各導出木はこれらの規則の適用に一対一に対応する( は 、 は )。

から導出される文字列は空でない釣り合った括弧列だけである。 は で、原始的な(それ以上分けられない)ブロックに分けると

の 4 個になる。

1. の分割は、左右とも釣り合った文字列になる位置、すなわちブロックの境界でしか起こらない。
2. 各ブロックの導出木の個数はどれも 1 である。 は のみ。 は , で内側の が を導出する 1 通りのみ。
3. したがって、ブロック 4 個を の二分木で結ぶ方法の数、すなわち 4 個の積の括弧付けの数が答えになる。これはカタラン数 である。

検算として CYK で数える。 に対し、部分列 の木の個数を とすると、( のとき最後の項は 1)である。 型の 3 ブロックは 2 通り、4 ブロックは 通り(分割点が 1 個目・2 個目・3 個目の後のとき、それぞれ 、、)で、上の結果と一致する。

答え: 5

この問題の確認

AI が作成した問題です。公開前に次の確認を行いました。確認の方法について

間違いを報告する

この問題の誤り・分かりにくい点・難易度や学年のずれを知らせる
どこについての報告ですか

報告の内容と問題の番号を保存します。名前やメールアドレスは保存しません。

関連する問題