27

私は、Chomskyによって設定された正式な文法(無制限、文脈依存、文脈自由、規則的)の4つのレベルの平凡な(すなわち非形式的な)説明を見つけようとしています。chomsky hierarchy in plain english

私は正式な文法を勉強してから年をとりました。さまざまな定義が、今私が視覚化するのが混乱しています。明らかにするために、ではなくで、正式な定義を探しています(たとえば、herehere - 私はグーグルでも他の誰でも可能です)。代わりに、私が見つけたいと思っていたのは、完全性のために明快さを犠牲にしない、きれいで簡単な説明でした。

+0

大きな質問です。それはすべての理論的なcsの本にあるはずです。 – peri4n

+1

@muistooshort私はそれが**より** ** cstheoryに適しているかどうかはわかりません。おそらくそこにはいくぶん適切かもしれませんが、「プログラミング業界にとってユニークな実用的で解決不可能な問題」の下で確かにここに当てはまります。実際、この質問は、文法の分類が関係する限り、スケールの「実用的」側面に向かって重み付けされ、「理論」側面には及ばない。私が求めているのは、具体的には、純粋にcs理論の用語ではなく、実際の用語で分類が意味するものです。 – tylerl

答えて

17

これらの言語を生成しているオートマトンを覚えている方がいいかもしれません。

通常の言語は、レギュラーオートマトンによって生成されます。彼らは接頭辞(palindrome言語)に応じて接尾辞が付いた言語があるたびに、過去の知識を知っているだけです(これはメモリに計算があります)。これは通常の言語ではできません。

文脈自由言語は、非決定的プッシュダウンオートマトンによって生成されます。彼らは過去の知識(普通のオートマトンとは対照的ではないスタック)を知っていますが、スタックは上からしか見ることができないので、過去を完全に知ることはできません。

文脈依存言語は、線形結合された非決定論的チューリングマシンによって生成されます。彼らは過去を知っていて、決定的ではなく、毎回過去にアクセスすることができるため、さまざまな状況に対応できます。

制限のない言語は、チューリングマシンによって生成されます。教会 - チューリング - テーゼによれば、チューリングマシンはあなたが想像できるすべてを計算することができます。

+4

有限オートマトンは、過去からの情報を覚えることができます - 有限量だけです。 [context-free languages](http://en.wikipedia.org/wiki/Context-free_language)についてのあなたの説明は正しくありません。 CFLのオートマトンの正しいクラスは、*非決定論的*プッシュダウンオートマトン(NPDA)のクラスです。確定的プッシュダウンオートマトンはNPDAより[厳密に弱い](http://en.wikipedia.org/wiki/Deterministic_context-free_language)です。 "文脈依存言語は、非決定的プッシュダウンオートマトンによって生成されます。"どちらも正しくありません。 NPDAはCFLのみを生成します – Prateek

+0

エラーを修正します。 – peri4n

2

通常の言語では、多くの同等の特徴があります。彼らは、通常の言語を見るためのさまざまな方法を提供します。 「普通の英語」の定義を与えることは難しく、通常の言語の特徴を理解することが難しい場合は、「普通の英語」の説明が役立つことはまずありません。定義とさまざまなクロージャのプロパティから注目すべき点の1つは、規則的な言語が何らかの形で「有限性」という概念を具体化しているということです。しかし、これはまた、通常の言語に精通していなくても感謝するのは難しいです。

有限オートマトンの概念がシンプルでクリーンでないと分かりますか?

私は(少なくとも他の読者のために)多くの同等の特性評価のいくつかを言及してみましょう:受け入れalternating finite automata

  • 言語で受け入れnondeterministic finite automata
  • 言語で受け入れdeterministic finite automata
  • 言語で受け入れ

  • +2

    彼は正式な定義はなく、正式な定義は何を得ているのか。 – peri4n

    0

    正規:これらの言語は、はい/いいえ有限オートマトンと

    文脈自由答える:(状態machieneとスタックを使用して)入力ワードが与えられたとき、それならば、これらの言語は、我々は常にYES/NO答えることができます限り文法での生産が縮小したことがないよう(α - >β)私たちはイエス/ノー(入力とサイズが線形であるメモリの状態machieneとチャンクを使用して)答えることはできません:敏感言語

    コンテキストのメンバーであります

    再帰的ennumerable:それはそう答えることができるが、NOの場合には、それは

    は、完全な説明のためにthisビデオを見る無限ループに入ります。