Warum verwendet das Pumping-Lemma für kontextfreie Sprachen uvwxy, das für reguläre uvw?


Antworten:


13

Beide Pump-Lemmas haben eine intuitive Erklärung in Bezug auf einen Automaten, der eine Sprache erkennen kann.

Eine reguläre Sprache kann von einem endlichen Automaten erkannt werden. Alle Wörter werden erkannt durch:

  • entweder ein endlicher Weg durch den Automaten: Wörter, die kürzer als die Pumplänge sind;
  • oder ein Pfad, der durch einen Knoten verläuft, an dem sich eine Schleife befindet. In diesem Fall ist es möglich, die Schleife beliebig oft zu durchlaufen: Dies ist der Teil, wobei der Pfad durch eine Runde der Schleife ist und ist die Anzahl der Lops.ynyn

Eine kontextfreie Sprache kann von einem Pushdown-Automaten erkannt werden. Alle Wörter werden erkannt durch:

  • entweder ein endlicher Weg durch den Automaten: Wörter, die kürzer als die Pumplänge sind;
  • oder ein Pfad, der sowohl eine Schleife mit Pushs zum Stapel als auch eine andere Schleife mit entsprechenden Pops enthält. Pushs und Pops müssen ausgeglichen sein, um am Ende einen leeren Stapel zu erhalten. Dann enthält das Wort eine Schleife mit Push , einen weiteren Pfad und eine Schleife mit Pops . Die Anzahl der Läufe durch die beiden Schleifen muss gleich sein, kann aber eine beliebige Anzahl sein, daher das mittlere Bit .vwxvnwxn

Eine ähnliche Intuition erhalten Sie auch durch die Art und Weise, wie reguläre und kontextfreie Sprachen durch einen regulären Ausdruck bzw. eine kontextfreie Grammatik angegeben werden können.

Wenn ein Wort durch einen regulären Ausdruck erkannt wird, gilt Folgendes:

  • Entweder verwendet das Wort einen Teil des Ausdrucks unter dem Operator (Kleene-Stern), und dieser Teil kann beliebig oft wiederholt werden.y
  • oder das Wort verwendet keinen Teil des Ausdrucks unter einem Stern und kann nicht länger als der Ausdruck selbst sein.

Wenn ein Wort von einer kontextfreien Grammatik erkannt wird, dann:

  • Es kann sein, dass das Wort von einem Analysebaum erkannt wird, in dem ein Teilbaum ist, der vom Nichtterminal erkannt wird , und ein Teilbaum dieses Teilbaums von demselben Nichtterminal erkannt wird . In diesem Fall sei der Teil des Wortes, der von , und der Teil, der von erkannt wird . Sie erhalten auch einen gültigen Analysebaum, wenn Sie durch ersetzen oder umgekehrt. Da nach dem Ersetzen enthältT.1EINT.0EINwT.0vwxT.1T.1T.0T.1T.0T.0 durch können Sie die Kopie von in durch ersetzen und so weiter. Dies bedeutet, dass Sie durch , , usw. ersetzen und trotzdem ein Wort mit einem gültigen Analysebaum erhalten können.T.1T.0T.1T.1vwxwv2wx2v3wx3
  • Andernfalls gibt es keinen Teilbaum des Analysebaums, der dasselbe Nichtterminal wiederverwendet, und in diesem Fall ist die Länge des Wortes begrenzt, da die Tiefe des Analysebaums durch die Anzahl der Nichtterminale in der Grammatik begrenzt ist.

Auch eine lustige Tatsache ... es gibt zunehmend kompliziertere Grammatiken (z. B. baumnahe Grammatiken ), die zunehmend komplexere Sprachen erkennen (in diesem Fall anscheinend ). {einnbncndn|n>0}}
user541686

6

Das liegt an der "Struktur" der Sprachen, die von den jeweiligen Pump-Lemmas beobachtet wird. Schauen Sie sich die Proofs der jeweiligen Pumpenergebnisse an.

Für reguläre Sprachen ist die Struktur linear, und für jedes lange Wort gibt es einen Zustand, der bei der akzeptierenden Berechnung eines Automaten mit endlichen Zuständen zweimal wiederholt wird. Die zwischen diesen Zuständen gelesene Zeichenfolge kann wiederholt werden.

Die Struktur kontextfreier Sprachen ist verschachtelt und baumartig. Wiederum hat ein langes Wort einen Ableitungsbaum, der ein Nichtterminal auf einem der Pfade im Baum wiederholt. Diese Struktur kann auch wiederholt werden, generiert jedoch zwei Zeichenfolgen, sowohl links als auch rechts.


4

Das Pump-Lemma für kontextfreie Sprachen ist im Kern eine Anwendung des Pigeonhole-Prinzips. Wenn wir ein ausreichend langes Wort in der Sprache nehmen und einen seiner Analysebäume betrachten, gibt es einen Pfad, auf dem sich eines der Nichtterminals wiederholt. Auf diese Weise können wir einen Teil des Wortes durch Ausschneiden und Einfügen "pumpen".

Betrachten Sie als Beispiel den folgenden Analysebaum:

Baum analysieren

Die sich wiederholenden nicht terminale ist . Wir können die Wiederholung beseitigen, um den Analysebaum zu erhalten:EIN

Baum analysieren

Wir können auch die Wiederholung "pumpen", um den Analysebaum zu erhalten:

Baum analysieren

In Bezug auf die Wörter selbst haben wir mit dem Wort und zuerst das Wort erhaltenseinbeinceinbeinsseinceins und dann das Wort seinbeinbeinceinbeinbeins.

Das Pumpen entspricht dem Variieren der Anzahl der Anwendungen der Ableitung EINeinbEINbein. Sie können sehen, dass zwei verschiedene Teile gleichzeitig gepumpt werden. Dies ist notwendig für Sprachen wie{einnbn::n0}}: das ein und b Teile müssen separat gepumpt werden.

Überlegen Sie nun, was passiert, wenn wir dieselben Argumente auf eine linke reguläre Grammatik anwenden :

Baum analysieren

Da die Grammatik regelmäßig belassen wird, erfolgt die gepumpte Ableitung EINeinbEINenthält nur ein gepumptes Teil. Dies ist aufgrund der Form der Analysebäume bei linken regulären Grammatiken immer der Fall.

In Bezug auf die Zersetzung uvwxyDies impliziert, dass x=ϵ, und so uvichwxichy=uvichwyDies ist genau die Form des Pump-Lemmas für reguläre Sprachen (unter Berücksichtigung wyals ein einziges Wort). Die besondere Form der Analysebäume in der linken regulären Grammatik ermöglicht es uns, ein stärkeres Pump-Lemma zu erhalten.

Gutschrift: Alle mit dem Syntax Tree Generator gezeichneten Analysebäume .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.