オートマトン・形式言語の問題
終端記号 、非終端記号 、開始記号 をもち、次の生成規則からなるチョムスキー標準形の文脈自由文法 を考える。
長さ の文字列 (左から順に の 文字)について、根が である の導出木の個数を求めよ。
この問題で使うもの
- 導出木の個数の数え上げ(説明と入口の問題)
この問題を解けるようになるまで(3 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
CYK 法の表の各欄に、非終端記号の集合ではなく「その非終端記号から部分文字列 を生成する導出木の個数」を記録する技能を使う。
ヒント 2
を、長さ 1 の欄から順に計算する。長さ 1 の欄は , から決まる。
ヒント 3
長さ 2 では 、長さ 3 では 、長さ 4 では , となる。最後に を について足し合わせる。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
とし、 とする。部分文字列 を非終端記号 から生成する導出木の個数を と書く。CYK 法と同じく短い部分文字列から順に表を埋めるが、各欄には記号の集合ではなく導出木の個数を記録する。規則 と分割位置 ()について
で計算する(分割位置と使う規則が違えば導出木の根の付近の形が違うので、重複なく数えられる)。以下、 でない値だけを書く。
長さ 1:, より
, 。
長さ 2: は などが なのでどこでも 。 より
、。
の欄はすべて 。
長さ 3:
。
。
の欄:、。
長さ 4:
。
。
長さ 5(全体): について で和をとる。
よって の導出木は 個である。これは の木( と に分ける、すなわち に相当)と、 の木( と に分ける、すなわち に相当)の 2 通りに対応している。
答え:
別解
生成規則 、 より、 は を導出する。したがって は実質 であり、 は と が交互に並ぶ文字列を導出する。
について、根の規則 で を が導出する前半と が導出する後半に分ける。 は で始まるので、分け方は次の 2 通りである。
1. 前半が 、後半が のとき。
で が 、 が を導出する。 が を導出する木は で 、 とするものだけなので 1 個である。
この場合の導出木は 1 個。
2. 前半が 、後半が のとき。
前半を が導出する木は 1 個(上と同じ)。後半を が導出する木は 、 の 1 個。
この場合の導出木は 1 個。
前半が や空になる分け方は、 が少なくとも 2 文字を導出するため不可能である。
合計 個となる。これは における 2 つの括弧づけ と に対応し、カタラン数 とも一致する。