言語がコンテキストフリーかどうかをテストするアルゴリズム
言語がコンテキストフリーかどうかをテストするためのアルゴリズム/体系的な手順はありますか? つまり、代数形式で指定された言語(ようなものを考えてください)で、その言語がコンテキストフリーかどうかをテストします。学生が宿題をすべて手伝うためのWebサービスを作成していると想像してください。言語を指定すると、Webサービスは「コンテキストなし」または「コンテキストなし」を出力します。これを自動化する良い方法はありますか?L={anbnan:n∈N}L={anbnan:n∈N}L=\{a^n b^n a^n : n \in \mathbb{N}\} もちろん、ポンピング補題、オグデンの補題、パリフの補題、インターチェンジ補題など、手動校正のテクニックがあります。ただし、それらはいずれかの時点で手動の洞察を必要とするため、それらをアルゴリズムに変換する方法は明確ではありません。 私は見Kavehが他の場所で書かれた、すべての可能な言語で作業に任意のアルゴリズムには希望がないようですので、非文脈自由言語のセットが帰納的可算でないこと。したがって、Webサービスは「コンテキストフリー」、「コンテキストフリーではない」、または「わからない」を出力できる必要があると思います。教科書で見られる可能性のある多くの言語で、「私にはわからない」以外の答えを提供できることが多いアルゴリズムはありますか?このようなWebサービスをどのように構築しますか? この質問を適切にするには、ユーザーが言語を指定する方法を決定する必要があります。私は提案を受け入れますが、私はこのようなことを考えています: L={E:S}L={E:S}L = \{E : S\} ここで、はワード式で、は長さ変数の線形不等式のシステムで、次の定義があります。EEESSS 各ワード表現です。(これらは任意の単語を保持できる変数を表します。)x,y,z,…x,y,z,…x,y,z,\dotsΣ∗Σ∗\Sigma^* それぞれワード表現です。(暗黙的に、であるためは基礎となるアルファベットの単一のシンボルを表します。)a,b,c,…a,b,c,…a,b,c,\dotsΣ={a,b,c,…}Σ={a,b,c,…}\Sigma=\{a,b,c,\dots\}a,b,c,…a,b,c,…a,b,c,\dots 各あれば、単語表現で可変長のです。aη,bη,cη,…aη,bη,cη,…a^\eta,b^\eta,c^\eta,\dotsηη\eta 単語表現の連結は単語表現です。 各長さ可変です。(これらは、任意の自然数を保持できる変数を表します。)m,n,p,q,…m,n,p,q,…m,n,p,q,\dots それぞれ長さ変数です。(これらは対応する単語の長さを表します。)|x|,|y|,|z|,…|x|,|y|,|z|,…|x|,|y|,|z|,\dots これは、教科書の演習で見られる多くのケースを処理するのに十分なようです。もちろん、必要に応じて、代数形式で言語を指定する他のテキストによる方法に置き換えることができます。