# Reguläre Sprache

In der theoretischen Informatik ist eine reguläre Sprache oder reguläre Menge oder erkennbare Sprache eine formale Sprache, die einigen Einschränkungen unterliegt. Reguläre Sprachen können von endlichen Automaten erkannt werden und von regulären Ausdrücken beschrieben werden.

## Eigenschaften

Die Klasse der regulären Sprachen hat in der Informatik eine große praktische Bedeutung. Sie bildet eine echte Teilmenge der kontextfreien Sprachen. Die Klasse der regulären Sprachen entspricht innerhalb der Chomsky-Hierarchie der am meisten eingeschränkten Sprachklasse vom Typ 3.

## Definition

Eine Sprache $L$ über einem Alphabet $\Sigma$, also eine Menge von Wörtern $L\subseteq \Sigma ^{*}$, heißt dann regulär, wenn sie eine der folgenden äquivalenten Bedingungen erfüllt:
* $L$ wird von einer regulären Grammatik erzeugt.
* $L$ wird von einem endlichen Automaten entschieden.
* $L$ kann durch einen regulären Ausdruck dargestellt werden.
* Die auf $\Sigma ^{*}$ durch $(x,y)\in R_{L}:\Leftrightarrow (\forall z\in \Sigma ^{*}:(xz\in L\Leftrightarrow yz\in L))$ definierte Relation $R_{L}$ hat endlichen Index (Satz von Myhill-Nerode).
* $L$ kann in der monadischen Logik 2. Stufe definiert werden.
* $L$ ist induktiv definiert als: Verankerung: $L=\{a\}$ mit $a\in \Sigma$ oder $L=\emptyset$ oder $L=\{\varepsilon \}$ Induktion: Für $L_{1},L_{2}$ reguläre Sprachen: $L=L_{1}\cdot L_{2}$ oder $L=L_{1}\cup L_{2}$ oder $L=L^{*}$

## Nachweis der Regularität einer Sprache

Will man für eine gegebene Sprache nachweisen, dass sie regulär ist, so muss man sie demnach auf eine reguläre Grammatik, einen endlichen Automaten, einen regulären Ausdruck oder auf bereits bekannte reguläre Sprachen zurückführen. Für einen Nachweis, dass eine Sprache $L$ nicht regulär ist, ist es meistens zweckmäßig, das Pumping-Lemma (= Pumplemma) für reguläre Sprachen zu benutzen oder in schwierigeren Fällen nachzuweisen, dass der Index von $R_{L}$ nicht endlich ist.

## Beispiele

* $\left\{a^{i}b^{j}\mid i,j\in \mathbb {N} \right\}$ ist regulär.
* Alle endlichen Sprachen $L$ über einem beliebigen Alphabet $\Sigma$, d. h. solche mit $\left|L\right|\in \mathbb {N}$, sind regulär.
** Beispiel: $\left\{a,ab\right\}$
** Auch die leere Menge ist eine reguläre Sprache.
* Alle kontextfreien Sprachen über einem unären Alphabet, d. h. solche mit $\left|\Sigma \right|=1$, sind regulär.
* Die Dyck-Sprachen sind nicht regulär.

## Abschlusseigenschaften

Die Klasse der regulären Sprachen ist abgeschlossen unter den gewöhnlichen Mengenoperationen Vereinigung, Durchschnitt und Komplement. Darüber hinaus gilt die Abgeschlossenheit auch für die Konkatenation und den sogenannten Kleene-Stern sowie die Differenzmenge. Im Einzelnen gilt also:
* Die Vereinigung $L=L_{1}\cup L_{2}$ zweier regulärer Sprachen $L_{1}$ und $L_{2}$ ist regulär.
* Der Schnitt $L=L_{1}\cap L_{2}$ zweier regulärer Sprachen $L_{1}$ und $L_{2}$ ist regulär.
* Das Komplement ${\overline {L}}={\Sigma }^{*}\setminus L$ einer regulären Sprache $L$ ist regulär.
* Die Konkatenation $\{uv\mid u\in L_{1}\land v\in L_{2}\}$ zweier regulärer Sprachen $L_{1}$ und $L_{2}$ ist regulär.
* Der Kleene-Stern $L^{*}$ einer regulären Sprache $L$, d. h. die beliebig häufige Konkatenation von Wörtern aus der Sprache $L$ vereinigt mit dem leeren Wort, ist regulär.
* Die Differenz $L=L_{1}\setminus L_{2}$ zweier regulärer Sprachen $L_{1}$ und $L_{2}$ ist regulär.

## Typische Entscheidungsprobleme

Seien $L$, $L_{1}$ und $L_{2}$ gegebene reguläre Sprachen über dem Alphabet $\Sigma$. Dann ergeben sich folgende typische Problemstellungen:
* Wortproblem: Gehört ein Wort $w\in \Sigma ^{*}$ zu $L$?
* Leerheitsproblem: Ist $L$ die leere Menge?
* Schnittproblem: Ist $L_{1}\cap L_{2}$ die leere Menge?
* Endlichkeitsproblem: Besteht $L$ aus einer endlichen Menge von Wörtern?
* Äquivalenzproblem: Gilt $L_{1}=L_{2}$?
* Inklusionsproblem: Gilt $L_{1}\subseteq L_{2}$?
Alle diese Probleme sind entscheidbar.