✖

Chiusura di Kleene di un linguaggio regolare

Sia L un linguaggio regolare. Dimostreremo che la chiusura di Kleene del linguaggio L è ancora un linguaggio regolare.

Cos’è la chiusura di Kleene di un linguaggio

La chiusura di Kleene del linguaggio L si indica con L∗. Contiene tutte le parole che si possono ottenere concatenando un numero finito di parole del linguaggio L. Possiamo definirla così:

L∗={a1∘a2∘⋯∘an∣ai∈L,n∈N},

dove ∘ indica l’operazione di concatenazione. La chiusura contiene anche la parola vuota, cioè ϵ.

Procedimento formale

Procederemo in modo molto simile al caso della concatenazione di linguaggi. Solo che, invece di collegare due automi diversi, colleghiamo un automa con se stesso: dagli stati finali dell’automa facciamo partire ε-transizioni verso lo stato iniziale dell’automa. Però la chiusura deve contenere anche la parola vuota. Come fare? Potremmo rendere finale lo stato iniziale. In tal modo l’automa accetterebbe la parola vuota, ma potrebbe accettare anche qualche altra parola che non deve. Per questo creiamo invece un nuovo stato iniziale e da questo nuovo stato iniziale facciamo partire una ε-transizione verso lo stato iniziale originario.

Abbiamo un linguaggio regolare L1 e un automa che lo accetta:

A1=⟨Q1,Σ1,δ1,q0,F1⟩

Costruiamo un automa non deterministico A = ⟨Q, Σ, δ, qs, F⟩ per cui vale:

  • Q = Q1 ∪ {qs}
  • Σ= Σ1
  • F = F1 ∪ {qs}

La funzione di transizione δ si definisce così:

δ(q,a)={δ1(q,a)seq∈Q1∧q∉F1δ1(q,a)seq∈F1∧a≠ϵδ1(q,a)∪{q0}seq∈F1∧a=ϵ{q0}seq=qs∧a=ϵ∅seq=qs∧a≠ϵ

Esempio

Consideriamo questo automa A1, che accetta le parole 00 oppure 11:

La chiusura di Kleene del linguaggio L(A1) è quindi il linguaggio di tutte le parole formate da coppie 00 e 11, ad esempio 0000, 110011, 11110000 ecc. L’automa che accetta questa chiusura si costruisce creando un nuovo stato iniziale qs con una ε-transizione verso l’ex stato iniziale q0 e aggiungendo ε-transizioni dagli stati q3 e q4 verso lo stato q0:

Possiamo verificare che questo automa accetta davvero le parole 0000, 110011, 11110000, ma non accetta ad esempio la parola 1010.

Fonti

Capitoli: Chiusura dei linguaggi regolari, Unione di linguaggi regolari, Intersezione di linguaggi regolari, Differenza di linguaggi regolari, Complemento di un linguaggio regolare, Concatenazione di linguaggi regolari, Chiusura di Kleene di un linguaggio regolare