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

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

難易度 3期末試験の応用レベル大学数学 オートマトン・形式言語

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

文字列 (長さ )について、 における の相異なる構文木(導出木)の個数を求めよ。なお、これは から への相異なる最左導出の個数に等しい。

この問題で使うもの

ヒント

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

ヒント 1

CYK 法の表の各マスに、非終端記号の集合ではなく「その非終端記号から部分文字列を導く構文木の個数」を書き込んで数えよう。 は , を作るための補助記号と見なせる。

ヒント 2

が導く文字列は と の個数が等しい。部分文字列 の個数 は、両端が か なら を加え、さらに の分割 を加えて求まる。

ヒント 3

長さ 6 の部分文字列について計算すると , , となる。あとは全体 について、包む場合と分割の場合を合計すればよい。

答えと解説

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

方針 CYK 法の表に「その非終端記号から部分文字列を導く構文木の個数」を書き込む(数え上げ版 CYK)。

とし、部分文字列 を から導く構文木の個数を とする。

準備 1( の消去) , 以外に の規則はないので、, と見てよい。また はそれぞれ だけを導く。よって の構文木は、規則

による構文木と 1 対 1 に対応する。

準備 2( が導く文字列) どの規則も と を同数ずつ加えるので、 が導く文字列は と の個数が等しい空でない文字列に限る。 を の( の個数)( の個数)とすると

であり、 なら である。特に長さが奇数なら 。

漸化式 長さ では ( または のとき)。長さ 以上では、両端が または のときの「包む」規則と の分割を合わせて

となる。和は の範囲を動くが、 となるのは偶数長の部分だけである。

長さ 2 , , , , 。 と は 。

長さ 4
- :両端が なので包む規則はない。分割は 。よって 。
- :包む規則から 。分割 。よって 。
- :包む規則はない。分割 。よって 。
- , は , より 。

長さ 6
- :包む規則から 。分割は と 。よって 。
- :包む規則から 。分割は と 。よって 。
- :包む規則から 。分割は と 。よって 。

長さ 8  の両端は なので

これを元の文法で確かめる。 の場合は で が を導くので 通りである。 の場合は 通りである。 は先頭が でないので使えず、 は長さ の文字列にしか使えない。合計は で一致する。

よって構文木の個数は である。

別解

この文法の言語は、規則 と同じ形になる。 は 、 は を表し、内側の は空でない。

の部分文字列 を から導出する構文木の個数を とする。漸化式は次のとおり。
- 長さ 2 のとき、 または なら 、それ以外は 。
- 長さ 4 以上のとき、( による分割)に、両端が異なる文字( または )のとき を加える。

長さ 2: 。。

長さ 4:
- (abaa は a と b の個数が等しくない)
- (baab)(両端が同じ b なので包みなし)
- (aabb)
- (abba)(両端が同じ a なので包みなし)
- (bbab は a と b の個数が等しくない)

長さ 6:
-
-
-

長さ 8:
。

よって構文木の個数は 7。

この問題の確認

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

間違いを報告する

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

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

関連する問題