Theoretische Informatik – Testvorbereitung – Moritz Resl Bestandteile einer Programmiersprache: a) Syntax (Form): durch kontextfreie Grammatik beschrieben b) Semantik (Bedeutung) 1.) Kontextfreie Sprachen und Grammatiken Alphabet ∑: Nichtleere Menge von Symbolen (Zeichen); Beispiele {0,1} & {a,b,c,}.. Konkatenation: Verkettung (zB. Von x und y; x,y € ∑) Hierbei gilt Assoziativgesetz Präfix (m’): Ist ein Affix, der vorne an den Wortstamm angehängt wird (zB. benehmen) Suffix (m’’): Ist ein an den Wortstamm angehänges Affix (zB. Männ-chen) ∑^2: Summe aller zweistelligen Worte über ∑ ∑*:Summe aller Worte über ∑ Eine Sprache L ist Teilmenge über ∑*: L ⊆∑* Grammatik G = ( N, ∑, P, S) ist ein Quadrupel: N: Nichtterminalsymbole (werden abgeleitet) ∑: Terminalsymbole (werden nicht abgeleitet) P ⊆ N: Menge der Regeln S € N: Startsymbol 2.) Reguläre Sprachen und endliche Automaten Rechtslinear: a) A xB mit x € ∑* und B € N Linkslinear: a) A Bx mit x € ∑* und B € N b) A x mit x € ∑* b) A x mit x € ∑* Grammatik heißt regulär (oder Chomsky Typ 3), wenn sie entweder links- oder rechtslinear ist. Ein (nichtdeterministischer) endlicher Automat – EA - ist ein Quintupel: A = { Q, ∑, δ, q0, F} Q: Menge der Zustände, endlich ∑: Eingabealphabet, endlich δ: Übergangsfunktion q0 € Q: Anfangszustand F ⊆ Q: Menge der Endzustände, endlich Grafische Darstellung eines EA: Eingabeband (Darauf steht das zu analysierende Wort) Lesekopf (Zeigt zu Beginn auf das erste Zeichen von w und wird bei jedem Schritt um 1 nach rechts gesetzt) Kontrolleinheit (speichert zu jedem Zeitpunkt den Zustand der aktuellen Konfiguration) I Visualisierung durch Transitionsdiagramm Knoten im Graph entsprechen den Zuständen des EA Gibt es bei Eingabe von a einen Übergang vom Zustand q in den Zustand p, dann existiert ein mit a markierter Pfeil vom Zustand q in den Zustand p im Transitionsdiagramm. Wichtige Merksätze: 1.) Zu jedem nichtdeterministischen endlichen Automaten A gibt es einen deterministischen Autmomaten A’, der die gleiche Sprache erkennt 2.) Die Klasse aller regulären Mengen über einem Alphabet ist abgeschlossen gegenüber Vereinigung, Durchschnitt, Komplement, Konkatenation und Kleene’scher Sternoperation: dies ist also eine boolsche Algebra. (Das Ergebnis dieser Operation ist wieder eine reguläre Menge.) 3.) Zu jedem regulären Ausdruck α mit zugeordneter Sprache L existiert ein endlicher Automat A, sodass L(A) = L. 4.) Ist A ein endlicher Automat, dann existiert ein regulärer Ausdruck α, sodass die durch α gekennzeichnete Sprache gleich L(A). 5.) Ist G eine reguläre Grammatik, dann gibt es einen endlichen Automaten A, sodass L(A) = L(G). 6.) Ist A ein endlicher Automat, dann existiert eine reguläre Grammatik G, sodass L(G) = L(A). Methoden zur Präzisierung von Sprachen: 1.) Auflistung/Aufzählung aller Sprachelemente (nur für endliche Sprachen mit relativ wenigen Elementen sinnvoll) 2.) Spezifikation eines formalen Ausdrucks (reguläre Ausdrücke, die beliebige reguläre Sprachen beschreiben können; begrenzte Mächtigkeit und kann nicht auf mächtigere Sprachklassen angewendet werden) 3.) Grammatiken (lassen sich zur (rekursiven) Erzeugung der Sätze einer Sprache benutzen) 4.) Automaten (lassen sich zur Erkennung der Sätze einer Sprache verwenden) Die beiden zuletzt genannten Methoden haben für die Praxis die größte Bedeutung. Die Chomsky Hierarchie (nach Noam Chomsky) legt eine Hierarchie von vier Sprachklassen - Chomsky-Typ 0 bis Chomsky-Typ 3 - fest und formalisiert die Beziehung der zugehörigen Grammatik- und Automatenklassen. Erzeugung und Erkennung von Sprachen Die Erzeugung einer Sprache wird durch eine Grammatik spezifiziert. Grammatiken lassen sich als spezielle Semi-Thue Systeme auffassen: Es wird ein Verfahren angegeben, das aus einem Axiom (Startsymbol) und einer Menge von Regeln (Produktionen) systematisch alle Sätze einer Sprache generiert. II Semi-Thue-Systeme (STS) - Ein STS ist eine nichtleere, endliche Relation R ⊆ E* x E* auf dem Alphabet E. - Die Tupel der Relation nennt man Regeln oder Produktionen. -Bei Wörtern werden Zeichenketten durch andere Zeichenketten ersetzt. Beispiel für ein STS: E = {a,b,c,d,e}, R ⊆ E* x E ={(ab, ad), (dc, ee), (e, b), (ad, ae), (eb, b), (abc, e)} oder in Regelschreibweise: ab → ad dc → ee e → b ad → ae eb → b abc → e Erkennung von Sprachen Sei L ⊆ Σ *. Wir definieren zwei Typen von Erkennungsverfahren. - Entscheidbarkeit: Es wird ein Verfahren spezifiziert, das für jedes Wort w ∈ Σ* entscheidet, ob w ∈ L oder nicht w ∈ L. - Semi-Entscheidbarkeit: Es wird ein Verfahren spezifiert, das für jedes Wort w ∈ Σ* entscheidet, ob w ∈ L. Chomsky-Grammatiken Eine Chomsky Grammatik hat die Form G = (N, Σ, P, S), wo N und Σ die Alphabete der Nichtterminal- bzw Terminalsymbole darstellen, P die Regelmenge ist und S ∈ N das ausgezeichnete Symbol darstellt. Die einzelnen Grammatikklassen werden durch die Form ihrer Regeln unterschieden: Typ-0 (unbeschränkte): α → β mit α ∈ Γ*NΓ* und β ∈ Γ*. Typ-1 (kontextsensitive): α1Bα2 → α1αα2, mit B ∈ N, α1, α2 ∈ Γ* und α ∈ Γ+ oder S → ε und S tritt nicht auf der rechten Seite von Regeln auf. Typ-2 (kontextfrei): A → α mit A ∈ N, α ∈ Γ* Typ-3 (reguläre): - rechtslinear: A → x oder A → xB, mit A, B ∈ N und x ∈ Σ*. - linkslinear: A → x oder A → Bx, mit A, B ∈ N und x ∈ Σ*. Die 4 Typen der Chomsky-Grammatiken entsprechen genau 4 Typen der Automaten: 0.) Turing-Maschine 1.) Linear beschränkte Automaten 2.) Keller-Automaten (Stack-Automaten) 3.) Endliche Automaten Hierarchiesatz: Bezeichne Li, 0 ≤ i ≤ 3, die Familie der Chomsky Typ-i Sprachen. Dann gilt L3 ⊂ L2 ⊂ L1 ⊂ L0 (wobei alle Inklusionen echte Teilmengenbeziehungen repräsentieren.) Bemerkung zur Hierarchieeigenschaft ist kontextfrei, aber nicht regulär. Die Sprache { anbncn | n ≥ 1 } ist kontextsensitiv, aber nicht kontextfrei. III Äquivalenz und Wortproblem Definition: Zwei Typ-0 Grammatiken G und G´ heißen äquivalent genau dann, wenn L(G) = L(G´). Definition: Gegeben sei eine Sprache L ⊆ Σ*. Wir betrachten das folgende Problem: Gibt es ein Verfahren, das für ein beliebiges w ∈ Σ* entscheidet, ob w ∈ L oder nicht w ∈ L? Man nennt dies das Wortproblem für L. Bemerkung: Für Typ-0 Sprachen ist das Wortproblem im Allgemeinen nicht entscheidbar. Für Typ-i Sprachen mit i ≥ 1 ist das Wortproblem entscheidbar. Kellerautomat ist rein fiktiv. = eine endlicher Automat, der um einen Kellerspeicher erweitert wurde. (Ein Kellerautomat mit 2 Kellerspeichern ist gleichmächtig zur Turingmaschine.) Eingabe wird zeichenweise von links nach rechts verarbeitet. Wenn möglich wird das Eingabezeichen sofort verarbeitet, wenn nicht, gelangt es in den Kellerspeicher und die Bearbeitung so bald wie möglich nachholt. Mögliche Aktionen hängen von momentan verarbeiteten Eingabezeichen, vom momentanen Zustand des Automaten und (=Erweiterung zum endlichen Automaten) zusätzlich vom Kellerinhalt ab (wobei immer nur das oberste Zeichen im Keller relevant ist.) In jedem Verarbeitungsschritt (das Lesen eines Zeichens & die damit verbundenen Operationen) kann sich der Zustand des Automaten und der Kellerinhalt ändern. Bestandteile (mechanisch): Eingabeband Lesekopf Kontrolleinheit Schreibkopf Kellerspeicher Deterministischer Kellerautomat Allein die Überführungsrelation bildet den Unterschied zum nichtdeterministischen Kellerautomaten. Nichtdeterministischer Kellerautomat ist ein 7-Tupel. M = (Z, Σ, Γ,δ,z0,#,F) Z... endliche Menge von Zuständen Σ... ein Eingabealphabet Γ... das Kelleralphabet δ... die Zustandsübergangsrelationen z0 € Z... der Startzustand # € Γ... das Anfangssymbol im Keller F ⊆ Z... eine Menge von finalen Zuständen IV 4.) Turing Maschinen Deterministische Programme werden betrachtet. Folgende Sätze werden bewiesen: 1.) Jedes Programm realisiert eine Funktion, wir können also immer eine Abbildung P fP definieren, die einem Programm P eine Funktion f zuordnet. 2.) Nicht jede Funktion lässt sich durch ein Programm realisieren. 3.) Eine Funktion, die sich durch ein Programm realisieren lässt, heißt berechenbar. 4.) Für jede berechenbare Funktion gibt es unendlich viele Programme, die sich realisieren lassen. Unterscheidbar durch Komplexität. Mathematische Maschine, die zur Formalisierung des Berechenbarkeitsbegriffs herangezogen werden kann. Turingmaschinen sind Chomsky Typ-0 Akzeptoren. Bestandteile: -Kontrolleinheit (endlich viele Zustände) -Lese/Schreibkopf (mit externem Speicher verbunden) -Arbeitsband -Felder(Unterteilung des Arbeitsbands) Unterschied zum endlichen Automaten: TM kann das Arbeitsband nicht nur lesen sondern auch beschreiben. Der Lese-/Schreibkopf kann sich nach rechts, links oder gar nicht bewegen beim Lesen/Schreiben (arbeiten). Definition der Turingmaschine (ist Quintupel) Z = (Q,Y,q0,qH,δ) Q... endliche Menge von Zuständen Y... endliche Menge von Bandzeichen q0... Anfangszustand qH... Haltezustand (Endzustand) δ... Übergangsfunktionen Kontrolleinheit: kann endlich viele Zustände annehmen (Elemente von Q) Arbeitsband: in Felder unterteilt, in jedes Feld kann ein Symbol aus dem Alphabet Y geschrieben werden. Die Gesamtheit der Felder heißt Bandinschrift. Lese/Schreibkopf: verbindet Arbeitsband mit der Kontrolleinheit. Aktuelle Position weist auf Arbeitsfeld. Konfiguration von Z bestimmt durch: 1. Bandinschrift 2. Position des L/S-Kopf 3. Zustand der Kontrolleinheit Arbeitsweise der TM durch eine endliche Menge von Quintupeln angegeben. Eine Folge solcher Quintupel nennt man Turingtafel. V