www.wikidata.de-de.nina.az
Ein Kellerautomat KA auch PDA fur englisch pushdown automaton auch Stackmaschine ist ein Automat im Sinne der theoretischen Informatik ein Konstrukt das verwendet wird um gewisse Eigenschaften von Problemen und Algorithmen zu analysieren und zu beweisen Der Kellerautomat ist ein endlicher Automat der um einen Kellerspeicher a g Stack erweitert wurde Ein Kellerautomat mit zwei Kellerspeichern ist gleichmachtig zur Turingmaschine Inhaltsverzeichnis 1 Funktionsweise 1 1 Beispiel 2 Formale Definition 2 1 Anmerkungen 2 2 Akzeptierte Sprache 2 3 Beispiel 3 Kellerautomaten und formale Sprachen 4 Praktische Implementierung eines Kellerautomaten 5 Anwendungen in Technik und Wissenschaft 6 Siehe auch 7 WeblinksFunktionsweise Bearbeiten nbsp KellerautomatEin Kellerautomat dient dazu zu klaren ob eine Eingabe d h ein Wort aus null einem oder mehreren Zeichen zu einer bestimmten formalen Sprache d h einer Menge von Wortern gehort Dafur arbeitet der Automat das Eingabewort Schritt fur Schritt von links nach rechts ab und kann dabei eine Reihe von Zustanden annehmen Zu Anfang ist er im sogenannten Startzustand Typischerweise wird in jedem Verarbeitungsschritt ein Zeichen aus der Eingabe gelesen Ausserdem wird in jedem Verarbeitungsschritt das oberste Zeichen vom Keller gelesen d h entfernt Abhangig vom aktuellen Zustand dem gerade gelesenen Eingabezeichen und dem gerade gelesenen Kellerzeichen geht der Automat in einen neuen Zustand uber und legt anstelle des entfernten Kellerzeichens ein neues Wort auf dem Keller ab Wenn die gesamte Eingabe gelesen wurde und der Keller leer ist gehort die Eingabe zur vom Automaten erkannten Sprache Allgemein sind allerdings mehrere Abweichungen von der obigen Erklarung moglich Die erkannte Sprache kann auch als die Menge der Worter definiert werden bei deren Abarbeitung der Kellerautomat einen sogenannten Endzustand erreicht unabhangig davon ob dabei der Keller geleert wird Nicht in jedem Verarbeitungsschritt muss ein Zeichen aus der Eingabe gelesen werden Wenn keins gelesen wurde wird das gelesene Wort als e displaystyle varepsilon nbsp das leere Wort bezeichnet Fur manche Kombinationen von Zustand Eingabezeichen oder e displaystyle varepsilon nbsp und Kellerzeichen kann der Kellerautomat die Wahl zwischen mehreren Ubergangen also Kombinationen von Folgezustand und Kellerwort haben Die Eingabe gilt in diesem Fall als erkannt wenn der Keller geleert werden kann bzw ein Endzustand erreicht werden kann Beispiel Bearbeiten Um das Prinzip eines Kellerautomaten zu verdeutlichen wird haufig die syntaktische Untersuchung geklammerter Ausdrucke herangezogen Beispielsweise muss in einem Ausdruck einer bestimmten Sprache zu jeder offnenden Klammer auch eine schliessende Klammer existieren Beispiel Der Automat beginnt in einem Startzustand z0 im Keller befindet sich ein Zeichen welches das Ende kennzeichnet Bei der Abarbeitung des Ausdrucks bewegt sich der Lesekopf Zeichen fur Zeichen weiter Stosst er dabei auf eine offnende Klammer so wird diese in den Keller geschrieben Tritt in der weiteren Abarbeitung eine schliessende Klammer auf so wird das oberste Klammer auf Zeichen im Keller wieder geloscht Der Ausdruck ist dann erfolgreich abgearbeitet wenn der Lesekopf das Ende des Eingabebandes erreicht hat und sich im Keller ausschliesslich das Zeichen befindet Befande sich hingegen noch eine geoffnete Klammer nach der Ausdrucksabarbeitung im Keller so wurde dies bedeuten dass eine schliessende Klammer fehlt und ein syntaktischer Fehler vorliegt Auch wenn das Ende des Kellers erreicht wird bevor die Eingabe vollstandig abgearbeitet wurde liegt ein Fehler vor In diesem Fall befinden sich zu viele schliessende Klammern in der Eingabe Formale Definition BearbeitenEin nichtdeterministischer Kellerautomat NKA wird definiert als ein 7 Tupel M Z S G d z 0 F displaystyle M Z Sigma Gamma delta z 0 F nbsp wobei Z displaystyle Z nbsp eine endliche Menge von Zustanden S displaystyle Sigma nbsp ein Eingabealphabet G displaystyle Gamma nbsp das Kelleralphabet d displaystyle delta nbsp die Zustandsubergangsfunktion d Z S e G P Z G displaystyle delta colon Z times Sigma cup varepsilon times Gamma rightarrow mathcal P Z times Gamma nbsp die nur auf endliche Teilmengen von Z G displaystyle Z times Gamma nbsp abbildet z 0 Z displaystyle z 0 in Z nbsp der Startzustand G displaystyle in Gamma nbsp das Anfangssymbol im Keller und F Z displaystyle F subseteq Z nbsp eine Menge von Endzustandenist Dabei bezeichnet e displaystyle varepsilon nbsp das leere Wort und G displaystyle Gamma nbsp die Menge der Worter des Alphabets G displaystyle Gamma nbsp Manchmal findet man auch Kellerautomaten als 6 Tupel M Z S G d z 0 displaystyle M Z Sigma Gamma delta z 0 nbsp in diesem Fall gibt es keine Endzustande und der Kellerautomat akzeptiert ein Wort falls nach der Abarbeitung des Wortes der Keller leer ist Wenn die Ubergangsfunktion die Eigenschaft z Z a S g G d z a g d z e g 1 displaystyle forall z in Z forall a in Sigma forall g in Gamma left delta z a g right left delta z varepsilon g right leq 1 nbsp erfullt spricht man von einem deterministischen Kellerautomaten Zu einer festen Eingabe gibt es dann hochstens eine Zustandsubergangsabfolge Mehrdeutigkeiten konnen also nicht auftreten Anmerkungen Bearbeiten Fur einen nichtdeterministischen Kellerautomaten ist es moglich in der Definition auf die Menge der Endzustande zu verzichten Stattdessen definiert man dass der nichtdeterministische Kellerautomat seine Eingabe akzeptiert wenn es einen Berechnungspfad gibt bei dem nach dem Einlesen der Eingabe der Keller das leere Wort enthalt Die beiden Definitionen sind hinsichtlich der akzeptierten Sprachen aquivalent Fur einen deterministischen Kellerautomaten ist diese Aussage im Allgemeinen jedoch falsch Der deterministische Kellerautomat der uber Endzustande akzeptiert ist machtiger Das heisst dass ein deterministischer Kellerautomat terminieren kann sobald ein Endzustand erreicht wurde aber nicht sofort terminieren muss Dabei spielt der Keller keine Rolle Er akzeptiert ein Wort wenn er terminiert und das Eingabewort leer ist Ist es nicht leer und es sind keine Regeln mehr anwendbar wurde es nicht akzeptiert Fur einen solchen bei leerem Keller akzeptierenden nichtdeterministischen Kellerautomaten ist es moglich einen aquivalenten Kellerautomaten mit einem einzigen Zustand zu konstruieren indem die Zustande des alten Kellerautomaten vollstandig im Keller des neuen Kellerautomaten simuliert werden In der Definition eines nichtdeterministischen Kellerautomaten kann also neben der Menge der Endzustande auch zusatzlich auf den Startzustand und die Zustandsmenge verzichtet werden Es kann in der Definition eines nichtdeterministischen Kellerautomaten auf e displaystyle varepsilon nbsp Ubergange verzichtet werden Die Zustandsubergangsfunktion ist dann ein Element aus Z S G P Z G displaystyle Z times Sigma times Gamma to mathcal P Z times Gamma nbsp Mit Hilfe der Greibach Normalform zeigt man dass zu jedem nichtdeterministischen Kellerautomaten ein aquivalenter nichtdeterministischer Kellerautomat ohne e displaystyle varepsilon nbsp Ubergange existiert Akzeptierte Sprache Bearbeiten Die Menge der Konfigurationen eines Kellerautomaten ist K Z S G displaystyle K Z times Sigma times Gamma nbsp Ein Element z a g K displaystyle z alpha gamma in K nbsp dieser Menge besteht aus dem aktuellen Zustand z displaystyle z nbsp dem noch zu lesenden Wort a displaystyle alpha nbsp sowie dem Kellerinhalt g displaystyle gamma nbsp Auf K displaystyle K nbsp wird eine Relation K K displaystyle rightsquigarrow subseteq K times K nbsp definiert uber die im Anschluss festgelegt wird welche Worte akzeptiert werden Es ist z a a g g z a g g z Z a S a S g G g g G z g d z a g z a g g z a g g z Z a S g G g g G z g d z e g displaystyle begin aligned rightsquigarrow amp z a alpha g gamma z alpha gamma gamma mid z in Z a in Sigma alpha in Sigma g in Gamma gamma gamma in Gamma z gamma in delta z a g cup amp z alpha g gamma z alpha gamma gamma mid z in Z alpha in Sigma g in Gamma gamma gamma in Gamma z gamma in delta z varepsilon g end aligned nbsp Fur Automaten deren Endzustandsmengen uber die Akzeptanz entscheiden sollen heisst es dann a S displaystyle alpha in Sigma nbsp wird von M displaystyle M nbsp genau dann akzeptiert wenn es ein f F displaystyle f in F nbsp sowie ein g G displaystyle gamma in Gamma nbsp gibt sodass z 0 a f e g displaystyle z 0 alpha rightsquigarrow f varepsilon gamma nbsp Fur Automaten hingegen bei denen die Akzeptanz davon abhangt ob der Keller leer ist lautet die Formulierung a S displaystyle alpha in Sigma nbsp wird von M displaystyle M nbsp genau dann akzeptiert wenn es ein z Z displaystyle z in Z nbsp gibt sodass z 0 a z e e displaystyle z 0 alpha rightsquigarrow z varepsilon varepsilon nbsp oder z 0 a z e displaystyle z 0 alpha rightsquigarrow z varepsilon nbsp Dabei ist displaystyle rightsquigarrow nbsp die reflexive und transitive Hulle von displaystyle rightsquigarrow nbsp Beispiel Bearbeiten Der folgende Kellerautomat M ist deterministisch und erkennt die kontextfreie Sprache L a n b n n gt 0 displaystyle L a n b n n gt 0 nbsp M Z S G d z 0 F displaystyle M Z Sigma Gamma delta z 0 F nbsp Z z 0 z 1 z 2 displaystyle Z left z 0 z 1 z 2 right nbsp S a b displaystyle Sigma left a b right nbsp G a displaystyle Gamma left a right nbsp F z 2 displaystyle F left z 2 right nbsp Definition fur d Parameter FunktionswertZustand Eingabe Keller Zustand Kellerz0 a z0 a 1 z0 a a z0 aa 2 z0 b a z1 e 3 z1 b a z1 e 4 z1 e z2 e 5 nbsp Beispiel Kellerautomat 1 2 Im Zustand z0 werden die fuhrenden a Zeichen der Eingabe gelesen und im Keller gespeichert 3 Bei Eingabe b und einem a als oberstes Kellerelement erfolgt ein Zustandswechsel von z0 zu z1 Abgleich im Keller erfolgt Abgleich bedeutet Loschen des obersten Stack Elementes bzw Stack pop 4 Alle weiteren b Zeichen werden gelesen sofern noch genugend a Zeichen im Keller gespeichert sind Der Keller wird abgeglichen 5 Wenn sich nur noch das Anfangssymbol displaystyle nbsp im Keller befindet und keine Eingabe erfolgt geht der Kellerautomat in den Endzustand z2 uber und akzeptiert damit die Eingabe Erhalt der Kellerautomat beispielsweise die Eingabe aabb so durchlauft er folgende Konfigurationen die hochgestellte Nummer am Pfeil kennzeichnet die benutzte Zustandsubergangsfunktion z0 aabb 1 z0 abb a 2 z0 bb aa 3 z1 b a 4 z1 e 5 z2 e e Dieser Kellerautomat M kann grundsatzlich wenn er begonnen hat den Keller zu lesen nicht wieder schreiben Daher ist die erkannte Sprache insbesondere auch eine lineare Sprache Kellerautomaten und formale Sprachen BearbeitenEin Keller Automat liest eine aus einzelnen Zeichen bestehende Eingabe und akzeptiert oder erkennt diese oder auch nicht Die Menge der akzeptierten Eingaben bildet die durch den Automaten definierte Sprache Der nichtdeterministische Kellerautomat erkennt genau die kontextfreien Sprachen Typ 2 vgl Chomsky Hierarchie Er ist damit machtiger als endliche Automaten welche genau die regularen Sprachen Typ 3 erkennen aber weniger machtig als Turingmaschinen welche genau die rekursiv aufzahlbaren Sprachen Typ 0 erkennen Ein deterministischer Kellerautomat DPDA erkennt die deterministisch kontextfreien Sprachen also nur eine echte Teilmenge der kontextfreien Sprachen Die Bedeutung des Kellerautomaten ergibt sich also daraus dass sich Erkenntnisse uber diesen beispielsweise Aquivalenz mit anderen Automaten auf die kontextfreien Sprachen ubertragen lassen und umgekehrt Praktische Implementierung eines Kellerautomaten BearbeitenAls praktisches Anwendungsbeispiel eines Kellerautomaten sei folgender Parser implementiert in C gegeben welcher eine Sprache die aus Klammerpaaren besteht parst und auf Richtigkeit pruft Der Ausdruck wurde beispielsweise akzeptiert werden falsch hingegen ware da hier eine schliessende Klammer zu viel gegeben ist include lt stdlib h gt include lt stdio h gt include lt string h gt define POP 1 define ACCEPT 2 define ERROR 3 define ALPHABET 3 Grosse des Eingabealphabets define MAX LEN 80 Ein einfacher Kellerautomat pushdown automaton Symbol 0 State 0 PUSH 1 ERROR ACCEPT State 1 PUSH 1 POP ERROR int states 2 ALPHABET 2 1 PUSH 1 ERROR 0 ACCEPT 1 PUSH 1 POP 0 ERROR int main int argc char argv int stack 100 0 int i 0 int action 0 int tos stack char s MAX LEN 1 char p s Eingabe Zeichenkette printf Bitte Ausdruck eingeben fgets s sizeof s stdin s strlen s 1 0 Zeilenvorschub NL von fgets durch binare Null ersetzen Startzustand auf Stack push tos 0 Ausfuhrungsschleife do Aktion auf Basis des Eingabesymbols ermitteln action ERROR for i 0 i lt ALPHABET i if states tos 1 i 2 p action states tos 1 i 2 1 break Ausfuhren der Aktionen if action ERROR printf Unerwartetes Zeichen an Position d n p s break else if action ACCEPT printf Ausdruck akzeptiert n else if action POP tos else tos action Eingabe erweitern p while action ACCEPT return 0 Anwendungen in Technik und Wissenschaft BearbeitenDie Gleitkommaeinheit engl Floating Point Unit FPU der Intel 32 Bit x86 Architektur ist ursprunglich als Kellerautomat engl Stack Machine realisiert Ihr Kellerspeicher besitzt eine Tiefe von 8 Speicherplatzen fur jeweils einen 80 Bit Gleitkommawert Angesichts der Einschrankungen durch das Kellermodell ist tendenziell jedoch erkennbar dass kunftig auch im PC wie in anderen Rechnerarchitekturen ublich vorwiegend Verarbeitungseinheiten mit direkt adressierbaren Registern verwendet werden SIMD Erweiterung Compiler oder Interpreter von Programmiersprachen konnen mit Hilfe von Kellerautomaten entwickelt werden Der Kellerautomat dient dabei der Syntaxanalyse das heisst er uberpruft die syntaktische Korrektheit einer Tokenfolge Siehe auch BearbeitenRegistermaschine umgekehrte polnische Notation Postfix Notation Akzeptor Compiler ParserWeblinks Bearbeiten nbsp Wiktionary Kellerautomat Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Abgerufen von https de wikipedia org w index php title Kellerautomat amp oldid 239358038