Linguaggio regolare
In informatica teorica un linguaggio regolare è un linguaggio formale, ossia costituito da un insieme di stringhe costruite con un alfabeto finito, che è descritto da un'espressione regolare, generato da una grammatica generativa regolare (o di tipo 3, secondo la gerarchia di Chomsky) o accettato da un automa a stati finiti (automa a stati finiti deterministico o automa a stati finiti non deterministico).
Linguaggi regolari basati su un alfabeto
modificaL'insieme dei linguaggi regolari basati su un alfabeto è definito ricorsivamente come segue:
- il linguaggio vuoto è un linguaggio regolare.
- il linguaggio contenente la sola stringa vuota è un linguaggio regolare.
- per ogni carattere , il linguaggio singleton è un linguaggio regolare.
- se e sono linguaggi regolari allora , , e sono linguaggi regolari.
- nessun altro linguaggio su è regolare.
Tutti i linguaggi finiti sono regolari. Un altro tipico esempio include il linguaggio che consiste di tutte le stringhe dell'alfabeto e che contiene un numero pari di a, o il linguaggio consistente di tutte le stringhe nella forma: zero o più a seguite da zero o più b.
Proprietà di chiusura
modificaI linguaggi regolari sono chiusi rispetto alle seguenti operazioni:
- complemento
- stella di kleene
- concatenazione
- unione
- intersezione
- differenza
- riflesso
Problemi legati ai linguaggi regolari
modificaNella gerarchia di Chomsky i linguaggi regolari corrispondono ai linguaggi generati da grammatiche di tipo 3. È possibile stabilire se un linguaggio è regolare o meno utilizzando il teorema di Myhill-Nerode. È invece possibile dimostrare che un linguaggio non è regolare utilizzando il pumping lemma per i linguaggi regolari.
Dati due linguaggi regolari ed è possibile verificare l'inclusione utilizzando le proprietà di chiusura. Per questo motivo è possibile stabilire se due linguaggi regolari sono equivalenti.
Approccio algebrico
modificaCi sono due approcci algebrici puri per definire i linguaggi regolari. Se è un alfabeto finito e denota il monoide libero su consistente di tutte le stringhe su , è un omomorfismo di monoide dove è un monoide finito, e è un sottoinsieme di , dove la funzione inversa è regolare. Ogni linguaggio regolare si presenta in questa forma.
Se è un sottoinsieme di , si può definire una relazione di equivalenza in come segue: è definita
Il linguaggio è regolare se e solo se il numero di classi equivalenti di è finito; in questo caso, questo numero è uguale al numero degli stati del minimo automa a stati finiti deterministico che accetti .
Bibliografia
modifica- Giorgio Ausiello, Fabrizio D'Amore, Giorgio Gambosi, Linguaggi modelli complessità, Milano, Franco Angeli Editore, 2003, ISBN 88-464-4470-1.
- (EN) regular language, in Academic Press Dictionary of Science and Technology, Oxford, Elsevier Science & Technology, 1992.
- (EN) John E. Hopcroft, Rajeev Motwani; Jeffrey D. Ullman, Regular expressions and Languages, in Introduction to Automata Theory, Languages, and Computation, Addison Wesley, 15 luglio 2006, ISBN 978-0-321-46225-1.
- (EN) Martin Davis, Ron Sigal; Elaine J. Weyuker, Regular Languages, in Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science, Morgan Kaufmann, 17 febbraio 1994, ISBN 978-0-12-206382-4.
Voci correlate
modificaAltri progetti
modifica- Wikimedia Commons contiene immagini o altri file su linguaggio regolare
Collegamenti esterni
modifica- Linguaggio regolare, in Enciclopedia della Matematica, Istituto dell'Enciclopedia Italiana, 2013.
- (EN) Grail+, su grailplus.org, University of Western Ontario (archiviato dall'url originale il 18 ottobre 2016).
- (EN) JFLAP, su jflap.org, Università Duke.