Naar inhoud springen

Reguliere taal

Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door RomaineBot (overleg | bijdragen) op 6 apr 2019 om 19:05. (Linkfix ivm sjabloonnaamgeving / parameterfix)
Deze versie kan sterk verschillen van de huidige versie van deze pagina.

De reguliere talen vormen een klasse van formele talen. Reguliere talen hebben een relatief eenvoudige structuur, waardoor ze zeer geschikt zijn om door computerprogramma's verwerkt te worden. Daarom hebben ze vele toepassingen in de informatica, onder andere in tekstbewerkingsprogramma's (reguliere expressies), in de compilerbouw (in het bijzonder bij de lexicale analyse) en bij modelverificatie.

Definitie

De verzameling van reguliere talen over een alfabet Σ is recursief gedefinieerd:

  • de lege taal Ø is een reguliere taal
  • de lege-string taal { ε } is een reguliere taal
  • voor alle aΣ, de singleton taal { a } is een reguliere taal
  • als A en B reguliere talen zijn , dan zijn AB (vereniging), AB (concatenatie) en A* (Kleene-ster) reguliere talen
  • geen andere talen over Σ zijn regulier

Alternatief kan een reguliere taal ook gedefinieerd worden als een formele taal die een van de volgende equivalente eigenschappen vervult:

Alle eindige talen zijn regulier. Andere voorbeelden zijn de taal die bestaat uit alle strings over het alfabet { a, b } met een even aantal as of de taal van de vorm: een aantal as gevolgd door een aantal bs.

Afsluiteigenschappen

De reguliere talen zijn gesloten onder de volgende bewerkingen, dit betekent: als en reguliere talen zijn, dan zijn de volgende talen ook regulier:

  • de booleaanse operaties: de vereniging , doorsnede , en het complement van en , en daardoor ook het verschil ,
  • de reguliere operaties: vereniging, concatenatie , en Kleene-ster van en ,
  • het beeld van onder een homomorfisme,
  • het omgekeerde (of spiegelbeeld) van ,
  • HALF(L), de verzameling van strings die bestaan uit de eerste helft van de strings in

Beslissen of een taal regulier is

In de Chomskyhiërarchie kan men zien dat elke reguliere taal contextvrij is. Het omgekeerde is echter niet het geval: bijvoorbeeld de taal die bestaat uit alle strings met hetzelfde aantal as en bs is contextvrij, maar niet regulier. Om te bewijzen dat een taal niet regulier is gebruikt men de stelling van Myhill-Nerode of de pompstelling.

Referenties

  • (en) Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Chapter 1: Regular Languages, p. 31-90. Subsection "Decidable Problems Concerning Regular Languages" of section 4.1: Decidable Languages, p. 152-155.