Închiderea Kleene a unui limbaj regulat
Fie un limbaj regulat L. Vom demonstra că închiderea Kleene a limbajului L este tot un limbaj regulat.
Ce este închiderea unui limbaj
Închiderea Kleene a limbajului L se notează L∗. Ea conține toate cuvintele care se pot forma concatenând un număr finit de cuvinte din limbajul L. Închiderea o putem defini astfel:
unde ∘ denotă operația de concatenare. Închiderea conține și cuvântul vid, adică ϵ.
Construcția formală
Vom proceda foarte asemănător ca în cazul concatenării limbajelor. Doar că, în loc să legăm două automate diferite, legăm un singur automat – din stările finale ale automatului ducem ε-tranziții în starea inițială a automatului. Totuși, închiderea trebuie să conțină și cuvântul vid. Cum rezolvăm asta? Am putea face din starea inițială o stare finală. Atunci un astfel de automat ar accepta cuvântul vid, dar ar putea accepta și alte cuvinte în plus. De aceea, în schimb, creăm o nouă stare inițială și din această nouă stare inițială ducem o ε-tranziție în starea inițială originală.
Avem un limbaj regulat L1 și un automat care acceptă acest limbaj:
Construim un automat nedeterminist A = ⟨Q, Σ, δ, qs, F⟩ pentru care are loc:
- Q = Q1 ∪ {qs}
- Σ= Σ1
- F = F1 ∪ {qs}
Funcția de tranziție δ o definim astfel:
Exemplu
Fie automatul A1, care acceptă cuvintele 00 sau 11:
Închiderea Kleene a limbajului L(A1) este deci limbajul tuturor cuvintelor formate din perechi 00 și 11, de exemplu 0000, 110011, 11110000 etc. Automatul care ar accepta această închidere l-am construi creând o nouă stare inițială qs cu o ε-tranziție în fosta stare inițială q0 și adăugând ε-tranziții din stările q3 și q4 în starea q0:
Putem verifica faptul că acest automat acceptă într-adevăr cuvintele 0000, 110011, 11110000, dar nu acceptă, de pildă, cuvântul 1010.
Surse
Capitole: Închiderea la operații, Reuniunea, Intersecția, Diferența, Complementul, Concatenarea, Închiderea Kleene