Chomsky Hierarchyでは、タイプ3言語は外部メモリのない状態マシン(すなわち、有限オートマトン)によって認識され、タイプ2は単一スタックの状態マシン(すなわち、プッシュダウンオートマトン)およびタイプ0によって認識されます。2つのスタックを持つステートマシン(または、チューリングマシンの場合と同じように、テープ)、Type 1言語はこの図にどのように適合しますか?また、言語がタイプ0だけでなくタイプ1であると判断することにはどのような利点がありますか?
Chomsky Hierarchyでは、タイプ3言語は外部メモリのない状態マシン(すなわち、有限オートマトン)によって認識され、タイプ2は単一スタックの状態マシン(すなわち、プッシュダウンオートマトン)およびタイプ0によって認識されます。2つのスタックを持つステートマシン(または、チューリングマシンの場合と同じように、テープ)、Type 1言語はこの図にどのように適合しますか?また、言語がタイプ0だけでなくタイプ1であると判断することにはどのような利点がありますか?
回答:
状況依存言語は、線形空間と非決定論を使用して、チューリングマシンが認識できる言語です。指数時間を使用してこのようなチューリングマシンをシミュレートできるため、指数時間でそのような言語を認識することができます。一部の状況依存言語を認識する問題は -completeであることに注意してください。これは、指数関数的時間よりもうまくやることができないことを確信しています。
これをタイプ0の言語と比較すると、少なくとも、言語を認識するのにかかる時間について何かを言うことができます。タイプ0の言語は決定不可能な場合もあります。停止するすべてのチューリングマシンの言語はタイプ0の言語ですが、この言語を認識することが停止の問題であるため、決定できません。
文脈依存文法は実際にはあまり役に立ちません。文脈自由文法は直感的に使用できますが、Wikipediaの例が示すように、文脈依存文法はすぐにかなり厄介になります。多項式空間を使用するプログラムは、はるかに簡単に設計できます(そして完全性により、アルゴリズムの空間使用量よりも多項式的に大きい同等のCSGの存在が保証されます)。
それらが存在する理由は、それらが文脈自由文法の非常に自然な拡張を形成することです(どの生成が有効であるかを文脈が決定できるようにします)。これにより、おそらくチョムスキーはそれらを定義し、タイプ1言語と名付けました。この定義は、コンピューターが今日ほど速くなる前に行われたことを忘れないでください。プログラマーよりもフォーマルな言語理論家の方が興味を持っています。
無制限の文法はさらに奇妙になります:文脈に応じて、非終端記号を「拡張」し、それをプロダクションに置き換えるという概念はもはやありません。コンテキストを自由に変更することもできます。これにより、無制限の文法の操作がさらに直感的でなくなります。プログラムは同等であり、はるかに直感的です。
一般的に言えば、通常、特定の言語属するより小さいクラスを知りたいと思うでしょう。これは、より単純なメカニズム(オートマトン、文法、正規表現など)でより小さいクラスを認識/受け入れ/生成できるためです。これは望ましいことです。
たとえば、通常の言語のクラスには優れたクロージャープロパティがあり、DFA を指定すると、単語がL (A)に属することを線形時間でテストできます。対照的に、チューリングマシンでは、出力を読み取るためだけの線形時間が必要です。これは通常、実際に処理を開始する前に発生します。
つまり、クラスが小さい場合は、単語が言語に属しているかどうかを判断する問題を解決するために必要な計算能力が少なくなります。
ウィキペディアによると、チョムスキーは自然言語の構文を記述するために、文脈依存文法(タイプ1)を定義しました。これは、自然言語(英語の文法的に正しい文の構文)ではなく、数学(算術式の構文など)で使用される文字列のファミリーを記述するために導入された他のクラスの言語とは少し異なります。 。
コンテキストフリー言語では、入力解析のどの時点でも、オートマトンはスタックで定義された状態にあります。各プロダクションは、使用場所に関係なく入力を消費するという同じ動作をします。
これは、各プロダクションがスタックのより深いものによって生成されるサブ言語のサブ言語を生成するという興味深い特性につながります。したがって、特定の入力で生成および消費されるプロダクションの各ペアAおよびBについて、3つの可能なケースがあります:
これは、次のことが起こらないことを意味します。
それとは対照的に、状況依存言語では、各プロダクションの動作はそれが使用される場所に依存するため、プロダクションで消費される入力はスタック内のより深いサブ言語のサブ言語ではありません(実際、スタックは動作しません)。そして、dが起こる可能性があります。
現実の世界では、状況依存言語が意味をなすのは、<b>太字テキスト</ b>、<i>斜体テキスト</ i>、および<u>下線付きテキスト</ u>を「これは、<u>テキストが<i>混合</ u>重複するタグ</ i>」のように、これらのhtmlタグを重複させます。それを解析し、すべての開始タグが終了タグと一致するかどうかを確認するために、PDAはコンテキストフリーではないので、LBAで簡単に実行できることに注意してください。
Chomsky階層のすべての言語クラスの中で、補完されているのは通常のコンテキスト依存言語のみです。したがって、これは状況依存言語のユニークな機能の一種です。
文脈自由言語とは対照的に、CSは交差点とシャッフルプロダクトの下でも閉じられます。
タイプ1言語は、サイズが入力サイズに対して線形であるテープの一部のみを使用できる非決定的チューリングマシンである線形有界オートマトンによって決定できます。
他の多くの人は、タイプ1言語は線形有界オートマトンによって認識できる言語であると述べています。停止の問題は線形有界オートマトンで決定できます。つまり、Turning Machinesで認識される言語では計算上決定できない他の多くのプロパティは、Type-1言語で決定可能です。
確かに、停止問題が線形有界オートマトンで決定可能であるという証拠は、有限量のテープでは有限数の状態しか入力できないという事実に依存しているため、その多くのステップ内で停止しない場合、ループし、停止することはありません。この証明は、技術的にはすべての実際のコンピューター(メモリも有限)に適用されますが、コンピューター上で実行されるプログラムの停止の問題を解決する上で実際的な利点はありません。