この質問は、私たちの教授が解決策をタイプするにはあまりにも怠っていて、かなり悪いです。あなたの助けを前もってありがとう! 次の言語が文脈自由であることを証明してください:
は以下の言語は文脈自由であることを証明{x is an element of {a,b,c}* | the number of a's in x is greater than the number of b's or the number of c's in x}
この質問は、私たちの教授が解決策をタイプするにはあまりにも怠っていて、かなり悪いです。あなたの助けを前もってありがとう! 次の言語が文脈自由であることを証明してください:
は以下の言語は文脈自由であることを証明{x is an element of {a,b,c}* | the number of a's in x is greater than the number of b's or the number of c's in x}
{xは{B、C} *の要素であります|
a
年代の数がより大きい(:xの者の数は、Bの数やこれには2つの方法で解釈することができ、XのCさん}
の数よりも大きいですb
の数年代プラスc
の数年代)
a
の数S「sはb
の数よりも多い」の)または(a
の数 『sはc
の数よりも大きいです』 s)。ヒント1:PDAは次のように動作します。スタックが空で、入力にa
がある場合は、a
をスタックに追加します。スタックが空で、入力にb
またはc
が表示されている場合は、b
をスタックに追加します。一番上のスタックシンボルがb
で、入力にa
が表示されている場合は、スタックからb
を削除します。一番上のスタックシンボルがb
で、入力にb
またはc
が表示されている場合は、b
をスタックに追加します。一番上のスタックシンボルがa
で、入力にa
が表示されている場合は、a
をスタックに追加します。一番上のスタックシンボルがa
で、入力にb
またはc
が表示されている場合は、スタックからa
を削除します。今度は、そのようなPDAがa
の数がb
の数とc
の数の合計に等しい場合、(1)空のスタックを持つ引数を生成してください。 (2)a
がスタックの最上部にある場合は、は、b
またはc
のいずれかを見たよりも、a
のほうが見えます。 (b
またはc
のいずれかを見たよりも、a
のほうが少なかった場合は、スタックの最上部にあるb
)。 2
ヒント:まず、S 'の任意c
を無視して、S' のb
よりS 'のよりa
を有するS' のa
年代、b
年代、及びc
の任意の文字列を受け付けるPDAを構築(PDAは、上記1のヒントではc
のものを無視するように簡単に変更できます)。そして、a
の文字列、b
の文字列、c
の文字列を受け入れるPDAを構築してください。これは、b
のものを無視して、よりもa
のほうです。最後に、文脈自由を証明しようとしている言語がこれらのオートマトンによって受け入れられた言語の和集合であることを実証してください。簡単な議論で十分です。文脈自由言語は組合によって閉鎖されているので、文脈自由であることを証明するために設定した言語は文脈自由であるという主張を実証している。
さらに詳しい説明をリクエストしてください。また、新しいサイトでhttps://cs.stackexchange.com/のような質問をチェックしてください。そのサイトの今後の質問については、より良い回答が得られるかもしれません。
タスクは、言語は文脈自由文法によって生成することができることを示すことです。
ヒント:
A -> aabAc | B
B -> B|epsilon
ヒント:DFAはカウントできません。 – cHao
あなたはMath.SEでより良い回答を得るかもしれません。 –
@KendallFrey私は[CSTheory](http://cstheory.stackexchange.com/)を提案します:) –