Pushdown -Automaten

Combinational logic Finite-state machine Pushdown automaton Turing machine Automata theoryAutomata theory.svg
About this image
Kurs von Automaten
(Klicken auf jede Ebene erhält einen Artikel zu diesem Thema)

In dem Theorie der Berechnungein Zweig von Theoretische Informatik, a Pushdown -Automaten (PDA) ist eine Art von Art von Automat das beschäftigt a Stapel.

Pushdown -Automaten werden in Theorien darüber verwendet, was von Maschinen berechnet werden kann. Sie sind fähiger als Finite-State-Maschinen aber weniger fähig als Turing -Maschinen (sehen unter).Deterministische Pushdown -Automaten kann alle erkennen deterministische kontextfreie Sprachen Während nicht deterministische Kontextfreie Sprachen, mit dem ersteren oft verwendet in Parser Entwurf.

Der Begriff "Pushdown" bezieht sich auf die Tatsache, dass die Stapel kann als "geschoben" wie ein Tablettspender in einer Cafeteria angesehen werden, da die Operationen nie mit anderen Elementen als dem Top -Element funktionieren. EIN StackautomatonIm Gegensatz dazu ermöglicht es den Zugang zu und Operationen auf tiefere Elemente. Stack Automata kann einen streng größeren Satz von Sprachen erkennen als Pushdown -Automaten.[1] EIN verschachtelter Stackautomaton Ermöglicht den vollen Zugriff und ermöglicht auch, dass gestapelte Werte ganze Substacks sein und nicht nur einzelne endliche Symbole.

Informelle Beschreibung

Ein Diagramm eines Pushdown -Automatens

A Finite-State-Maschine Betrachtet man nur das Eingangssignal und den aktuellen Zustand: Es hat keinen Stapel zum Arbeiten. Es wählt einen neuen Zustand, das Ergebnis der Befolgung des Übergangs. EIN Pushdown -Automat (PDA) unterscheidet sich von einer endlichen Zustandsmaschine auf zwei Arten:

  1. Es kann die Oberseite des Stapels verwenden, um zu entscheiden, welcher Übergang erforderlich ist.
  2. Es kann den Stapel im Rahmen der Durchführung eines Übergangs manipulieren.

Ein Pushdown -Automaton liest eine bestimmte Eingangszeichenfolge von links nach rechts. In jedem Schritt wählt es einen Übergang, indem eine Tabelle nach Eingabesymbol, aktuellem Zustand und dem Symbol oben im Stapel indiziert wird. Ein Pushdown -Automat kann auch den Stapel im Rahmen der Durchführung eines Übergangs manipulieren. Die Manipulation kann darin bestehen, ein bestimmtes Symbol auf die Oberseite des Stapels zu schieben oder die Oberseite des Stapels abzubrechen. Der Automat kann den Stapel alternativ ignorieren und ihn so lassen.

Zusammenstellen: Bei einem Eingangsymbol, einem aktuellen Zustand und einem Stapelsymbol kann der Automat einem Übergang zu einem anderen Zustand folgen und den Stapel optional manipulieren (drücken oder pop).

Wenn in jeder Situation höchstens ein solcher Übergangsmaßnahme möglich ist, wird der Automat genannt Deterministischer Pushdown -Automaten (DPDA). Wenn im Allgemeinen mehrere Aktionen möglich sind, wird der Automaton a genannt Allgemeines, oder Nichtdeterministisch, PDA. Eine bestimmte Eingangszeichenfolge kann einen nicht deterministischen Pushdown -Automat zu einer von mehreren Konfigurationssequenzen führen. Wenn einer von ihnen nach dem Lesen der vollständigen Eingangszeichenfolge zu einer akzeptierenden Konfiguration führt, soll der letztere zu dem gehören Sprache, die vom Automaten akzeptiert wird.

Formale Definition

Wir verwenden Standard -formelle Sprachnotation: bezeichnet den Satz der endlichen Länge Saiten über Alphabet und bezeichnet die leerer String.

Eine PDA wird offiziell als 7-Tupel definiert:

wo

  • ist ein endlicher Satz von Zustände
  • ist ein endliches Set, das als das bezeichnet wird Alphabet eingeben
  • ist ein endliches Set, das als das bezeichnet wird Stack Alphabet
  • ist eine endliche Teilmenge von , das Übergangsbeziehung
  • ist der Staat starten
  • ist der Erstes Stapelsymbol
  • ist der Satz von Staaten akzeptieren

Ein Element ist ein Übergang von . Es hat die beabsichtigte Bedeutung, dass im Zustand auf der Eingabe und mit als oberste Stacksymbol kann lesen , ändern Sie den Staat auf , Pop ersetzen es durch Schieben . Das Die Komponente der Übergangsbeziehung wird verwendet, um zu formalisieren, dass die PDA entweder einen Buchstaben aus der Eingabe lesen kann oder die Eingabe unberührt bleibt.

In vielen Texten[2]: 110 Die Übergangsbeziehung wird durch eine (äquivalente) Formalisierung ersetzt, wo

  • ist der Übergangsfunktion, Kartierung in endliche Untergruppen von

Hier enthält alle möglichen Handlungen im Zustand mit Auf dem Stapel beim Lesen auf der Eingabe. Man schreibt zum Beispiel Genau wann Weil . Beachten Sie, dass endlich In dieser Definition ist wichtig.

Berechnungen

Ein Schritt des Pushdown -Automatens

Um die Semantik des Pushdown -Automatens zu formalisieren, wird eine Beschreibung der aktuellen Situation eingeführt. Jeder 3-Tupel wird eine sofortige Beschreibung (ID) von genannt , einschließlich des aktuellen Zustands, des Teils des Eingabebandes, das nicht gelesen wurde, und den Inhalt des Stapels (oberste Symbol zuerst geschrieben). Die Übergangsbeziehung Definiert die Stufenbeziehung von auf sofortige Beschreibungen. Für Anweisungen Es gibt einen Schritt , für jeden Und jeder .

Im Allgemeinen sind Pushdown -Automaten nicht deterministisch Es kann mehrere mögliche Schritte geben. Alle dieser Schritte können in einer Berechnung ausgewählt werden. Mit der obigen Definition in jedem Schritt wird immer ein einzelnes Symbol (oben am Stapel) aufgetaucht und ersetzt es durch so viele Symbole, wie dies erforderlich ist. Infolgedessen wird kein Schritt definiert, wenn der Stapel leer ist.

Berechnungen des Pushdown -Automatiks sind Sequenzen von Schritten. Die Berechnung beginnt im Anfangszustand Mit dem ersten Stapelsymbol auf dem Stapel und eine Schnur Auf dem Eingangsband, somit mit anfänglicher Beschreibung . Es gibt zwei Akzeptanzmodi. Der Pushdown -Automaton akzeptiert entweder nach dem endgültigen Zustand, was bedeutet, dass der Automaton nach dem Lesen des Eingangs einen Akzeptanzstatus erreicht (in ) oder es akzeptiert durch leeren Stack (), was bedeutet, dass der Automaton nach dem Lesen seines Eingangs seinen Stapel entleert. Der erste Akzeptanzmodus verwendet den internen Speicher (Status), das zweite der externe Speicher (Stack).

Formal definiert man

  1. mit und (endgültiger Zustand)
  2. mit (leerer Stapel)

Hier repräsentiert die reflexiv und Transitive Schließung der Stufenbeziehung bedeutet eine beliebige Anzahl aufeinanderfolgender Schritte (Null, eine oder mehrere).

Für jeden einzelnen Pushdown -Automaten müssen diese beiden Sprachen keine Beziehung haben: Sie können gleich sein, aber dies ist normalerweise nicht der Fall. Eine Spezifikation des Automatons sollte auch die beabsichtigte Akzeptanzart enthalten. Beide Akzeptanzbedingungen übernommen alle Pushdown -Automaten definieren dieselbe Sprachenfamilie.

Satz. Für jeden Pushdown -Automaton Man kann einen Pushdown -Automaten erstellen so dass und umgekehrt für jeden Pushdown -Automaton Man kann einen Pushdown -Automaten erstellen so dass

Beispiel

Das Folgende ist die formale Beschreibung der PDA, die die Sprache erkennt nach dem endgültigen Zustand:

PDA für
(nach endgültigem Zustand)

, wo

  • Zustände:
  • Alphabet eingeben:
  • Stack Alphabet:
  • Zustand starten:
  • Starten Sie Stacksymbol: Z
  • Staaten akzeptieren:

Die Übergangsbeziehung besteht aus den folgenden sechs Anweisungen:

,
,
,
,
, und
.

In Worten sagen die ersten beiden Anweisungen das im Zustand p Jedes Mal das Symbol 0 ist gelesen, einer A wird auf den Stapel gedrückt. Schubsymbol A über einen anderen A wird formalisiert als Ersatztoper A durch Aa (Und ähnlich zum Schieben des Symbols A über a Z).

Die dritte und vierte Anleitung besagt, dass der Automaten jederzeit vom Staat wechseln kann p zu sagen q.

Die fünfte Anweisung besagt das im Staat qfür jedes Symbol 1 Lesen Sie, einer A ist geknallt.

Schließlich besagt der sechste Anweis q Staat zu akzeptieren r Nur wenn der Stapel aus einer einzigen besteht Z.

Es scheint keine allgemein verwendete Darstellung für PDA zu geben. Hier haben wir die Anweisung dargestellt durch eine Kante vom Staat p zu sagen q beschriftet von (lesen a; ersetzen A durch ).

Verständnis des Berechnungsprozesses

Berechnung akzeptieren für 0011

Das Folgende zeigt, wie die obige PDA auf verschiedenen Eingangszeichenfolgen berechnet. Das Index M Aus dem Schrittsymbol ist hier weggelassen.

  1. Eingabestring = 0011. Es gibt verschiedene Berechnungen, abhängig von dem Moment, in dem sich der Zustand befindet p zu sagen q wird gemacht. Nur eines davon akzeptiert.

    1. Der letzte Zustand akzeptiert, aber der Eingang wird nicht so akzeptiert, wie er nicht gelesen wurde.

    2. Keine weiteren Schritte möglich.

    3. Berechnung akzeptieren: endet beim Akzeptieren des Zustands, während eine vollständige Eingabe gelesen wurde.
  2. Eingabestring = 00111. Auch hier gibt es verschiedene Berechnungen. Nichts davon akzeptiert.

    1. Der letzte Zustand akzeptiert, aber der Eingang wird nicht so akzeptiert, wie er nicht gelesen wurde.

    2. Keine weiteren Schritte möglich.

    3. Der endgültige Zustand akzeptiert, aber der Eingang wird nicht so akzeptiert, wie er (vollständig) nicht gelesen wurde.

PDA und kontextfreie Sprachen

Jeder Kontextfreie Grammatik Kann in einen äquivalenten nicht deterministischen Pushdown -Automaten umgewandelt werden. Der Ableitungsprozess der Grammatik wird in links links simuliert. Wo die Grammatik einen Nicht-Terminal umschreibt, nimmt die PDA den obersten Nicht-terminalen aus ihrem Stapel und ersetzt sie durch den rechten Teil einer grammatikalischen Regel (erweitern). Wenn die Grammatik ein Terminalsymbol erzeugt, liest die PDA ein Symbol aus der Eingabe, wenn es das oberste Symbol auf dem Stapel ist (passen). In gewissem Sinne enthält der Stapel der PDA die unverarbeiteten Daten der Grammatik, die einer Vorbestellung eines Derivationsbaums entsprechen.

Technisch gesehen hat die PDA bei einer kontextfreien Grammatik einen einzelnen Zustand 1, und ihre Übergangsbeziehung wird wie folgt konstruiert.

  1. Für jede Regel (erweitern)
  2. Für jedes Terminalsymbol (passen)

Die PDA akzeptiert mit leerem Stapel. Sein anfängliches Stapelsymbol ist das Startsymbol der Grammatik.

Für eine kontextfreie Grammatik in Greibach Normale Form, definieren (1, γ) ∈ δ (1,a,A) Für jede Grammatikregel Aaγ liefert auch einen äquivalenten nicht -detterministischen Pushdown -Automat.[2]: 115

Das Gegenteil, eine Grammatik für eine bestimmte PDA zu finden, ist nicht so einfach. Der Trick besteht darin, zwei Zustände der PDA in die Nicht -Terminals der Grammatik zu versetzen.

Satz. Für jeden Pushdown -Automaton Man kann eine kontextfreie Grammatik konstruieren so dass .[2]: 116

Die Sprache der Strings, die durch einen deterministischen Pushdown -Automat (DPDA) akzeptiert wird deterministische kontextfreie Sprache. Nicht alle kontextfreien Sprachen sind deterministisch.[Anmerkung 1] Infolgedessen ist die DPDA eine streng schwächere Variante der PDA. Sogar für reguläre SprachenEs gibt ein Problem der Größenexplosion: für jeden rekursive Funktion und für willkürlich große ganze Zahlen Es gibt eine PDA mit Größe Beschreibung einer regulären Sprache, deren kleinste DPDA zumindest hat Zustände.[4] Für viele nicht reguläre PDAs würde jede äquivalente DPDA eine unbegrenzte Anzahl von Zuständen erfordern.

Ein endlicher Automat mit Zugriff auf zwei Stapel ist ein leistungsfähigeres Gerät, das mit der Stromversorgung von A entspricht Turing Maschine.[2]: 171 EIN linear begrenzter Automaten ist ein Gerät, das leistungsfähiger ist als ein Pushdown -Automat, aber weniger als eine Turing -Maschine.[Anmerkung 2]

PDA- und Turing -Maschinen

Ein Pushdown-Automaton entspricht rechnerisch zu einer "eingeschränkten" Turing-Maschine (TM) mit zwei Bändern, die auf folgende Weise eingeschränkt sind. Auf dem ersten Band kann der TM nur die Eingabe lesen und sich von links nach rechts bewegen (es kann keine Änderungen vornehmen ). Auf dem zweiten Band kann es nur "Push "- und Pop" -Daten. Oder äquivalent kann es mit der Einschränkung gelesen, schreiben und sich nach rechts bewegen, dass die einzige Aktion, die es bei jedem Schritt ausführen kann -Das meiste Zeichen in der Saite (Push).

Dass eine PDA schwächer ist als ein TM kann auf die Tatsache gebracht werden, dass das Verfahren einige Daten löscht. Um eine PDA so stark wie ein TM zu machen, müssen wir die Daten speichern, die durch 'Pop' verloren gehen. Wir können dies erreichen, indem wir einen zweiten Stapel einführen. Im TM-Modell von PDA des letzten Absatzes entspricht dies einem TM mit 3 Bändern, wobei das erste Band das schreibgeschützte Eingangsband ist, und das 2. und das 3. Band sind die "Push and Pop" (Stapel) Bänder (Stapel) . Damit eine solche PDA eine bestimmte TM simuliert, geben wir das erste Band die Eingabe der PDA und halten beide Stapel leer. Anschließend drückt es den gesamten Eingang vom Eingangsband zum ersten Stapel. Wenn der gesamte Eingang in den 1. Stapel übertragen wird, gehen wir jetzt wie ein normales TM fort, wobei das Bewegung rechts am Klebeband das gleiche ist wie ein Symbol aus dem 1. Stapel und das Schieben eines (möglicherweise aktualisierten) Symbols in den zweiten Stapel, und Das Linken entspricht dem Sturz eines Symbols aus dem 2. Stapel und dem Schieben von (möglicherweise aktualisiertem) Symbol in den ersten Stapel. Wir haben daher eine PDA mit 2 Stapeln, die jeden TM simulieren können.

Generalized Pushdown Automaton (GPDA)

Eine GPDA ist eine PDA, die eine ganze Reihe bekannter Länge in den Stapel schreibt oder eine ganze Saite in einem Schritt aus dem Stapel entfernt.

Eine GPDA wird offiziell als 6-Tupel definiert:

wo , und sind genauso definiert wie eine PDA.

:

ist die Übergangsfunktion.

Berechnungsregeln für eine GPDA sind die gleichen wie eine PDA, außer dass die und 'S sind jetzt Saiten statt Symbole.

GPDAs und PDAs sind insofern gleichwertig, wenn eine Sprache von einer PDA erkannt wird, sie auch von einer GPDA erkannt wird und umgekehrt.

Man kann einen analytischen Beweis für die Äquivalenz von GPDAs und PDAs unter Verwendung der folgenden Simulation formulieren:

Lassen ein Übergang der GPDA sein

wo .

Erstellen Sie die folgenden Übergänge für die PDA:

Stackautomaton

Als Verallgemeinerung von Pushdown -Automaten, Ginsburg, Greibach und Harrison (1967) untersuchten Stack Automata, die zusätzlich nach links oder rechts in die Eingangszeichenfolge (umgeben von Sondermarkierungssymbolen umgeben sind, um das Ausrutschen zu verhindern) und im Stapel im schreibgeschützten Modus nach oben oder unten steigen.[5][6] Ein Stack -Automat wird genannt Nichtzufer Wenn es nie aus dem Stapel kommt. Die Klasse von Sprachen, die von nicht deterministischen, nicht erasierten Stapelautomaten akzeptiert werden, ist Nspace(n2), was ein Superset der ist Kontextsensitive Sprachen.[1] Die Klasse von Sprachen, die durch deterministische, nicht erasierte Stack -Automata akzeptiert werden, ist DSpace(n≤ log (n)).[1]

Wechselnde Pushdown -Automaten

Ein Wechselnder Pushdown -Automaten (APDA) ist ein Pushdown -Automat mit einem Zustandssatz

  • wo .

Staaten in und werden genannt existenziell bzw. Universal-. In einem existenziellen Zustand wählt eine APDA -Nichtdeterministisch den nächsten Zustand und akzeptiert, ob mindestens ein der resultierenden Berechnungen akzeptieren. In einem universellen Staat bewegt sich APDA in alle nächsten Zustände und akzeptiert, ob alle Die resultierenden Berechnungen akzeptieren.

Das Modell wurde von vorgestellt von Chandra, Kozen und Stockmeyer.[7] Ladner, Lipton und Stockmeyer[8] bewies, dass dieses Modell gleichwertig ist Nachfolger d.h. eine Sprache wird von einer APDA akzeptiert dann und nur dann, wennEs kann durch einen Exponential-Zeit-Algorithmus entschieden werden.

Aizikowitz und Kaminski[9] eingeführt Synchronisierte alternierende Pushdown -Automata (SAPDA), die gleichwertig sind Konjunktivgrammatiken genauso wie nicht deterministische PDA entsprechen kontextfreien Grammatiken.

Siehe auch

Anmerkungen

  1. ^ Der Satz von gleichmäßiger Länge Palindrome von Bits kann nicht von einer deterministischen PDA erkannt werden, aber ist a Kontextfreie Sprache, mit dem Grammatik S → ε | 0S0 | 1S1.[3]
  2. ^ Lineare begrenzte Automaten sind Akzeptoren für die Klasse der kontextsensitiven Sprachen,[2]: 225 Dies ist eine ordnungsgemäße Superklasse der kontextfreien Sprachen und eine ordnungsgemäße Unterklasse von Turing-Anerkennbar (d. H. rekursiv aufgezählt) Sprachen.[2]: 228

Verweise

  1. ^ a b c John E. Hopcroft; Jeffrey D. Ullman (1967). "Nichterasing Stack Automata". Journal of Computer and System Sciences. 1 (2): 166–186. doi:10.1016/s0022-0000 (67) 80013-8.
  2. ^ a b c d e f John E. Hopcroft und Jeffrey D. Ullman (1979). Einführung in die Automatentheorie, Sprachen und Berechnung. Lesen/MA: Addison-Wesley. ISBN 0-201-02988-x.
  3. ^ John E. Hopcroft; Rajeev Motwani; Jeffrey D. Ullman (2003). Einführung in die Automatentheorie, Sprachen und Berechnung. Addison Wesley. Hier: Sekte.6.4.3, S.249
  4. ^ Holzer, Markus; Kutrib, Martin (2019). "Nicht rekursive Kompromisse sind" fast überall "". Computing mit Voraussicht und Industrie. 11558: 25–36. doi:10.1007/978-3-030-22996-2_3. Dies folgt aus dem Zitierten [22, Satz 7] und der angegebenen Beobachtung, dass Jeder deterministische Pushdown -Automat kann in einen äquivalenten endlichen Automaten umgewandelt werden[klären] von höchstens doppelt exponentiell Größe.
  5. ^ Seymour Ginsburg, Sheila A. Greibach und Michael A. Harrison (1967). "Stack Automata und Kompilien". J. ACM. 14 (1): 172–201. doi:10.1145/321371.321385.
  6. ^ Seymour Ginsburg, Sheila A. Greibach und Michael A. Harrison (1967). "Einweg-Stack-Automaten". J. ACM. 14 (2): 389–418. doi:10.1145/321386.321403.
  7. ^ Chandra, Ashok K.; Kozen, Dexter C.; Stockmeyer, Larry J. (1981). "Wechsel". Journal of the ACM. 28 (1): 114–133. doi:10.1145/322234.322243. ISSN 0004-5411.
  8. ^ Ladner, Richard E.; Lipton, Richard J.; Stockmeyer, Larry J. (1984). "Wechseln Sie Pushdown und Stack Automata". Siam Journal über Computing. 13 (1): 135–155. doi:10.1137/0213010. ISSN 0097-5397.
  9. ^ Aizikowitz, Tamar; Kaminski, Michael (2011). "LR (0) Konjunktive Grammatiken und deterministische synchronisierte alternierende Pushdown -Automaten". Informatik - Theorie und Anwendungen. Vorlesungsnotizen in Informatik. Vol. 6651. S. 345–358. doi:10.1007/978-3-642-20712-9_27. ISBN 978-3-642-20711-2. ISSN 0302-9743.

Externe Links

  • JFLAP, Simulator für verschiedene Arten von Automata, einschließlich nicht deterministischer Pushdown -Automaten
  • Koan, ein weiterer Simulator für mehrere Maschinentypen, einschließlich nicht deterministischer Pushdown -Automaten (C ++, Windows, Linux, MacOS)