言語がコンテキストフリーかどうかをテストするアルゴリズム


18

言語がコンテキストフリーかどうかをテストするためのアルゴリズム/体系的な手順はありますか?

つまり、代数形式で指定された言語(ようなものを考えてください)で、その言語がコンテキストフリーかどうかをテストします。学生が宿題をすべて手伝うためのWebサービスを作成していると想像してください。言語を指定すると、Webサービスは「コンテキストなし」または「コンテキストなし」を出力します。これを自動化する良い方法はありますか?L={anbnan:nN}

もちろん、ポンピング補題、オグデンの補題、パリフの補題、インターチェンジ補題など、手動校正のテクニックがあります。ただし、それらはいずれかの時点で手動の洞察を必要とするため、それらをアルゴリズムに変換する方法は明確ではありません。

私は見Kavehが他の場所で書かれた、すべての可能な言語で作業に任意のアルゴリズムには希望がないようですので、非文脈自由言語のセットが帰納的可算でないこと。したがって、Webサービスは「コンテキストフリー」、「コンテキストフリーではない」、または「わからない」を出力できる必要があると思います。教科書で見られる可能性のある多くの言語で、「私にはわからない」以外の答えを提供できることが多いアルゴリズムはありますか?このようなWebサービスをどのように構築しますか?


この質問を適切にするには、ユーザーが言語を指定する方法を決定する必要があります。私は提案を受け入れますが、私はこのようなことを考えています:

L={E:S}

ここで、はワード式で、は長さ変数の線形不等式のシステムで、次の定義があります。ES

  • 各ワード表現です。(これらは任意の単語を保持できる変数を表します。)x,y,z,Σ

  • それぞれワード表現です。(暗黙的に、であるためは基礎となるアルファベットの単一のシンボルを表します。)a,b,c,Σ={a,b,c,}a,b,c,

  • 各あれば、単語表現で可変長のです。aη,bη,cη,η

  • 単語表現の連結は単語表現です。

  • 各長さ可変です。(これらは、任意の自然数を保持できる変数を表します。)m,n,p,q,

  • それぞれ長さ変数です。(これらは対応する単語の長さを表します。)|x|,|y|,|z|,

これは、教科書の演習で見られる多くのケースを処理するのに十分なようです。もちろん、必要に応じて、代数形式で言語を指定する他のテキストによる方法に置き換えることができます。


言語の規則性から始める方が簡単ではないでしょうか?
ユヴァルフィルマス

@YuvalFilmus、きっと!あなたがそれについて言及した今、それは素晴らしいアイデアです。この問題は通常の言語に適していると思いますか?あなたがそれが価値があるかもしれないと思うならば、私は通常の言語について対応する人に尋ねたいです。
DW

2
通常の言語では確かに簡単です。ところで、一般的な決定不能性は、言及した形式の言語には必ずしも適用されません。
ユヴァルフィルマス

4
この問題はおそらく未解決だと思います。少なくとも特定のケースはcstheory.stackexchange.com/questions/17976です。より一般的な問題に対して決定不能になる方法があるかもしれませんが、私にはわかりません。
sdcvvc

言語でいくつかの例の単語を与えると便利でしょう。コンピューターサイエンスチャット
vzn 14

回答:


0

ライスの定理、チューリングマシンによって受け入れられた言語は任意の非自明な性質を持っているかどうかを確認するために(ここでは文脈自由であることは)決定可能ではありません。そのため、答えを期待するためにチューリングが完全ではないようにするために、認識機械(または説明)のパワーを制限する必要があります。

一部の言語の説明では、答えは簡単です。正規表現によるものである場合、それは正規であるため、コンテキストがありません。文脈自由文法による場合は、同じ。


私はあなたのすべてのコメントに同意しますが、これが質問にどのように答えるか、この方法を使用して質問に答えるかどうかはわかりません。私はそれらすべての事実を知っています。言語を指定する特定の方法を説明します。チューリング完全であることを提案していますか?私にはチューリング完全ではないようです。線形不等式のシステムはチューリング完全ではないため、チューリング完全ではないように既に十分に制限していると思われます。また、言語を指定するために私が与えた方法については、正規表現でも文脈自由文法でもないので、簡単ではありません。
DW

-2

プッシュダウンオートマトンはどの言語でも受け入れられますが、CFLです。言語がCFLかどうかを判断するための詳細な内訳を次に示します。言語がCFLかどうかを確認します


これはアルゴリズムではありません。
xskxzr

これがどのように質問に答えているのかわかりません。言語はPDAによって受け入れられる場合に限りコンテキストに依存しないことを知っていますが、それは質問で要求された形式のアルゴリズムを見つける助けにはならないようです。リンクするgeeksforgeeksの記事では、この問題に対する完全なアルゴリズムは提供されていません。それは、より簡単な網羅的ではない特別なケースをリストするだけです(そして、その文のいくつかは少し大ざっぱ/疑わしいので、それは素晴らしいリファレンスではありません)。
DW

私の知る限り、そのためのよく構成されたアルゴリズムはまだありません。(間違っている場合は修正してください)。最善の方法は、ケースを確認することです。
SiluPanda

-3

CFGを確認するだけの場合は、JFLAPソフトウェアを試してください。JFLAP開発者にソフトウェアのコードまたはアルゴリズムを提供するよう依頼することもできます。JFLAPはhttp://www.jflap.org/jflaptmp/から入手できますが、無料ですが、JDKまたはJREなどが必要です。または、他の同様のソフトウェアとその開発者を試すことができます。


1
これが質問に答えるかどうかはわかりません。JFLAPには、数学表記で言語を受け入れ、コンテキストフリーであるかどうかを示す機能がありません。
ユヴァルフィルマス

Sipser bookの定理2.20言語は、プッシュダウンオートマトンがそれを認識する場合にのみ、コンテキストに依存しません。そして、あなたは文法からJFLAPにPDAを構築することができます
ハシーブ・ハッサンアシフ

JFLAPに入れることのできない数学的表記については正しいかもしれませんが、文法のすべてのルールを置くことができ、PDAに変換するか、CFGまたはその他のエラーではないと言うことができます
Haseeb Hassan Asif

を文法としてどのように表現しますか?また、無制限の文法が文脈自由言語を生成するかどうかを判断することはおそらく決定できないので、JFLAPがそれを行うことができるとは思わない。{anbncn:nN}
ユヴァルフィルマス

1
JFLAPは文脈自由文法を同等のPDAに変換できると思いますが、これはここではまったく役に立ちません。
ユヴァルフィルマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.