Definition

Eine regulĂ€re Sprache ist eine formale Sprache, die von einem endlichen Automaten erkannt wird. Sie können mit regulĂ€ren AusdrĂŒcken beschrieben und durch regulĂ€re Grammatiken erzeugt werden.


Formale Definition

Eine Sprache L ist regulÀr, wenn es einen deterministischen (DEA) oder nichtdeterministischen endlichen Automaten (NEA) gibt, der L akzeptiert.

Ein DEA wird definiert als:
M = (S, ÎŁ, ÎŽ, s0, F)

  • S: Endliche Menge von ZustĂ€nden
  • ÎŁ: Eingabealphabet
  • ÎŽ: Übergangsfunktion
  • s0: Startzustand
  • F: Menge der EndzustĂ€nde

Ein NEA kann mehrere mögliche ÜbergĂ€nge fĂŒr ein Zeichen haben, wĂ€hrend ein DEA fĂŒr jedes Zeichen einen eindeutigen Folgezustand hat.


RegulÀre Grammatiken

Eine regulÀre Grammatik besteht aus Produktionen der Form:

  • Rechtslinear: oder
  • Linkslinear: oder

Jede regulÀre Grammatik kann in einen endlichen Automaten umgewandelt werden und umgekehrt.


RegulĂ€re AusdrĂŒcke

RegulĂ€re AusdrĂŒcke sind eine Schreibweise zur Darstellung regulĂ€rer Sprachen. Die wichtigsten Operatoren sind:

NotationBedeutung
aSymbol „a“
ΔLeeres Wort
r|s„r oder s“
rs„r gefolgt von s“
r*„r beliebig oft“
r+„r mindestens einmal“
r?„r optional“

Beispiel:

(0|1)*1

Diese Sprache enthÀlt alle BinÀrzahlen mit mindestens einer 1.


NEA zu DEA (Potenzmengenkonstruktion)

Ein nichtdeterministischer Automat (NEA) kann durch die Potenzmengenkonstruktion in einen deterministischen Automaten (DEA) umgewandelt werden. Dabei wird jeder Zustand des DEA als eine Menge von NEA-ZustÀnden betrachtet.

Die Anzahl der ZustÀnde des DEA kann dabei exponentiell ansteigen.


Eigenschaften regulÀrer Sprachen

RegulÀre Sprachen sind unter folgenden Operationen abgeschlossen:

  • Vereinigung: ist regulĂ€r.
  • Konkatenation: ist regulĂ€r.
  • Stern-Operator: ist regulĂ€r.
  • Komplement: ist regulĂ€r.
  • Schnitt: ist regulĂ€r.

Grenzen regulÀrer Sprachen

RegulĂ€re Sprachen können keine Sprachen mit tief verschachtelten Strukturen (wie z. B. (a^n b^n)) ausdrĂŒcken. Dazu sind kontextfreie Sprachen notwendig.

Mit dem Pumping Lemma kann gezeigt werden, dass eine Sprache nicht regulÀr ist.


Anwendungen

RegulÀre Sprachen werden in vielen Bereichen eingesetzt, z. B.:

  • Lexikalische Analyse in Programmiersprachen
  • Suchmuster in Textdateien (z. B. mit grep oder regex in Programmiersprachen)
  • Filterung von Zeichenketten (E-Mail-Adressen, IP-Adressen)

Zusammenfassung

  • RegulĂ€re Sprachen werden von endlichen Automaten erkannt.
  • Sie können durch regulĂ€re AusdrĂŒcke oder regulĂ€re Grammatiken dargestellt werden.
  • Sie sind unter Vereinigung, Konkatenation, Stern-Operator und Komplementbildung abgeschlossen.
  • Nicht alle Sprachen sind regulĂ€r – komplexere Strukturen benötigen kontextfreie oder noch mĂ€chtigere Grammatiken.