✖

Afsluiting van een reguliere taal

We hebben een reguliere taal L. We bewijzen dat de afsluiting van de taal L weer een reguliere taal is.

Wat is de afsluiting van een taal

De afsluiting van een taal L noteren we als L∗. De afsluiting bevat alle woorden die zijn samen te stellen door een eindig aantal woorden uit de taal L te concateneren. We kunnen de afsluiting definiëren als:

L∗={a1∘a2∘⋯∘an|ai∈L,n∈N0},

waarbij ∘ de bewerking concatenatie aangeeft. De afsluiting bevat ook het lege woord, dus ϵ.

Formele werkwijze

We gaan vrijwel op dezelfde manier te werk als bij de concatenatie van talen. Alleen verbinden we niet twee verschillende automaten, maar koppelen we één automaat aan zichzelf — vanuit de eindtoestanden van de automaat trekken we epsilonovergangen naar de begintoestand van de automaat. De afsluiting moet echter ook het lege woord bevatten. Hoe regelen we dat? We kunnen van de begintoestand een eindtoestand maken. Dan zou zo'n automaat het lege woord accepteren, maar misschien ook nog een ander woord. Daarom maken we in plaats daarvan een nieuwe begintoestand en trekken we vanuit die nieuwe begintoestand een epsilonovergang naar de oorspronkelijke begintoestand.

We hebben een reguliere taal L1 en een automaat die deze taal accepteert:

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

We construeren een niet-deterministische automaat A = ⟨Q, Σ, δ, qs, F⟩ waarvoor geldt:

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

De overgangsfunctie δ definiëren we als volgt:

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

Voorbeeld

Neem deze automaat A1, die de woorden 00 of 11 accepteert:

De afsluiting van de taal L(A1) is dus de taal van alle woorden die uit paren 00 en 11 bestaan, bijvoorbeeld 0000, 110011, 11110000 enzovoort. Een automaat die deze afsluiting zou accepteren, bouwen we door een nieuwe begintoestand qs te maken met een epsilonovergang naar de voormalige begintoestand q0 en door epsilonovergangen toe te voegen van de toestanden q3 en q4 naar toestand q0:

We kunnen controleren dat deze automaat de woorden 0000, 110011, 11110000 inderdaad accepteert, maar bijvoorbeeld het woord 1010 niet.

Bronnen

Hoofdstukken: Afgeslotenheid van reguliere talen, Vereniging van reguliere talen, Doorsnede van reguliere talen, Verschil van reguliere talen, Complement van een reguliere taal, Concatenatie van reguliere talen, Afsluiting van een reguliere taal