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:
Notation | Bedeutung |
---|---|
a | Symbol â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
oderregex
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.