Grammatica regolare: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
→‎Definizione: Le due definizioni erano invertite.
AttoBot (discussione | contributi)
m Bot: formattazione dei wikilink; modifiche estetiche
Riga 1:
[[ImmagineFile:Gerarchia-di-Chomsky.jpg|right]]
 
Una '''grammatica regolare''', è una [[grammatica formale]] [[grammatica generativa|generativa]]. Detta anche '''lineare destra''' o '''lineare sinistra''', secondo la [[gerarchia di Chomsky]] è una grammatica di tipo-3.
Riga 6:
{{vedi anche|grammatica formale}}
Come le altre grammatiche formali, è una [[N-pla|quadrupla]] <math>\mathcal{G} = \left \langle N, \Sigma, P, S \right \rangle</math>, in cui
# <math>N</math> sono i simboli non terminali
# <math>\Sigma</math> sono i simboli terminali
# <math>S \in N</math> detto ''assioma'' è il simbolo non terminale di inizio.
# <math>P</math> sono le regole di produzione, una relazione binaria di cardinalità finita su <math>(N \cup \Sigma)^* \circ N \circ (N \cup \Sigma)^* \times (N \cup \Sigma)^*</math>, che normalmente scriviamo come <math>\alpha \to \beta</math>
#: questa scrittura ci dice che a sinistra ci deve essere almeno un non terminale ed a destra qualsiasi cosa.
 
== Definizione ==
Le produzioni di una ''grammatica regolare'' sono del tipo:
* nel caso di '''lineari sinistre''' (in inglese ''left regular grammar'')
:<math>A \to \beta, A \in N, \beta \in (N \circ \Sigma) \cup \Sigma</math><br />
:ossia a sinistra della regola di produzione c'e' un non terminale e a destra un non terminale seguito da un terminale oppure un singolo terminale.
 
* nel caso di '''lineari destre''' (in inglese ''right regular grammar'')
:<math>A \to \beta, A \in N, \beta \in (\Sigma \circ N) \cup \Sigma</math><br />
:ossia a sinistra della regola di produzione c'e' un non terminale e a destra un terminale seguito da un non terminale oppure un singolo terminale.
 
Riga 25:
Poniamo attenzione al fatto che non ci devono essere produzioni miste formate da lineari destre e sinistre contemporaneamente nella stessa grammatica, poiché in questo caso non siamo più in presenza di una grammatica regolare ma ad una [[grammatica libera dal contesto]] (''non contestuale'') come evidenziato in un esempio seguente.
 
Vengono chiamate ''regolari'' perché i linguaggi generati da queste grammatiche sono rappresentabili tramite [[espressione regolare|espressioni regolari]].<br />
Il termine ''lineare'' deriva dal fatto che a destra delle produzioni possiamo trovare al massimo un non terminale; ''destra'' o ''sinistra'' indica dove il non terminale sarà rispetto al terminale.
 
I linguaggi generabili da grammatiche regolari (di tipo-3) sono detti [[linguaggio regolare|'''linguaggi regolari''']] e sono equivalenti ai linguaggi riconosciuti dagli [[automa a stati finiti|automi a stati finiti]] ed ai linguaggi rappresentati da [[espressione regolare|espressioni regolari]].
 
Ogni grammatica regolare è anche una [[grammatica libera dal contesto]] visto che le grammatiche tipo-3 sono strettamente contenute in quelle tipo-2 secondo la [[gerarchia di Chomsky]].
 
Alcuni libri di testo e articoli non ammettono regole di produzione vuote (''&epsilon;-produzioni''), e assumono che la stringa vuota non sia presente nel linguaggio.<br />
Ad ogni modo è dimostrato il teorema che garantisce che data una grammatica <math>\mathcal{G}</math> le cui regole di produzione P possono essere separate in due sottoinsiemi contenenti uno le produzioni vuote e l'altro le produzioni di tipo regolare, allora esiste una grammatica regolare <math>\mathcal{G}'</math> formata dalla grammatica <math>\mathcal{G}</math> a cui sono state eliminate le produzioni vuote.<br />
Più formalmente <math>\mathcal{G}'</math> regolare senza &epsilon;-produzioni tale che <math>L(\mathcal{G}') = L(\mathcal{G}) - \{\varepsilon\}</math>
 
Riga 58:
 
== Bibliografia ==
* Giorgio Ausiello, Fabrizio d’Amore, Giorgio Gambosi. ''Linguaggi, Modelli, Complessità''. Franco Angeli Editore, 2003 ISBN 88-464-4470-1
 
== Voci correlate ==
* [[Linguaggio regolare]]
* [[Automa a stati finiti]]
* [[Espressione regolare]]
 
* [[Grammatica lineare]] e [[linguaggio lineare]]
 
{{Linguaggi formali e grammatiche}}