文脈自由文法によって生成された言語を見つける


11

これはドラゴンブックからの質問です(私は翻訳ミスをお詫びします。英語版は手元にありません):

この文法によって生成される言語は何ですか?

SaSbSbSaSϵ

ここで何をするべきかわかりません。言語に関する本の定義はこれを述べています(そしてそれはほとんど章の中でそれです):

言語は、任意の解析ツリーで生成できるすべての単語のセットです。

したがって、この文法から「任意」の解析ツリーを作成する場合は、最初の2つのルールだけを使用して、再帰的に構築を続けることができます。少し検索したところ、すべてのルールを1回使用する必要があるという印象を受けましたが、よくわかりません。誰かがこの種の問題を解決するためのいくつかのヒントを提供することができればそれは非常に役に立ちます。


1
ヒント:正規表現を使用する
Bartosz Przybylski

ヒントについては、以下の回答を参照してください。あなたの質問への回答:いいえ、すべてのルールを少なくとも1回使用する必要はありません。開始記号(または公理)から始めて、終了記号(ここでは小文字)だけになるまで書き換えルールを適用します。
Hendrik Jan

空の文字列が終端記号ではないと仮定すると、私の理解では、終端記号だけが残されることは不可能ですか、それとも私は何かを誤解していますか?
dan


@dan。空の文字列が消えるので、端末のみで終了する可能性があります:。例えば。SaSbSaaSbbSaabbSaabbbSaaabbba
Hendrik Jan

回答:


6

ヒント:何の数について言うことができ、Sとの生産の言葉で?bab

誰かがこの種の問題を解決するためのいくつかのヒントを提供することができればそれは非常に役に立ちます。

ここには万能のレシピはありません。2つのCFGが同じ言語を生成するか、2つのCFLが同じ言語であるかは、一般に決定できません。有用な方法は、プロダクション中に不変のままであるプロパティに気づくことです。


5

ヒント:この文法によって生成されるいくつかの単語を作成します。パターンが見えますか?ルールを見ただけで、文法によって生成されたすべての単語のいくつかの特性を説明できますか?文法によって生成された言語について(正しい)推測があれば、それを証明するのはそれほど難しくありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.