Gerarchia di Chomsky

In scienza teorica informatica , teoria dei linguaggi e calcolabilità , la gerarchia di Chomsky (a volte chiamato il Chomsky- Schützenberger gerarchia ) è una classificazione di grammatiche formali (e, per estensione, dei rispettivi linguaggi formali generati da grammatiche), descritto da Noam Chomsky in 1956 .

Presentazione

La gerarchia introdotta da Noam Chomsky si basa sul modello grammaticale formale . Definisce le classi della sua gerarchia come possibili modelli per la descrizione delle proprietà strutturali dei linguaggi naturali. Noam Chomsky ha proposto una classificazione in quattro tipi di lingue, dal tipo 0 al tipo 3. Questa terminologia iniziale è stata mantenuta, ma ora altri nomi sono più comuni. Chomsky ha presentato queste famiglie in termini di grammatiche formali e le varie classi di grammatiche sono definite da restrizioni successive sotto forma di regole.

Una proprietà notevole della classificazione di Chomsky è che, per ogni tipo, esiste una famiglia di automi che accetta esattamente linguaggi di quel tipo. Questi controller variano nella natura e nell'uso della memoria ausiliaria. La traduzione in classi di complessità è meno chiara: i linguaggi razionali (tipo 3) sono in DTIME (n), i linguaggi algebrici (tipo 2) in DTIME (n 3 ), i linguaggi contestuali (tipo 1) in DTIME ( n M ), dove M dipende dalla grammatica, ma non è vero il contrario.

La classificazione di Chomsky, ripresa in quasi tutti i manuali di insegnamento dell'informatica, si è rivelata molto fruttuosa nelle sue applicazioni, in particolare nella progettazione e analisi dei linguaggi di programmazione e nella compilazione di questi linguaggi. I linguaggi razionali e algebrici sono stati oggetto in passato di ampi studi teorici. Le lingue sensibili al contesto vengono utilizzate principalmente nella descrizione delle lingue naturali.

Quattro classi di grammatiche e lingue

Chomsky ha definito quattro classi di grammatiche, denominate da tipo 0 a tipo 3, e quindi anche quattro classi di lingue, generate da queste grammatiche gerarchicamente annidate:

  1. I linguaggi di tipo 0 sono i più generali: sono linguaggi enumerabili ricorsivamente .
  2. Le lingue di tipo 1 sono lingue contestuali , in inglese "sensibili al contesto".
  3. Le lingue di tipo 2 sono chiamate lingue algebriche o "libere dal contesto", in inglese "libere dal contesto".
  4. I linguaggi di tipo 3 sono linguaggi "normali" o linguaggi razionali .

Tutte le lingue di tipo 3 sono lingue di tipo 2. Tutte le lingue di tipo 2 sono lingue di tipo 1. Tutte le lingue di tipo 1 sono lingue di tipo 0. La tabella seguente riassume la corrispondenza tra tipi di grammatica, lingue e macchine.

Grammatica Regole di produzione Linguaggio Macchina
digitare 0 ricorsivamente enumerabile Macchina di Turing
tipo 1 contestuale Automa delimitato linearmente
tipo 2 algebrico Automa a pila non deterministico
tipo 3 razionale Automa finito

Nella presentazione formale di seguito, il vocabolario della grammatica, composto da simboli terminali e non terminali, è l'insieme di simboli non terminali ed è la parola vuota.

Tipo 0: grammatiche generali

Non ci sono restrizioni sulle regole. Hanno la forma:

Queste grammatiche generano la classe dei linguaggi enumerabili ricorsivamente . Queste sono esattamente le lingue riconoscibili da una macchina di Turing . Il problema se una parola appartiene a una lingua di questa classe è indecidibile .

Tipo 1: grammatiche contestuali

Le regole sono nella forma:

In altre parole, qualsiasi regola include un non terminale circondato da due parole che descrivono il contesto in cui la variabile può essere sostituita. Queste grammatiche sono chiamate contestuali (in inglese sensibili al contesto ), perché la sostituzione di un elemento non terminale può dipendere dagli elementi che lo circondano: il suo contesto. I linguaggi prodotti, chiamati linguaggi contestuali o sensibili al contesto , sono esattamente quelli riconosciuti da una macchina di Turing non deterministica con memoria limitata linearmente, comunemente chiamati automi limitati linearmente . Esistono altre formulazioni equivalenti per le grammatiche che definiscono i linguaggi contestuali.

Tipo 2: grammatiche non contestuali o algebriche

Le regole sono nella forma:

Tale regola può essere vista come una regola contestuale in cui il contesto delle regole è vuoto, a condizione che il membro giusto non sia la parola vuota. L'aggettivo "non contestuale" esprime il fatto che i simboli non terminali vengono trattati indipendentemente da dove compaiono. Queste grammatiche generano linguaggi esattamente algebrici , chiamati anche linguaggi privi di contesto, linguaggi contestuali o linguaggi non contestuali. Sono riconosciuti da un automa alimentato a batteria .

Tipo 3: grammatiche regolari

Le grammatiche regolari sono grammatiche lineari sinistra o grammatiche lineari destra:

Le grammatiche regolari generano linguaggi razionali . In effetti, una grammatica regolare si trasforma facilmente in un automa finito ( teorema di Kleene ).

Attenzione, non possiamo autorizzare contemporaneamente i due tipi di regole in una grammatica senza uscire dalla classe dei linguaggi razionali: si ottengono le grammatiche lineari che costituiscono una classe intermedia tra il tipo 2 e il tipo 3. Le regole di una grammatica lineare sono della forma:

Inclusione delle famiglie

Una lingua algebrica che non contiene la parola vuota è una lingua contestuale o, equivalentemente: Una lingua algebrica è una lingua contestuale eventualmente aumentata dalla parola vuota .

Esempi di lingue

Vedi anche gli esempi nella pagina della grammatica formale . La teoria dei linguaggi formali ha molti strumenti per affermare o invalidare il tipo di un linguaggio (razionale, algebrico, ecc.). La costruzione esplicita di una grammatica che riconosce una data lingua non è sempre facile.

Affinamento della gerarchia di Chomsky

La gerarchia originale di Chomsky consisteva di quattro classi. Altre classi sono spesso intervallate:

L' albero delle grammatiche adiacenti definisce una famiglia tra linguaggi algebrici e linguaggi sensibili al contesto. Sono accettati dagli automi a batteria di bordo . Queste grammatiche fanno parte delle grammatiche che consentono una migliore comprensione della struttura delle lingue naturali, raggruppate sotto il nome linguaggio leggermente sensibile al contesto  (en) .

Esistono altri affinamenti, che dimostrano che la struttura non è “lineare”: ad esempio, se confrontiamo linguaggi lineari e linguaggi algebrici deterministici, vediamo che queste famiglie non sono contenute né l'una nell'altra.

Estensione di questa gerarchia

La gerarchia di Chomsky riguarda solo il dominio del calcolabile definito paradigmaticamente da ciò che una macchina di Turing può calcolare . Oltre a ciò esistono altre gerarchie di lingue inclusa la gerarchia aritmetica .

Bibliografia

Note e riferimenti

  1. (in) Noam Chomsky , "  Tre modelli per la descrizione del linguaggio  " , IRE Transactions on Information Theory , n o  21956, p.  113–124 ( leggi in linea ).
  2. Cohen 1997 , cap. 30: La Gerarchia di Chomsky .
  3. Hopcroft e Ullman 1979 , cap. 9: La Gerarchia di Chomsky . La ristampa di quest'opera nel 2001 con Rajeev Motwani non include più questo capitolo.
  4. Linz 2001 , Cap. 11.4: La Gerarchia di Chomsky .
  5. Hopcroft e Ullman 1979 , cap. 10: Linguaggi deterministici privi di contesto .
  6. AK Joshi, LS Levy e M. Takahashi, "Tree adjunct grammars", Journal of Computer Systems Science , 10 (1), 1975.
  7. Grammatiche adiacenti ad albero basato sull'unificazione .
  8. (in) K. Vijay-Shanker , "  A Study of Tree-Adjoining Grammars  " , PhD Thesis , University of Pennsylvania ,Gennaio 1988.
  9. vedi anche: Robert McNaughton, “ Un inserimento nella gerarchia di Chomsky? ", Jewels are forever , 1999, pagine 204-212, e T. Jurdziński, K. Lorys, G. Niemann, F. Otto," Alcuni risultati sugli automi RWW e RRWW e la loro relazione con la classe del contesto in crescita- lingue sensibili ", Journal of Automata, Languages ​​and Combinatorics , Volume 9 Number 4, ottobre 2004.

Articoli Correlati

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">