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

L'insieme dei linguaggi regolari basati su un alfabeto Σ {\displaystyle \Sigma } è definito ricorsivamente come segue:

  • il linguaggio vuoto {\displaystyle \emptyset } è un linguaggio regolare.
  • il linguaggio { ϵ } {\displaystyle \left\{\epsilon \right\}} contenente la sola stringa vuota è un linguaggio regolare.
  • per ogni carattere a Σ {\displaystyle a\in \Sigma } , il linguaggio singleton { a } {\displaystyle \left\{a\right\}} è un linguaggio regolare.
  • se A {\displaystyle A} e B {\displaystyle B} sono linguaggi regolari allora A B {\displaystyle A\cup B} , A B {\displaystyle A\circ B} , e A {\displaystyle A^{*}} sono linguaggi regolari.
  • nessun altro linguaggio su Σ {\displaystyle \Sigma } è regolare.

Tutti i linguaggi finiti sono regolari. Un altro tipico esempio include il linguaggio che consiste di tutte le stringhe dell'alfabeto { a , b } {\displaystyle \left\{a,b\right\}} 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

I linguaggi regolari sono chiusi rispetto alle seguenti operazioni:

  • L ¯ {\displaystyle {\bar {L}}} complemento
  • L {\displaystyle L^{*}} stella di kleene
  • L 1 L 2 {\displaystyle L_{1}\circ L_{2}} concatenazione
  • L 1 L 2 {\displaystyle L_{1}\cup L_{2}} unione
  • L 1 L 2 {\displaystyle L_{1}\cap L_{2}} intersezione
  • L 1 L 2 {\displaystyle L_{1}\smallsetminus L_{2}} differenza
  • L 1 R {\displaystyle L_{1}^{R}} riflesso

Problemi legati ai linguaggi regolari

Nella 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 L 1 {\displaystyle L_{1}} ed L 2 {\displaystyle L_{2}} è possibile verificare l'inclusione L 1 L 2 {\displaystyle L_{1}\subseteq L_{2}} utilizzando le proprietà di chiusura. Per questo motivo è possibile stabilire se due linguaggi regolari sono equivalenti.

Approccio algebrico

Ci sono due approcci algebrici puri per definire i linguaggi regolari. Se Σ {\displaystyle \Sigma } è un alfabeto finito e Σ {\displaystyle \Sigma ^{*}} denota il monoide libero su Σ {\displaystyle \Sigma } consistente di tutte le stringhe su Σ {\displaystyle \Sigma } , f : Σ M {\displaystyle f:\Sigma ^{*}\rightarrow M} è un omomorfismo di monoide dove M {\displaystyle M} è un monoide finito, e S {\displaystyle S} è un sottoinsieme di M {\displaystyle M} , dove la funzione inversa f 1 ( S ) {\displaystyle f^{-1}(S)} è regolare. Ogni linguaggio regolare si presenta in questa forma.

Se L {\displaystyle L} è un sottoinsieme di Σ {\displaystyle \Sigma ^{*}} , si può definire una relazione di equivalenza {\displaystyle \sim } in Σ {\displaystyle \Sigma ^{*}} come segue: u v {\displaystyle u\sim v} è definita

u w L v w L  per ogni  w Σ {\displaystyle uw\in L\iff vw\in L{\mbox{ per ogni }}w\in \Sigma ^{*}}

Il linguaggio L {\displaystyle L} è regolare se e solo se il numero di classi equivalenti di {\displaystyle \sim } è finito; in questo caso, questo numero è uguale al numero degli stati del minimo automa a stati finiti deterministico che accetti L {\displaystyle L} .

Bibliografia

  • 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

Altri progetti

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su linguaggio regolare

Collegamenti esterni

Teoria degli automi: linguaggi formali e grammatiche formali
Gerarchia di Chomsky Grammatica formale Linguaggio Automa minimo
Tipo-0 (illimitato) Ricorsivamente enumerabile Macchina di Turing
(illimitato) Ricorsivo Decider
Tipo-1 Dipendente dal contesto Dipendente dal contesto Automa lineare
Tipo-2 Libera dal contesto Libero dal contesto Automa a pila ND
Tipo-3 Regolare Regolare A stati finiti
Ciascuna categoria di linguaggio o grammatica è un sottoinsieme proprio della categoria immediatamente sovrastante.
  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica