オートマトン・形式言語の問題
終端記号 、非終端記号 、開始記号 をもち、次の 4 つの生成規則からなる文脈自由文法 を考える。
文字列 は で生成される。開始記号 から を得る最左導出を書いたとき、生成規則を何回適用するか(導出のステップ数)を求めよ。
この問題で使うもの
- 文脈自由文法の導出と導出木(説明と入口の問題)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
技能「文脈自由文法の導出と導出木」を使います。開始記号 から、いちばん左の非終端記号を 1 回ずつ書き換えて をつくってみましょう。
ヒント 2
を 1 回使うごとに、外側に と が 1 個ずつ増えます。 と では が 1 個ずつ増えます。 の中の , , の個数を数えましょう。
ヒント 3
と進みます。ここから を書き換えて をつくるには、あと何回の書き換えが必要でしょうか。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
方針 開始記号 から、いちばん左の非終端記号を 1 つずつ生成規則で書き換えて をつくる(最左導出)。書き換えるたびに 1 ステップと数える。
どの規則を使うかの決め方 この文法の文形式には、非終端記号がいつもちょうど 1 個しかない。また、つくりたい文字列を見ればどの規則を使うかが 1 通りに決まる。
- を書き換えるとき、まだ外側に をつける必要があれば を、そうでなければ を使う。
- を書き換えるとき、まだ を続ける必要があれば を、最後の なら を使う。
は「 が 2 個、 が 3 個、 が 2 個」なので、次のように導出できる。
導出木との対応 この導出を導出木で表すと、根 の子が 、その の子が 、その の子が 、その の子が 、さらにその の子が 、最後の の子が となる。葉を左から読むと になり、 が で生成されることが確かめられる。導出木の内部節点(非終端記号の節点)は の 6 個で、これは規則を適用した回数と一致する。
よって、生成規則を適用する回数は 回である。
別解
文法 は 、 である。 を導出する。
が 2 個、 が 2 個あるので、 を 2 回適用する。その後 を 1 回適用する。
から を得るには、 を 2 回、 を 1 回適用する。
最左導出(各段階で非終端記号は 1 個しかないので導出は一意):
適用した規則を数える。 が 2 回、 が 1 回、 が 2 回、 が 1 回で、合計 回。
検算: 導出の各行で文字列が変化するのは 6 回で、上の矢印も 6 本である。また、各段階で非終端記号が 1 個だけなので、導出は一意に決まる。よって 6 ステップである。