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 .
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.
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:
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.
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 .
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.
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 .
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:
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.
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.
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 .