状況依存(タイプ1)言語の重要性は何ですか?


34

Chomsky Hierarchyでは、タイプ3言語は外部メモリのない状態マシン(すなわち、有限オートマトン)によって認識され、タイプ2は単一スタックの状態マシン(すなわち、プッシュダウンオートマトン)およびタイプ0によって認識されます。2つのスタックを持つステートマシン(または、チューリングマシンの場合と同じように、テープ)、Type 1言語はこの図にどのように適合しますか?また、言語がタイプ0だけでなくタイプ1であると判断することにはどのような利点がありますか?


2
ここではcstheory.SEではなく@Sunilが示唆しているように)質問しているので、Type 1の簡単な説明/定義も追加することをお勧めします。
ジャノマ

5
@Sunilいいえ、そうではありません。これは研究レベルの質問ではありません(研究レベルの質問を除外しないため、それがここでも話題になります-少なくとも、それはarea51の議論の結果であったことを覚えています)。
sepp2k

3
@Janoma:なぜ簡単に検索できる情報を含めるのに役立つのですか(ノイズとは見なされません)?
ビットマスク

4
@Janoma一般的なガイドラインは、質問に答えることができる誰かが知らないかもしれない概念を説明するべきだと思います(ガイドラインがサイトの一部のユーザーが知らないかもしれないすべてを説明する場合、常にそれが他のSEサイトの標準ではないことは確かです)。そして、チョムスキーの階層を知らない人が質問に答えられるとは思わない。もちろん、可能な限り説明することは害になりません(質問を退屈に長くしない限り)-この場合、それが必要だとは思わない。
sepp2k

4
すべてのコンピューターサイエンス専攻は、チョムスキー階層を知っています(または知っているべきです)。他の誰もが20代で調べることができます。Wikipediaへのリンクがあれば十分です。
ラファエル

回答:


19

状況依存言語は、線形空間と非決定論を使用して、チューリングマシンが認識できる言語です。指数時間を使用してこのようなチューリングマシンをシミュレートできるため、指数時間でそのような言語を認識することができます。一部の状況依存言語を認識する問題は -completeであることに注意してください。これは、指数関数的時間よりもうまくやることができないことを確信しています。PSPACE

これをタイプ0の言語と比較すると、少なくとも、言語を認識するのにかかる時間について何かを言うことができます。タイプ0の言語は決定不可能な場合もあります。停止するすべてのチューリングマシンの言語はタイプ0の言語ですが、この言語を認識することが停止の問題であるため、決定できません。

文脈依存文法は実際にはあまり役に立ちません。文脈自由文法は直感的に使用できますが、Wikipediaの例が示すように、文脈依存文法はすぐにかなり厄介になります。多項式空間を使用するプログラムは、はるかに簡単に設計できます(そして完全性により、アルゴリズムの空間使用量よりも多項式的に大きい同等のCSGの存在が保証されます)。PSPACE

それらが存在する理由は、それらが文脈自由文法の非常に自然な拡張を形成することです(どの生成が有効であるかを文脈が決定できるようにします)。これにより、おそらくチョムスキーはそれらを定義し、タイプ1言語と名付けました。この定義は、コンピューターが今日ほど速くなる前に行われたことを忘れないでください。プログラマーよりもフォーマルな言語理論家の方が興味を持っています。

無制限の文法はさらに奇妙になります:文脈に応じて、非終端記号を「拡張」し、それをプロダクションに置き換えるという概念はもはやありません。コンテキストを自由に変更することもできます。これにより、無制限の文法の操作がさらに直感的でなくなります。プログラムは同等であり、はるかに直感的です。


しかし、状況依存言語便利です!たとえば、この議論を参照してください。
ラファエル

文脈依存は有用ですが、言語を記述する方法としての文脈依存文法はあまり有用ではありません。状況依存機能を記述するために、他の手段を使用する方が良いでしょう。
アレックス10ブリンク

しかし、答えのほとんどの部分で言語について話します。文法については、ymmw。CFGとCSGの間には、自然なモデリングアプリケーションを持つカップリング/マルチCFGなどの文法モデルがあります。
ラファエル

1
あなたは正しいです、私は私が見る言語と文法の区別にだらしがありませんでした。回答を更新しました。
アレックス10ブリンク

10

一般的に言えば、通常、特定の言語属するより小さいクラスを知りたいと思うでしょう。これは、より単純なメカニズム(オートマトン、文法、正規表現など)でより小さいクラスを認識/受け入れ/生成できるためです。これは望ましいことです。L

たとえば、通常の言語のクラスには優れたクロージャープロパティがあり、DFA を指定すると、単語がL A)に属することを線形時間でテストできます。対照的に、チューリングマシンでは、出力を読み取るためだけの線形時間が必要です。これは通常、実際に処理を開始するに発生します。ALA

つまり、クラスが小さい場合は、単語が言語に属しているかどうかを判断する問題を解決するために必要な計算能力が少なくなります。

ウィキペディアによると、チョムスキーは自然言語の構文を記述するために、文脈依存文法(タイプ1)を定義しました。これは、自然言語(英語の文法的に正しい文の構文)ではなく、数学(算術式の構文など)で使用される文字列のファミリーを記述するために導入された他のクラスの言語とは少し異なります。 。


2
「要するに、クラスが小さいほど、単語が言語に属するかどうかを決定する問題を解決するために必要な計算能力が少なくなります。正確に、しかしこれはタイプ1対タイプ0にどのように適用されますか?それがまさに質問です!
ビットマスク

ccn

8

コンテキストフリー言語では、入力解析のどの時点でも、オートマトンはスタックで定義された状態にあります。各プロダクションは、使用場所に関係なく入力を消費するという同じ動作をします。

これは、各プロダクションがスタックのより深いものによって生成されるサブ言語のサブ言語を生成するという興味深い特性につながります。したがって、特定の入力で生成および消費されるプロダクションの各ペアAおよびBについて、3つの可能なケースがあります:

  • a:Aが消費する入力は、Bが消費する入力に完全に含まれます。または
  • b:Aによって消費される入力には、Bによって消費される入力が完全に含まれます。または
  • c:Aが消費する入力は、Bが消費する入力と完全に分離しています。

これは、次のことが起こらないことを意味します。

  • d:Aによって消費される入力は、Bによって消費される入力と部分的に重複します。

それとは対照的に、状況依存言語では、各プロダクションの動作はそれが使用される場所に依存するため、プロダクションで消費される入力はスタック内のより深いサブ言語のサブ言語ではありません(実際、スタックは動作しません)。そして、dが起こる可能性があります。

現実の世界では、状況依存言語が意味をなすのは、<b>太字テキスト</ b>、<i>斜体テキスト</ i>、および<u>下線付きテキスト</ u>を「これは、<u>テキストが<i>混合</ u>重複するタグ</ i>」のように、これらのhtmlタグを重複させます。それを解析し、すべての開始タグが終了タグと一致するかどうかを確認するために、PDAはコンテキストフリーではないので、LBAで簡単に実行できることに注意してください。


7

クロージャープロパティ

Chomsky階層のすべての言語クラスの中で、補完されているのは通常のコンテキスト依存言語のみです。したがって、これは状況依存言語のユニークな機能の一種です。

文脈自由言語とは対照的に、CSは交差点とシャッフルプロダクトの下でも閉じられます


6

タイプ1の言語は、線形空間のみを使用するチューリングマシン(いわゆる線形有界オートマトン)で認識できます。


2
はい、それが定義です。しかし、この制限はどのように役立ちますか?
ビットマスク

3
CSGを認識するアルゴリズムの能力がEXPではなくEに制限されるため、私にとって役立ちます。私はそれがあなたにどのように役立つかわかりません:)
Suresh

5

タイプ1言語は、サイズが入力サイズに対して線形であるテープの一部のみを使用できる非決定的チューリングマシンである線形有界オートマトンによって決定できます。


4

チョムスキー階層は、言語よりも文法を分類します。ただし、タイプ1の文法に対応するチューリングマシンがある場合でも、タイプ2および3で提案したように、オートマトンが認識しなければならないテープの数に関係するようには設計されていません。

また、タイプ0文法の言語はすべてチューリングマシンで認識されるわけではありませんが、そのようなマシンでのみ列挙できます。タイプ0は再帰的に列挙可能であり、チューリングマシンは再帰言語のみを認識します。


4

最新のプログラミング言語は、常に状況依存機能を使用しています。効率的に決定できるサブセットに分類されます。

例としては、名前とタイプの分析およびタイプの推論があります。


3

他の多くの人は、タイプ1言語は線形有界オートマトンによって認識できる言語であると述べています。停止の問題は線形有界オートマトンで決定できます。つまり、Turning Machinesで認識される言語では計算上決定できない他の多くのプロパティは、Type-1言語で決定可能です。

確かに、停止問題が線形有界オートマトンで決定可能であるという証拠は、有限量のテープでは有限数の状態しか入力できないという事実に依存しているため、その多くのステップ内で停止しない場合、ループし、停止することはありません。この証明は、技術的にはすべての実際のコンピューター(メモリも有限)に適用されますが、コンピューター上で実行されるプログラムの停止の問題を解決する上で実際的な利点はありません。

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