オートマトン・形式言語の問題
終端記号 、非終端記号 、開始記号 をもち、次の生成規則からなるチョムスキー標準形の文脈自由文法 を考える。
文字列 について、 を根とし を生成する導出木(構文木)の個数を求めよ。
この問題で使うもの
- 導出木の個数の数え上げ(説明と入口の問題)
この問題を解けるようになるまで(3 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
CYK 法の表の各欄に、非終端記号の集合ではなく「その記号を根としてその部分文字列を生成する導出木の個数」を書き込む方法を使う。
ヒント 2
を、長さ 1, 2, 3, 4 の順に計算する。積は左右の部分木の選び方、和は規則と分割位置の違いに対応する。
ヒント 3
長さ 2 では 、。長さ 3 では ( と から 1 ずつ)、( から)。あとは全体の欄 で のそれぞれについて分割位置ごとの積を足す。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
とし、 を「非終端記号 を根として部分文字列 を生成する導出木の個数」とする。CYK 法と同じく短い部分文字列から順に表を埋めるが、各欄には集合ではなく個数を記録する。規則 と分割位置 について
で計算する(左右の部分木を独立に選べるので積、規則や分割位置が違えば別の木なので和)。
長さ 1:、、、。ほかは 。
長さ 2:
- : より 。 は右辺の各非終端記号が該当する欄に現れないので 。
- : より 。ほかは 。
- :どの規則でも 。
長さ 3:
- :
- : で ( は )。
- : で ( は )。
- : より 。
よって 。 は 。
- :
- : で 。
- : で 。
よって 。 は ( など)。
ここまでの表( でないものだけ記す):
| 欄 | 個数 |
|---|---|
長さ 4: の について
- : で 、、。合計 。
- : で 。 は で 。合計 。
- : で 。 は で 。合計 。
したがって 。
(確認:3 つの木は のもの、 で左の が のもの、 で左の が のもの。)
答え:
別解
CYK 法の要領で、各区間 を非終端記号が生成する導出木の個数を数える。 の位置を 1〜4 とする。
長さ 1:。
長さ 2:
- : より 。
- : より 。
- : を生成する規則はないので 0。
長さ 3:
- : は 。 は 。 は なので 0。よって 。また 、。
- : は が 0 なので 0。 は 。よって 。
長さ 4、:
- :
- :
- :
合計は 。
検算:3 本の木を実際に書き出す。
1. 、内側 、。
2. 、内側 、。
3. 、、内側 。
この 3 本が過不足なく得られる。