Pumping-Lemma
Das Pumping-Lemma bzw. Pumplemma beschreibt in der theoretischen Informatik eine Eigenschaft bestimmter Klassen formaler Sprachen. In vielen Fällen lässt sich anhand des Lemmas nachweisen, dass eine formale Sprache nicht regulär bzw. nicht kontextfrei ist.
Ihren Namen hat das Lemma vom englischen Begriff to pump, zu deutsch aufpumpen. Er leitet sich davon ab, dass Teile von Wörtern aus Sprachen bestimmter Klassen vervielfacht (aufgepumpt) werden können, so dass die dabei entstehenden Wörter ebenfalls in der Sprache sind.
Man unterscheidet zunächst zwischen dem Pumping-Lemma für reguläre Sprachen und jenem für kontextfreie Sprachen. In der Literatur sind weiterhin Pumping-Lemmata für Erweiterungen der kontextfreien Sprachen anzutreffen. Mächtigere Sprachklassen in der Chomsky-Hierarchie wie die kontextsensitiven Sprachen und auch die wachsend kontextsensitiven Sprachen ermöglichen jedoch kein Pumpinglemma.
Alternativ wird das Lemma bzw. seine Ausprägungen auch als uvw-Theorem, uvwxy-Theorem, Schleifenlemma, Iterationslemma oder Lemma von Bar-Hillel bezeichnet.
Variante 1: Das Pumping-Lemma für reguläre Sprachen
Annahmen
Sei die Menge der regulären Sprachen. Zur Erzeugung einer regulären Sprache gibt es eine Grammatik des Chomsky-Hierarchie-Typ 3.
Aussage des Pumping-Lemmas für reguläre Sprachen
Sei eine reguläre Sprache, also . Dann gibt es eine natürliche Zahl , sodass sich alle Wörter mit in zerlegen lassen, wobei gilt:
Nicht jede Sprache, die dieses Lemma erfüllt, ist regulär. Eine notwendige und hinreichende Bedingung für reguläre Sprachen liefern der Satz von Myhill-Nerode oder Jaffes Pumping-Lemma (s.u.).
Korrektheitsbeweis
Falls L endlich ist, so existiert eine obere Schranke für die Länge der Wörter aus L. Es existiert also eine natürliche Zahl n ∈ N, für die gilt: |x| < n ∀ x ∈ L. Umgekehrt gilt, dass die Menge aller Wörter aus L, die länger als n sind, eine leere Menge ist: L' := {x ∈ L | |x| ≥ n} = ø. Da für leere Mengen Aussagen der Form „für alle Elemente der Menge gilt…“ trivialerweise immer erfüllt sind, ist auch die Behauptung für dieses n trivialerweise erfüllt. Das Pumping-Lemma ist also trivial, falls L endlich ist.
Sei daher L ohne Beschränkung der Allgemeinheit unendlich, das heißt, es existiert keine obere Schranke für die Länge der Wörter aus L. Oder anders formuliert: Für jedes Wort aus L findet sich immer ein anderes Wort aus L, das noch länger ist.
Da L regulär ist, existiert ein deterministischer endlicher Automat M, der L akzeptiert. Sei n := |M| die Anzahl der Zustände dieses Automaten. Weiter sei x ∈ L ein beliebiges Wort aus L mit mehr als n Zeichen, also |x| > n. Die Existenz eines solchen Wortes wurde im vorherigen Abschnitt sichergestellt.
Ohne Beschränkung der Allgemeinheit durchlaufe M auf x die Zustandsfolge q1→...→qk, wobei qk der akzeptierende Endzustand sei. Da M weniger Zustände hat als x Zeichen enthält, durchläuft M auf x mindestens einen Zustand mehr als einmal, das heißt es existieren i ≠ j ∈ {1, ..., k} mit qi = qj. M durchläuft auf x also einen Zyklus.
Sei v der Teil von x, der durch Durchlaufen des Zyklus qi→...→qj entsteht. Ferner sei u der Teil von x, der durch die davor liegende Zustandsfolge q1→...→qi entsteht, w sei der Teil, der durch die dahinter liegende Zustandsfolge qj→...→qk entsteht. Es gilt also x = uvw. Für alle n ≥ |M| ist nun das Pumping-Lemma erfüllt:
- Der erste Teil der Behauptung folgt direkt aus der Existenz des Zyklus. Da ein Zyklus aus mindestens einer Kante besteht und für jede Kante ein Zeichen hinzugefügt wird, gilt |v| ≥ 1.
- Der zweite Teil der Behauptung folgt trivial aus der Wahl der Konstante n. Dadurch, dass n größer oder gleich der Anzahl der Zustände von M ist, kann |uv| unmöglich größer als n sein. Es ist allerdings durchaus möglich, dass u oder w leer sind.
- Durch wiederholtes Durchlaufen des Zyklus entstehen die Wörter uvvw, uvvvw, ..., uviw mit beliebigem i ≥ 0. Ferner kann der Zyklus auch ganz ausgelassen werden, wodurch das Wort uv0w = uw entsteht. Alle diese Wörter sind in L, da der deterministische endliche Automat seine Berechnung stets im akzeptierenden Endzustand beendet.
Beispiel
Ist die Sprache regulär?
Angenommen, sei eine reguläre Sprache. Dann gibt es gemäß Pumping-Lemma eine Zahl , sodass sich alle Wörter mit wie beschrieben zerlegen lassen.
Man betrachte nun speziell das Wort .
Gemäß Bedingung 1 ist nicht leer, gemäß Bedingung 2 besteht und somit auch ausschließlich aus s (da und ). Mit Bedingung 3 müsste das Wort in liegen. Das ist aber offensichtlich falsch, denn dieses Wort hat mehr s als s, da größer 1. Damit gilt: ist nicht regulär.
Eine nicht-reguläre Sprache die das Pumping-Lemma erfüllt
Die Sprache ist nicht regulär; dies ist leicht anhand des obigen Beispiels einzusehen. Allerdings erfüllt das Pumping-Lemma, denn jedes Wort lässt sich so zerlegen , dass auch für alle . Dazu kann einfach als erster Buchstabe gewählt werden. Dieser ist entweder ein , die Anzahl von führenden s ist beliebig. Oder er ist ein oder , ohne führende s ist aber die Anzahl von führenden s oder s beliebig.
Jaffes Pumping-Lemma
Jeffrey Jaffe hat ein verallgemeinertes Pumping-Lemma entwickelt, das äquivalent zur Definition der regulären Sprachen ist. Es ist also eine hinreichende Bedingung zum Nachweis der Regularität einer Sprache.
Die Sprache ist regulär genau dann wenn eine Konstante existiert so, dass für alle gilt: Es gibt eine Zerteilung so, dass , und für alle und gilt:
.
Variante 2: Das Pumping-Lemma für kontextfreie Sprachen
Annahmen
Sei die Klasse aller Sprachen, die von Chomsky-Hierarchie-Typ-2-Grammatiken erzeugt werden. bezeichnet somit die Klasse der kontextfreien Sprachen.
Aussage des Pumping-Lemmas für kontextfreie Sprachen
Sei eine kontextfreie Sprache, also in . Dann gibt es eine Konstante , sodass sich alle Wörter mit in zerlegen lassen, sodass gilt:
Eine Verallgemeinerung des Pumping-Lemmas für kontextfreie Sprachen ist Ogdens Lemma.
Korrektheitsbeweis
Gegeben sei eine kontextfreie Grammatik G in Chomsky-Normalform mit N Variablen, für die gilt, dass sie gerade die gewünschte Sprache beschreibt. Sei nun ein Wort aus dieser Sprache gegeben, für das gilt: .
Betrachten wir nun einen Ableitungsbaum T für mit Höhe h. Da unsere Sprache in CNF angegeben wurde, hat T die Form eines Binärbaumes. Daraus folgt für die Höhe von T . Es gibt also einen Pfad in T von der Wurzel zu einem Blatt, für den gilt, dass er Länge hat. Es existieren also zwei Knoten auf diesem Pfad mit , welche die gleichen Variablen von G repräsentieren.
Betrachtet man den Teilbaum , welcher von aus aufgespannt wird, so bilden dessen Blätter den Teilstring . Der Teilbaum , welcher von aufgespannt wird, besitzt als Teilbaum den Baum . Man kann also die Blätter von aufteilen in Blätter links von und Blätter rechts von und erhält somit eine Aufteilung der Blätter von der Form . Ebenso unterteilt der Teilbaum den gesamten Ableitungsbaum in drei Teile . Wir erhalten also als Aufteilung die Teilstrings , welche im Ableitungsbaum links bzw. rechts von dem von aufgespannten Teilbaum liegen, die Teilstrings , welche in dem Teilbaum liegen nicht jedoch in , und zu guter Letzt den Teilstring , welcher in liegt. Da und die gleichen Variablen unserer Grammatik repräsentieren, folgt daraus, dass der Pfad von nach beliebig oft wiederholt werden kann. Durch eine Wiederholung des Pfades würden wir Worte der Form erzeugen, ohne unsere Sprache zu verlassen. Womit wir das Pumping-Lemma für kontextfreie Sprachen bewiesen hätten.
Beispiel
Ist die Sprache kontextfrei?
Wir nehmen an, sei kontextfrei. Sei dann die zugehörige Konstante aus dem Pumping-Lemma.
Wir betrachten das Wort . Es muss dann eine Zerlegung geben, sodass , , für alle ist. Da , enthält das Wort höchstens zwei verschiedene Buchstaben. Da , kann nicht von allen drei Buchstaben gleich viele enthalten. Also ist nicht kontextfrei.