Linguaggio regolare

Da testwiki.
Versione del 1 mag 2024 alle 16:16 di imported>Horcrux (Collegamenti esterni: +{{Collegamenti esterni}})
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

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 Σ è definito ricorsivamente come segue:

  • il linguaggio vuoto è un linguaggio regolare.
  • il linguaggio {ϵ} contenente la sola stringa vuota è un linguaggio regolare.
  • per ogni carattere aΣ, il linguaggio singleton {a} è un linguaggio regolare.
  • se A e B sono linguaggi regolari allora AB, AB, e A* 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 {a,b} 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¯ complemento
  • L* stella di kleene
  • L1L2 concatenazione
  • L1L2 unione
  • L1L2 intersezione
  • L1L2 differenza
  • L1R 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 L1 ed L2 è possibile verificare l'inclusione L1L2 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 Σ è un alfabeto finito e Σ* denota il monoide libero su Σ consistente di tutte le stringhe su Σ, f:Σ*M è un omomorfismo di monoide dove M è un monoide finito, e S è un sottoinsieme di M, dove la funzione inversa f1(S) è regolare. Ogni linguaggio regolare si presenta in questa forma.

Se L è un sottoinsieme di Σ*, si può definire una relazione di equivalenza in Σ* come segue: uv è definita

uwLvwL per ogni wΣ*

Il linguaggio L è 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 L.

Bibliografia

Voci correlate

Altri progetti

Template:Interprogetto

Collegamenti esterni

Template:Linguaggi formali e grammatiche

Template:Portale