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

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

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

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

文字列 について、 における の構文木(導出木)の個数を求めよ。ここで、構文木の個数は の最左導出の個数に等しい。

この問題で使うもの

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

読み込み中…

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

一覧で見る(前提が先)
  1. 文脈自由文法の導出と導出木
  2. CYK 法
  3. 導出木の個数の数え上げ
  4. 樹形図で数え上げる
  5. 積の法則と和の法則
  6. 和の法則・積の法則と樹形図

ヒント

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

ヒント 1

と はそれぞれ、 が生成する文字列の左端・右端に を 1 つ付け加える規則です。 から生成される文字列の形を考えましょう。

ヒント 2

構文木は「左に を付ける」「右に を付ける」の選び方の列と 1 対 1 に対応します。

ヒント 3

では の左に が 2 個、右に が 2 個あります。長さ 4 の列で、左と右をそれぞれ 2 回ずつ選ぶ並べ方を数えましょう。

答えと解説

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

生成される言語の形. からは しか生成されない。 に規則 を使うと左に が 1 つ、 を使うと右に が 1 つ付き、最後に で終わる。したがって の構文木は、根から伸びる の鎖に沿って「左に を付ける(L)」「右に を付ける(R)」を何回か選び、最後に を置いたものである。L を 回、R を 回使うと、生成される文字列は になる。

対応の確認. 逆に、構文木はこの L, R の並び(長さ の列)で完全に決まり、異なる列からは異なる構文木ができる( の鎖の各段で使った規則が異なるから)。

数え上げ. は , の場合なので、構文木の個数は、長さ 4 の列で L を 2 個・R を 2 個並べる方法の数に等しく

CYK 法による検算. 部分文字列 から を導出する構文木の個数を とする(, )。 の部分木は必ず を含むので、 のときだけ で、、(左端の を に、または右端の を に分ける。ほかの分割では片側が の列になり の 1 文字か にならない)。これより
, , , , , , , となり、一致する。

答え:

別解

この文法で から導出される文字列は の形である。 を使うと が 1 つだけ生じ、 は右に を、 は左に を 1 つ付け加えるからである( のみ)。

は の左に が 2 個、右に が 2 個ある。構文木は、根から順に (右端の を外側から取り除く)か (左端の を取り除く)のどちらを使うかの列で決まる。最終的に で終わるまでに規則を 4 回使い、そのうち が 2 回、 が 2 回である。この列と構文木は 1 対 1 に対応する(異なる列は根に近い側の最初に異なる位置で、異なる木を与える)。

よって個数は 。

検算: 一般に の構文木の個数は で、 のとき ( 先か 先か)となり、手で数えた結果と一致する。

この問題の確認

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

間違いを報告する

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

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

関連する問題