1 Automatentheorie und Formale Sprachen

Größe: px
Ab Seite anzeigen:

Download "1 Automatentheorie und Formale Sprachen"

Transkript

1 David Neugebauer, HKI - Universität zu Köln, Seminar BIT 2, SS 2017 Inhaltsverzeichnis Sprachen als Mengen von Wörtern Formale Sprachen und Grammatiken Die Chomsky-Hierarchie formaler Sprachen Formale Sprachen und Automaten DEAs: Deterministische endliche Automaten NEAs: Nichtdeterministische Endliche Automaten DEAs, NEAs und Grammatiken regulärer Sprachen PDAs: Pushdown Automata / Kellerautomaten Turing-Maschinen Wir haben vermutlich alle ein grundlegendes Verständnis davon, was eine Sprache ist. Einige Intuitionen dazu könnten lauten: Sprache dient der Kommunikation Sprache besteht aus Zeichen (z.b. mündlichen oder schriftlichen, Gesten, etc.) Sprache folgt gewissen Regeln, z.b. denen einer Syntax/Grammatik Es gibt viele verschiedene Sprachen Als sogenannte natürliche Sprachen bezeichnen wir Sprachen, die im normalen menschlichen Umgang entstanden und gewachsen sind. Sie dienen hauptsächlich der menschlichen Kommunikation. Natürliche Sprachen unterliegen gewissen Regeln, bzw. folgen gewissen Regelmäßigkeiten, die von den Sprachwissenschaften und der Linguistik erforscht und beschrieben werden. Naürliche Sprachen unterliegen ständiger Entwicklung und ihre formale Beschreibung ist ein komplexes Feld. Im Folgenden werden wir uns abstrakt mit formalen Sprachen beschäftigen. Anders als natürliche Sprachen unterliegen formale Sprachen keinen natürlichen Entwicklungen und lassen sich stets exakt definieren. Ihr Hauptzweck ist weniger die Kommunikation als vielmehr die mathematische Formalisierung von Sachverhalten und Abläufen. Zu den formalen Sprachen gehören u.a.: die Aussagenlogik (und andere Logiken) Programmiersprachen Um formale Sprachen generell zu charakterisieren, werden wir uns zunächst anschauen, wie sich Sprachen als Mengen von Wörtern beschreiben lassen. Anschließend lernen wir zwei Wege kennen, wie diese Mengen von Wörtern formal bestimmt werden können: Eine Grammatik einer formalen Sprache ist eine Menge von Regeln, die angeben, wie die Wörter dieser Sprache erzeugt werden können. Eine Sprache verstanden als eine Menge von Wörtern ist genau dann korrekt durch eine Grammatik beschrieben, wenn sich genau diese Menge von Wörtern aus der Grammatik herleiten lassen und keine weiteren. Ein Automat einer formalen Sprache ist ein Formalismus, der nur die Wörter dieser Sprache akzeptiert. Eine Sprache wieder verstanden als Menge von Wörtern ist genau dann korrekt durch einen Automaten beschrieben, wenn der Automat alle Wörter dieser Sprache akzeptiert und keine anderen. 1

2 Grammatiken und Automaten sind prinzipiell gleichwertige Wege, um eine formale Sprache zu beschreiben. Wir werden im Folgenden sehen, dass Typen von Grammatiken stets Typen bestimmter Automaten entsprechen. Grammatiken und Automaten werden auf ganz verschiedenen Gebieten eingesetzt. Hier nur einige Beispiele: Beim Kompilieren von Computerprogrammen ist der erste Schritt das Lexen der Eingabe, das in der Regel von einen Endlichen Automaten übernommen wird. Reguläre Ausdrücke (Regular Expressions oder auch Regexes) sind kurze Zeichenketten, die einen endlichen Automaten definieren, mit dem Texte effizient auf das Vorkommen von bestimmten Zeichenketten untersucht werden können. Reguläre Ausdrücke werden von allen gängigen Programmiersprachen unterstützt. Phrasenstrukturgrammatiken sind formale Beschreibungen der Satzbildung für natürliche Sprachen. Dabei handelt es sich (im Prinzip) um Kontextfreie oder kontextsensitive Grammatiken wie wir sie unten kennenlernen werden. Die Automatentheorie insgesamt bildet in der theoretischen Informatik ein wichtiges Werkzeug für die Berechenbarkeits- und Komplexitätstheorie. Im vorliegenden Skript werden wir aus Platz- und Zeitgründen nur auf die verschiedenen Typen von Grammatiken sowie auf die Endlichen Automaten einigermaßen genau eingehen. Kellerautomaten und Turing-Maschinen können wir nur kursorisch behandeln Sprachen als Mengen von Wörtern Wir kennen den Begriff eines Alphabets als eine Menge von Buchstaben. Setzt man Buchstaben zusammen, so ergeben sich daraus Wörter, die wiederum in einer Sprache benutzt werden. Wörter, Buchstaben, Alphabete und Sprachen stehen also in wechselseitigen Beziehungen zueinander. In Bezug auf Formale Sprachen lassen sich diese Beziehungen charakterisieren, indem wir eine Beschreibung über Mengen vornehmen. Mit den Begriffen Alphabet, Buchstabe und Wort lassen sich bereits einige Definitionen aufstellen: Ein Alphabet Σ ist eine endliche, nicht-leere Menge. Ein Element a Σ heißt Buchstabe oder Terminalsymbol. Eine endliche Folge w = a 1 a 2... a n heißt Wort über dem Alphabet Σ, wenn gilt: a 1, a 2,..., a n Σ Die Länge eines Wortes w ist die Anzahl der Buchstaben dieses Wortes Das leere Wort ε ist das Wort der Länge Null. Anmerkung: Das leere Wort ist nicht die leere Menge. Es gilt: ε {ε}. Die Konkatenation (Verknüpfung) von zwei Wörtern w 1, w 2 wird notiert als w 1 w 2. Dabei gilt für die Verknüpfung mit dem leeren Wort: εa = a = aε Die n-fache Konkatenation eines Wortes mit sich selbst wird bezeichnet durch w n. z.b.: a 3 = aaa, a 0 = ε. Σ ist die Menge aller Wörter über Σ einschließlich des leeren Worts ε. Σ + ist die Menge aller Wörter über Σ ohne das leere Wort ε. 1 Eine ausführlichere Einführung, an der sich auch dieses Skript teilweise orientiert, gibt B. Hollas: Grundkurs Theoretische Informatik. Berlin, Heidelberg: Springer Umfassend wird das Thema behandelt von: J.E. Hopcroft et al.: Einführung in die Automatentheorie, formale Sprachen und Komplexitätstheorie. München: Pearson Studium

3 Beispiel: Notationen für Alphabete und Wörter Sei Σ = {a, b, c}, dann gilt: aaab, aabbcc und a sind Wörter über Σ. aaab = 4, aabbcc = 6, a = 1 {aaab, aabbcc, a, ε} Σ {aaab, aabbcc, a, } Σ + {a, aa, aaa, aaaa,... } Σ Sei Σ = {a, b,..., z}, dann gilt: hund, katze, xxyxzzf, f sind Wörter über Σ. hund = 4, katze = 5, xxyxzzf = 7, f = 1. Wörter über einem Alphabet sind offensichtlich etwas anderes als Wörter einer Sprache. So ist etwa xxyxzzf ein Wort über dem lateinischen Alphabet, aber kein Wort irgendeiner Sprache, die dieses Alphabet benutzt. Eine Sprache benutzt ein Alphabet, definiert aber zumeist gewisse Einschränkungen hinsichtlich der möglichen Buchstabenkombinationen, die als Wörter der Sprache gelten. (Im Gegensatzu zu Wörtern über dem Alphabet.) Definition: Eine formale Sprache L über einem Alphabet Σ ist eine Teilmenge der möglichen Wörter über diesem Alphabet: L Σ Beispiel: Einfache Definitionen für Sprachen Wir können nun z.b. die Sprache aller 4-Bit-Bitfolgen definieren. Sei L eine Sprache über dem Alphabet Σ = {0, 1} und L 4-Bit = {w w Σ, w = 4} dann gilt für die Wörter v = 001, w = 1001, x = 11010: v, w, x Σ w L v, x L Sprachen lassen sich offenbar beliebig definieren. Sei etwa Σ = {a, b, e, g, m, n, o, s} L Obst = {w w Σ, w bezeichnet Obst im Deutschen} dann gilt: {ananas, mango, banane} L Obst 1.2 Formale Sprachen und Grammatiken Die Notation von Sprachen als Mengen von Wörtern lassen sich über Grammatiken charakterisieren. Der Gedanke ist dabei: Jedes Wort, das sich über Regeln der Grammatik erzeugen lässt, ist Teil der Sprache. Regeln haben dabei stets die Form u v Und bedeuten: Jedes Vorkommnis von u kann ersetzt werden durch ein Vorkommnis von v. 3

4 Auf beiden Seiten einer Regel können dabei prinzipiell zwei Arten von Symbolen stehen: 2 Terminalsymbole, also Buchstaben eines Alphabets, z.b. a, b, c Variablen für Terminalsymbole, z.b. A, B, C, S Wörter lassen sich aus solchen Grammatiken wie folgt konstruieren: Beginne mit dem Startzustand S Führe Ersetzungen durch, bis keine Ersetzung mehr möglich ist. Später werden wir sehen, dass verschiedene Typen von Sprachen sich gerade dadurch charakterisieren lassen, welche Symbole sie auf der linken und welche Symbole sie auf der rechten Seite zulassen. Beispiel: Eine Grammatik für die ab-sprache Der folgende Satz an Regeln definiert eine Sprache über dem Alphabet Σ = {a, b}, in der auf den Buchstaben a immer nur der Buchstabe b folgt (nicht erneut a). 1. S aa 2. S bs 3. S b 4. A bs 5. A b Das Wort abbbab lässt sich dann konstruieren wie folgt: S aa (Regel 1) aa abs (Regel 4) abs abbs (Regel 2) abbs abbbs (Regel 2) abbbs abbbaa (Regel 1) abbbaa abbbab (Regel 5) Auf Grundlage der obigen Grammatik lassen sich keine Wörter bilden, in denen auf a etwas anderes folgt als b. Versuchen wir es trotzdem einmal. Das Wort abaa dürfte sich nicht durch die obigen Regeln bilden lassen. Wir können höchstens die Annäherung abaa erzeugen: S aa (Regel 1) aa abs (Regel 4) abs abaa (Regel 1) Es gibt keine weitere Regel, die es uns erlauben würde, aus abaa das Wort abaa zu erzeugen. In diesem Fall ist außerdem leicht einzusehen, das wir keine andere Regel hätten benutzen zu können, um auf anderem Weg zu der Annäherung aba zu gelangen. Die Regeln der obigen Grammatik erlauben es uns außerdem nicht, eine Wortfolge nachträglich zu verkürzen. Das Ausprobieren weiterer Regeln hätten also keinen Sinn. Gibt es in einer Grammatik mehrere Regeln, die auf der linken Seite den gleichen Ausdruck haben, so lassen sich diese Regeln in einer Zeile abkürzen. Die folgende Grammatik ist äquivalent zum obigen Beispiel: 2 Wir werden im Folgenden das leere Wort als Teil von Grammatikregeln ignorieren, das unter bestimmten Sonderregelen Teil von Grammatik-Typen sein kann. In der ursprünglichen Definition durch Chomsky (s.u.) sollten alle Grammatiken der Typen 3 bis 1 ohne das leere Wort auskommen. Nahezu alle der hier besprochenen Beispiele werden auch ohne Anwendung des leeren Worts auskommen. 4

5 S aa bs b A bs b Beispiel: Eine Grammatik für einfache Sätze? In wie weit ähneln Grammatiken für formale Sprachen denen für natürliche Sprachen? Versuchen wir einmal eine einfache Grammatik für eine Teilmenge des Englischen aufzustellen. Ein Alphabet könnte etwa so aussehen: Σ = { the, cat, mouse, dog, moon, eats, sees, dreams } Damit lassen sich nun schon einige einfache Sätze bilden, z.b.: the cat eats the mouse the dog dreams Da die Sätze des Englischen recht regelmäßig gebildet werden, lässt sich leicht eine einfache Grammatik formulieren: 1. S P V P 2. P DN 3. D the 4. N cat mouse moon 5. V eats sees dreams Man kann sich leicht selbst davon überzeugen, dass sich mit dieser Grammatik die beiden obigen Sätze bilden lassen, aber auch ungrammatische Sätze wie: the dog dreams the moon Anmerkung: Man beachte, dass wir hier ganze Wörter als Buchstaben des Alphabets benutzen. Die englischen Sätze haben wir formal beschrieben als Wörter über diesem Alphabet. Das ist zunächst vielleicht etwas etwas ungewohnt, aber durchaus legitim Die Chomsky-Hierarchie formaler Sprachen Grammatiken für formale Sprachen lassen sich danach kategorisieren, welche Arten von Symbolen sie in ihren Regeln im linken sowie im rechten Ausdruck erlauben. Wir nehmen dazu hier eine Einteilung vor, die 1956 von Noam Chomsky gemacht wurde. Später werden wir sehen, dass es für jede dieser Arten von Grammatiken genau eine Art von Automaten gibt, der die Sprache akzeptiert. Typ 3: Reguläre Sprachen Die obige Grammatik ist eine reguläre Grammatik. Ihre Regeln zeichnen sich dadurch aus, dass sie nur eine sehr begrenzte Menge an Formen erlauben. Für Regeln der Form l r gelten in regulären Grammatiken folgende Einschränkungen: l enthält genau eine Variable r enthält entweder: genau ein Terminalsymbol gefolgt von genau einer Variable genau ein Terminalsymbol 5

6 Die Regel a ba könnte also nicht Teil einer regulären Grammatik sein, da die linke Seite nicht aus einer einzelnen Variable besteht. Das gleiche gilt für die Regel aa ba. Die Regel A aaa wäre ebenfalls nicht regulär, da sie auf der rechten Seite ein Terminalsymbol zu viel hat. Beispiele für Regeln regulärer Grammatiken sind hingegen: A aa B c Typ 2: Kontextfreie Sprachen Kontextfreie Grammatiken zeichnen sich dadurch aus, dass sie auf der rechten Seite der Reglen keinerlei Einschränkungen mehr haben. Für Regeln der Form l r gelten in kontextfreien Grammatiken die folgenden Einschränkungen: l enthält genau eine Variable r enthält beliebige Variablen und/oder Terminalsymbole (mindestens ein Zeichen) Damit sind etwa a ba und aa ba keine Regeln kontextfreier Grammatiken, da die linke Seite nicht aus genau einer Variablen besteht. Beispiele für Regeln kontextfreier Sprachen sind hingegen: A aaa B bbaac C Bb Man beachte, dass auch alle Regeln der regulären Grammatiken Regeln der Kontextfreien Grammatiken sind. Daher gilt: {Menge der regulären Grammatiken} {Menge der kontextfreien Grammatiken} Typ 1: Kontextsensitive Sprachen Kontextsensitive Sprachen zeichnen sich dadurch aus, dass auf der linken Seite einer Regel auch Terminalsymbole erlaubt sind, solange eine einzelne Variable vorhanden ist. Für Regeln kontextsensitiver Grammatiken der Form l r gilt: l enthält mindestens eine Variable r enthält beliebige Variablen und/oder Terminalsymbole (mindestens ein Zeichen) l r (Die Anwendung der Regel darf die Zeichenkette nicht verkürzen) Damit ist etwa a ba keine Regel einer kontextfreien Grammatik, da auf der linken Seite keine Variable enthalten ist. Beispiele für Regeln kontextsensitiver Grammatiken sind hingegen: ab abb aaa aba Ca abc Man beachte, dass auch alle Regeln der kontextfreien Grammatiken Regeln der kontextsensitiven Grammatiken sein können. Daher gilt: {Menge der regulären Grammatiken} {Menge der kontextfreien Grammatiken} {Menge der kontextsensitiven Grammatiken} Anmerkung: In der Literatur findet man oft noch eine andere Definition der kontextsensitiven Grammatiken. Demnach haben die Regeln solcher Grammatikan etwa die Form: 6

7 αv β αγβ wobei V eine Variable ist und α, β, γ beliebige Folgen von Variablen und/oder Terminalsymbolen, die (mit Ausnahme von γ) auch leer sein können. In dieser Definition wird deutlich, warum solche Grammatiken kontextsensitiv genannt werden: Die Variable V kann nur im Kontext von α und β ersetzt werden durch γ. Beide Definitionen sind aber äquivalent. Man kann beweisen, dass sich Grammatiken der ersten Form (die auch einfach nicht verkürzende Grammatiken genannt werden) in solche der zweiten Form übertragen lassen. Typ 0: Rekursiv aufzählbare Sprachen Die Grammatiken von Typ-0-Sprachen unterliegen keinerlei Einschränkungen. Hier sind Ersetzungen aller Art erlaubt. Beispiele für Regeln von Typ-0-Sprachen sind etwa: ab c abc daf Man beachte, dass auch alle Regeln der kontextsensitiven Grammatiken Regeln der Typ-0- Grammatiken sein können. Daher gilt: {Menge der regulären Grammatiken} {Menge der kontextfreien Grammatiken} {Menge der kontextsensitiven Grammatiken} {Menge der Typ-0-Grammatiken} 1.3 Formale Sprachen und Automaten Ein alternatives Beschreibungsmittel für formale Sprachen sind Automaten. Während Grammatiken über Regeln die Bildung von Wörtern einer Sprache beschreiben, antworten Automaten auf die Frage, ob ein bestimmtes Wort zu einer Sprache gehört oder nicht. Automaten erhalten stets eine Folge von Buchstaben als Eingabe und reagieren schrittweise auf jedes dieser Symbole. Dabei nehmen sie eine Reihe von Zuständen an. Einer oder mehrere dieser Zustände werden Endzustände genannt. Befindet sich der Automat am Ende der Eingabe in einem solchen Zustand, so ist das Wort akzeptiert und gehört zu der Sprache, die der Automat beschreibt DEAs: Deterministische endliche Automaten Als ersten Typ von Automaten lernen wir den Deterministischen Endlichen Automaten kennen. Dessen Verhalten lässt sich am Einfachsten beschreiben, wenn wir ihn in Form eines Graphen darstellen. Die Knoten des Graphen sind die Zustände des Automaten, die Kanten sind die Buchstaben des Eingabealphabets. Der Automat wechselt bei Eingabe eines Buchstabens zum nächsten Zustand entsprechend der durch den Eingabebuchstaben festgelegten Kante. Beispiel: Ein einfacher DEA Der folgende Automat hat die Zustände z 0, z 1, z 2. Endzustände sind durch doppelte Umrandung gekennzeichnet. Der einzige Endzustand ist also z 2. Der Startzustand ist z 0. Das Eingabealphabet besteht aus den Symbolen a, b und c. 7

8 Wählen wir als Eingabewort aabc, so nimmt der Automat nacheinander die folgenden Zustände an: 1. Startzustand: z 0 2. Liest a: z 1 3. Liest a: z 2 4. Liest b: z 2 5. Liest c: z 2 Da sich der Automat am Ende der Eingabe in einem Endzustand befindet ist das Wort akzeptiert. Betrachten wir als zweites Beispiel das Eingabewort abab: 1. Startzustand: z 0 2. Liest a: z 1 3. Liest b: z 0 4. Liest a: z 1 5. Liest b: z 0 Da sich der Automat am Ende der Eingabe nicht in einem Endzustand befindet ist das Wort nicht akzeptiert. Umgangssprachlich könnte man das Verhalten dieses DEA so beschreiben: Der Automat akzeptiert alle Wörter, die die Zeichenkette aa enthalten. Die Sprache, die der DEA definiert ist entsprechend: L = {uvw u, v, w Σ, v = aa}, Σ = {a, b, c} Formal ist ein DEA wie folgt definiert: Ein Deterministischer Endlicher Automat M ist ein Tupel (Z, Σ, δ, z S, E), wobei gilt: Z ist die endliche Menge der Zustände des Automaten. Σ ist das Eingabealphabet. δ : Z Σ Z ist die Übergangsfunktion. Für ein Paar aus einem Zustand z Z und einem Zeichen aus dem Eingabealphabet a Σ gibt die Übergangsfunktion also wieder einen Zustand aus: δ(z, a) = z. Man sagt auch: Bei Eingabe von a wechselt M aus z in den Zustand z. z S Z ist der Startzustand. E Z ist die Menge der Endzustände. Das Verhalten eines DEA lässt sich wie folgt beschreiben: Beginne mit einem Wort w Σ und dem Startzustand z S Z. w besteht aus einzelnen Buchstaben w 1, w 2,..., w n. 8

9 Wende die Übergangsfunktion auf z S und w 1 an. Das ergibt einen neuen Zustand. δ(z S, w 1 ) = z Wiederhole den letzten Schritt für das Ergebnis und den nächsten Buchstaben, bis der letzte Buchstabe verarbeitet ist: δ(z, w 2 ) = z δ(z, w 3 ) = z... Wenn der letzte so erreichte Zustand in der Menge der Endzustände liegt, ist das Wort w akzeptiert, sonst nicht. Eine Sprache L lässt sich also nicht nur über eine Grammatik definieren, sondern auch über einen Automaten M. Eine solche Sprache L(M) ist genau die Menge an Wörtern, die M akzeptiert. L(M) = {w M akzeptiert w} Beispiel: Formale Definition eines DEA Sei L ab die oben bereits beschriebene Sprache, die alle Wörter über Σ = {a, b} akzeptiert, in denen auf a immer b folgt. Dann können wir einen Automaten M ab = {Z, Σ, δ, z S, E} definieren: Z = {z 0, z 1, z 2 } Σ = {a, b} δ ordnet zu anhand der Tabelle: z 0 z 1 z 2 a z 1 z 2 z 2 b z 0 z 0 z 2 9

10 z S = z 0 E = {z 0 } Setzen wir diesen DEA nun nacheinander auf verschiedene Wörter w an: w 1 = abbbab δ(z 0, a) = z 1 δ(z 1, b) = z 0 δ(z 0, b) = z 0 δ(z 0, b) = z 0 δ(z 0, a) = z 1 δ(z 1, b) = z 0 z 0 E, also wird w 1 akzeptiert, w 1 L(M ab ). w 2 = abaab δ(z 0, a) = z 1 δ(z 1, b) = z 0 δ(z 0, a) = z 1 δ(z 1, a) = z 2 δ(z 2, b) = z 2 z 2 E, also wird w 2 nicht akzeptiert, w 2 L(M ab ). Als Graph würde der dargestellte Automat wie folgt aussehen: DEAs sind genau deshalb deterministische Automaten, weil es für jede Eingabe genau einen Zustand gibt, den der Automat annimt. Diese Eigenschaft spiegelt sich auch in der Gestalt eines DEA als Graph wieder. Ein solcher Graph hat immer die Eigenschaft: Von jedem Knoten aus gibt es für jeden Buchstaben des Eingabealphabets aus genau eine Kante, die mit diesem Buchstaben bezeichnet ist NEAs: Nichtdeterministische Endliche Automaten Die DEAs, die wir oben kennengelernt haben, waren insofern deterministisch, als die Überführungsfunktion jedem Paar aus Zustand und Buchstaben wieder genau einen Zustand zugeordnet hat. Die sogenannten Nicht-deterministischen Endlichen Automaten sind genau wie DEAs als Tupel (Z, Σ, δ, S, E) definiert. Sie unterscheiden sich von den DEAs nur in der Überführungsfunktion δ und der Menge der Startzustände S: Z ist die endliche Menge der Zustände des Automaten. (wie DEA) Σ ist das Eingabealphabet. (wie DEA) δ : Z Σ P(Z) ist die Übergangsfunktion. Lies: Für ein Paar aus einem Zustand z Z und einen Zeichen aus dem Eingabeal- 10

11 phabet a Σ gibt die Übergangsfunktion ein Element aus der Potenzmenge 3 von Z aus: δ(z, a) = {z, z,... } P(Z). S Z ist die Menge der Startzustände. E Z ist die Menge der Endzustände. (wie DEA) Ein NEA akzeptiert ein Eingabewort w genau dann, wenn einer der Endzustände des NEA in der Menge von Zuständen enthalten ist, die durch wiederholte Anwendung der Übergangsfunktion zurückgegeben wird. Beispiel: Ein einfacher NEA Der folgende NEA definiert die gleiche Sprache wie der entsprechende DEA aus dem ersten Beispiel zu einem einfachen DEA: Er akzeptiert alle Wörter, die die Zeichenkette aa enthalten. Folgendes kann bei der Betrachtung des NEA-Graphen auffalen: Er enthält mit z 0 einen Knoten, der mehrere ausgehende Kanten für denselben Buchstaben (a)hat. Er enthält mit z 1 einen Zustand, der nur eine ausgehende Kante für a hat, aber keine ausgehenden Kanten für b oder c. Dies spiegelt den Umstand wieder, dass die Übergangsfunktion eines δ eines N EA nicht einen Zustand, sondern eine Menge von Zuständen zurückgibt. Stellen wir das an einem Beispiel dar. Nehmen wir wieder an, dass der obige NEA das Wort aabc als Eingabe erhält. 1. Menge der Startzustände: {z 0 } 2. Liest a: {z 0, z 1 } Der NEA kann sich bei Eingabe von a in einem von zwei Zuständen befinden: z 0 oder z Liest a: {z 0, z 1, z 2 } Bei erneuter Eingabe von a kann sich der NEA in einem von drei Zuständen befinden. Warum? Von dem ersten Zustand der vorherigen Anwednung, also z 0, aus könnte er sich wieder nach z 0 oder z 1 bewegen. Von dem zweiten Zustand z 1 aus könnte er sich jetzt nach z 2 bewegen. 4. Liest b: {z 0, z 2 } Wird jetzt b gelesen, so reduzieren sich die möglichen Zustände auf zwei. Von z 0 aus führt eine b-kante wieder nach z 0 und von z 2 führt eine b-kante wieder nach z 2. Von z 1 aus aber gibt es keine ausgehende Kante für die Eingabe b, also kann diese Möglichkeit verworfen werden. 3 Die Potenzmenge einer Menge M ist die Menge aller möglichen Teilmengen von M. 11

12 5. Liest c: {z 0, z 2 } Auch für die letzte Eingabe c bleibt der Automat in denselben Zuständen. Von z 0 führt eine c-kante wieder nach z 0 und von z 2 aus führt eine ebensolche wieder nach z 2. Da z 2 einer der Endzustände des Automaten ist, akzeptiert der NEA das Eingabewort DEAs, NEAs und Grammatiken regulärer Sprachen DEAs stehen in einem interessanten Zusammenhang zu den regulären Sprachen (Typ-3- Sprachen), die wir oben definiert hatten. Mann kann zeigen, dass Typ-3-Grammatiken genau solche Wörter erzeugen, die von DEAs akzeptiert werden. Dazu muss gezeigt werden: Jede Typ-3-Grammatik kann auf einfache Weise in einen sogenannten Nicht-deterministischen Automaten (NEA) umgewandelt werden. Jeder NEA kann in einen DEA umgewandelt werden. Schauen wir uns zunächst die Überführung von regulären Grammatiken in NEAs an. Nach der obigen Definition von Regulären Sprachen können nur Regeln der folgenden Form auftreten: 1. A ab 2. A a 3. A ε Um aus einer regulären Grammatik einen NEA zu erzeugen können wir daher wie folgt vorgehen. Sei G eine reguläre Grammatik mit einer Menge an Variablen V, einer Startregel S G V und einer Menge von Terminalsymbolen Σ G. Dann können wir den NEA M G = (Z, Σ M, δ, S M, E) erzeugen, indem wir: 1. Jede Variable in V als Zustand von M betrachten. 2. Die Terminalsymbole der Grammatik als Alphabet des Automaten definieren (Σ M = Σ G ) 3. Für jede Regel von G die Übergangsfunktion und die Menge der Endzustände so anpassen, dass: a. Wenn Regel vom Typ A ab: B δ(a, a) b. Wenn Regel vom Typ A ε: A E c. Wenn Regel vom Typ A a: Transformiere Regel in zwei neue Regeln: A aa und A ε Wende obige Umformungen an. 4. S M = {S G } Beispiel: Umwandlung Grammatik NEA Die obige Grammatik der Sprache L ab war: S aa bs b A bs b 12

13 Um diese Grammatik in einen NEA umzuwandeln müssen wir die Elemente des Tupels M G = (Z, Σ M, δ, S M, E) nach den obigen Angaben bestimmen. Nach (3.c.) können wir zunächst die Regeln unserer Grammatik erweitern. Wir haben zwei Regeln vom Typ A a, nämlich S b und A b. Wir führen also die Zustände S und A ein und passen die Regeln wie beschrieben an: S aa bs bs A bs ba S ε A ε Nach (1.) erhalten wir nun einen Zustand pro Variable der Grammatik. Die Variablen der Grammatik sind S, A, S und A. Der Einfachheit halber benennen wir die Zustände mit den gleichen Namen und erhalten: Z = {S, A, S, A } Die Terminalsymbole der Grammatik sind a und b. Also erhalten wir nach (2.): Σ M = {a, b} Nach (3.a.) muss für die Übergangsfunktion gelten: A δ(s, a) S δ(s, b) S δ(s, b) S δ(a, b) A δ(a, b) Damit lässt sich δ zusammenfassen durch die Tabelle: S A S A a {A} {} {} {} b {S, S } {S, A } {} {} Nach (3.b) erhalten wir die Menge der Endzustände: E = {S, A } Nach (4.) ist die Menge der Startzustände einfach: S M = {S} Damit sind alle Bestandteile des NEA definiert. Als Graph würde der NEA wie folgt aussehen: Als nächstes betrachten wir die Umwandlung von NEAs in DEAs: 13

14 Um das Verhalten eines NEA in einem DEA abzubilden, können wir jede Teilmenge von Z NEA, die sich aus der Anwendung der Übergangsfunktion δ NEA ergeben kann, als möglichen Einzelzustand des DEA definieren. Wäre etwa im NEA δ(z 0, a) = {z 2, z 3 }, dann können wir einen neuen Zustand des DEA z 2,3 einführen, den wir interpretieren als: Der NEA würde sich jetzt in z 2 oder z 3 befinden. Konkret könnten wir so vorgehen: 1. Beginne bei den Startzuständen des DEA und fasse sie zu einem einzelnen Zustand z S zusammen. Diesen Zustand z S fassen wir auf als: Der NEA würde sich jetzt in einem der Zustände aus S befinden. 2. Für jeden neuen Zustand z des DEA, der sich wie oben beschrieben aus einer Teilmenge der Zustände des NEA bilden lässt und für jeden Buchstaben a Σ: Führe einen Übergang δ(z n, a) = z ein, wenn es auch einen entsprechenden Übergang δ(z n, a) im NEA gibt, der auf die Teilmenge fürht, die z n entspricht. 3. Fehlen Zustandsübergänge im DEA, so stellen wir diese durch Übergang in einen Fehlerzustand dar, der durch keine Eingabe verlassen werden kann. 4. Jeder Zustand des DEA ist ein Endzustand desselben, wenn er einer Teilmenge des NEA entspricht, die einen Endzustand des NEA enthält. Damit lassen sich beliebige NEA in DEA umwandeln. Und damit ist auch gezeigt, dass jeder regulären Grammatik mindestens ein DEA entspricht, der genau die Wörter akzeptiert, die die Grammatik erzeugt. Beispiel: Umwandlung NEA DEA Wir setzen des obige Beispiel zur Sprache L ab fort. Der NEA der Sprache besaß genau einen Startzustand S, der nach (1.) den Startzustand des DEA bildet. Die Zustände des Automaten sind bisher: Z DEA = {S} Um (2.) zu genügen, können wir beim Startzustand beginnend die Teilmengen von Zuständen bestimmen, in denen sich der NEA befinden könnte. Bei Eingabe von a bewegt sich der NEA nur in den Zustand A, bei Eingabe von b in einen der Zustände S oder S. Im DEA können wir das darstellen, indem wir zwei neue Zustände einführen. Den ersten benennen wir einfach A, da er repräsentiert, dass sich der NEA nun in A befände. Den zweiten benennen wir SS. Er repräsentiert, dass sich der NEA nun entweder in S oder in S befände. Z DEA = {S, A, SS } Für die Übergangsfunktion des DEA gilt dann: δ(s, a) = A δ(s, b) = SS Betrachten wir nun den Zustand A. Für die Eingabe von a ist hier für den NEA nichts definiert. Bei Eingabe von b wechselt der NEA entweder nach S oder nach A. Also ergänzen wir unseren DEA um einen Zustand SA Z DEA = {S, A, SS, SA } 14

15 und merken uns für die Überführungsfunktion: δ(a, b) = SA Betrachten wir nun den Zustand SS. Der Zustand steht dafür, dass sich der NEA nun entweder in S oder in S befände. Für S sind im NEA keine Übergänge definiert. Für S sind wieder die Übergänge nach A bei Eingabe von a und nach S oder S bei Eingabe von b möglich. Also erhalten wir als Ausgaben der Übergangsfunktion: δ(ss, a) = A δ(ss, b) = SS Wir müssen nun noch den Zustand SA betrachten. Er steht dafür, dass sich der NEA nun entweder in S oder in A befände. Für A sind im NEA wieder keine Übergänge definiert. Für S gelten die bereits bekannten Übergänge: bei a nach A, bei b nach S oder S. Für die Übergangsfunktion des DEA gilt also: δ(sa, a) = A δ(sa, b) = SS Die Übergangsfunktion für den DEA ist damit fast vollständig bestimmt. Nur für die Eingabe a im Zustand A fehlt ein Ausgabewert. Nach (3.) müssen wir die Zustandsmenge unseres Automaten um einen Fehlerzustand ergänzen, den wir der Einfachheit halber als F bezeichnen. Z DEA = {S, A, SS, SA, F } Dieser Fehlerzustand kann nicht mehr verlassen werden und wird betreten, wenn im Zustand A die Eingabe a gelesen wird. Wir erhalten also: δ(a, a) = F δ(f, a) = F δ(f, b) = F Es bleibt noch, die Endzustände des DEA zu bestimmen. Nach (4.) sind das genau die Zustände, die repräsentieren: Der NEA könnte sich jetzt in einem Endzustand befinden. Da die Endzustände des NEA A und S sind, sind die Endzustände des DEA also SS und SA. E DEA = {SS, SA } Als Graph würde der entstehende DEA so aussehen: 15

16 1.3.4 PDAs: Pushdown Automata / Kellerautomaten Es gibt Sprachen, für die sich keine endlichen Automaten konstruieren lassen. Dazu gehört z.b. die Sprache {a n b n n N}, deren Wörter genau so viele Buchstaben b wie a enthalten. Aber auch Sprachen, die korrekte Klammerstrukturen erzeugen wie z.b. in der folgenden kontextfreien Grammatik ausgedrückt S (S) SS () lassen sich nicht durch einen endlichen Automaten beschreiben. Der Grund dafür ist: Endliche Automaten haben keine Möglichkeit sich eine Anzahl zu merken. Wie viele öffnende oder geschlossene Klammern ein Automat bereits gelesen hat oder wie viele führende Buchstaben a kann in einfachen Zustandsübergängen nicht festgehalten werden. Kellerautomaten stellen eine Erweiterung von endlichen Automaten dar, die über einen sogenannten Stack oder Kellerspeicher verfügen. Ein Stack ist eine einfache Datenstruktur, die nach dem Prinzip Last In First Out (LIFO) funktioniert. Jede Stack-Eingabe wird am Anfang des Stacks notiert, vorherige Elemente werden nach hinten verschoben. Jede Stack-Ausgabe entfernt ein Element vom Anfang des Stacks. Beispiel: Stack-Operationen Die Operationen der Stack-Eingabe und -Ausgabe werden meist als push() und pop() bezeichnet. Wenden wir nacheinander die Operationen push(a) push(b) push(c) an, dann enthält der Stack die Elemente: C, B, A ^ Lassen wir uns nun die ersten beiden Elemente ausgeben und ergänzen ein weiteres... pop() (Ausgabe: C) pop() (Ausgabe: B) push(d)... dann sind anschließend noch die folgenden Elemente auf dem Stack: D, A ^ Dabei zeigt jeweils auf das aktuelle Element am Anfang des Stacks. Für PDAs werden Zustandsüberführungen wie folgt dargestellt: Dabei gilt: a steht wie beim Endlichen Automaten für den gelesenen Buchstaben 16

17 Steht an dieser Stelle ε, so kann der Automat ohne Eingabe in den nächsten Zustand übergehen. γ steht für das Ergebnis der Operation pop(). Der Zustandsübergang kann nur dann stattfinden, wenn der entsprechende Buchstabe am Anfang des Stacks steht und das Element wird beim Übergang vom Stack entfernt. Steht hier der Wert ε, so kann der Übergang unabhängig vom Zustand des Stacks stattfinden und es wird kein Element vom Stack entfernt.) γ steht für die Operation push(γ ). Wenn der Übergang stattfindet, wird γ an den Anfang des Stacks geschrieben. Steht hier der Wert ε, so wird der Stack beim Übergang nicht verändert. Zu Beginn des Einlesens enthält der Stack des PDA das spezielle Element #. Das erlaubt es uns, zu erkennen, wenn das Ende des Stacks erreicht ist. Beispiel: Ein PDA Def folgende PDA akzeptiert die Sprache {a n b n }. Sein Verhalten lässt sich wie folgt beschreiben: Im Zustand z 0 schiebt der PDA für jedes gelesene a ein x auf den Stack. Wird ein b gelesen, so bewegt sich der Automat nach z 1 und entfernt ein x vom Stack. Für jedes weitere b bleibt der Automat in z 1 und entfernt ein x vom Stack. Der Automat kann sich aus z 1 nur dann in den Endzustand bewegen, wenn alle x vom Stack entfernt wurden. Das ist erkennbar daran, dass sich nur noch das Anfangszeichen # auf dem Stack befindet. Für das Eingabewort aaabbb würde sich der Zustand des Automaten wie folgt verändern: Startzustand: z 0, Stack: (#) Liest a, geht nach: z 0, Stack: (x, #) Liest a, geht nach: z 0, Stack: (x, x, #) Liest a, geht nach: z 0, Stack: (x, x, x, #) Liest b, geht nach: z 1, Stack: (x, x, #) Liest b, geht nach: z 1, Stack: (x, #) Liest b, geht nach: z 1, Stack: (#) Ohne Eingabe nach: z 2, Stack: (#) Anmerkung: Die obige Darstellung des PDA enthält nur die Übergänge, über die der Endzustand z 2 erreicht werden kann, was zur Definition aber ausreicht. Würde der Automat in z 2 etwa ein a lesen, so ist kein Übergang definiert. Der Automat stoppt in diesem Fall und das Wort wird nicht akzeptiert. Wir könnten für diese und für alle weiteren Möglichkeiten weitere Kanten und gegebenenfalls neue Zustände einführen. Wäre so das Verhalten des PDA für jede mögliche Eingabe und Stacksituation eindeutig definiert, so erhielten wir einen deterministischen PDA. Formal ist ein PDA definiert als ein Tupel (Z, Σ, Γ, δ, z 0, #, E), für das gilt: 17

18 Z ist die Menge der Zustände des Automaten. (wie DEA, NEA) Σ ist das Eingabealphabet. (wie DEA, NEA) Γ ist das Stackalphabet. δ : Z Σ ε Γ ε P(Z Γ ε ). Dabei sind Σ ε und Γ ε das um ε erweiterte Eingabe-, bzw. Stackalphabet. Die Übergangsfunktion δ bildet also Tripel (z, a, γ) bestehend aus einem Zustand, einem Buchstaben des Eingabealphabets und einem Buchstaben des Stackalphabets, jeweils mit varepsilon ab auf eine Menge von Paaren (z, γ ). Jedes dieser Paare enthält also einen möglichen Folgezustand dar, den der PDA annehmen kann und gibt die Veränderung am Stack an, die dabei geschehen würde. Dabei gilt für das Zeichen ε: Wenn a = ε, so kann der Übergang ohne Eingabe geschehen. Wenn γ = ε, so kann der Übergang unabhängig vom Beginn des Stacks erfolgen. z 0 Z ist der Startzustand. (wie DEA) # Γ ist das erste Stackzeichen. E Z ist die Menge der Endzustände. (wie DEA, NEA) Die Akzeptanz eines Eingabewortes durch einen PDA lässt sich informell, aber für unsere Zwecke ausreichend, so definieren: Ein Eingabewort w wird von einem PDA akzeptiert, wenn es mindestens einen Endzustand gibt, den der Automat beim Einlesen des Wortes erreichen kann. Die Menge aller Wörter, die von einem PDA akzeptiert wird, ist die von dem PDA akzeptierte Sprache. Dabei gilt insbesondere: Kellerautomaten akzeptieren genau die kontextfreien Sprachen. Wir werden das im Folgenden nicht beweisen, sondern begnügen uns mit einem Beispiel für die Umwandlung einer kontextfreien Grammatik in einen Kellerautomaten Turing-Maschinen Turing-Maschinen verfügen nicht über einen Stack, stattedessen aber über ein Eingabe-Band, das wir uns in beide Richtungen als unbegrenzt denken. Auf den Feldern des Eingabebandes stehen Buchstaben eines Alphabets oder die Felder sind leer, was durch das Blank-Symbol dargestellt wird. Die Turing-Maschine verfügt über einen Lesekopf, der jeweils über genau einem Feld steht. Sie verfügt weiterhin wie die übrigen Automaten, die wir bisher kennengelernt haben über eine Reihe interner Zustände, zwischen denen sie wechseln kann. In jedem Arbeitsschritt kann eine Turing-Maschine die folgenden Operationen vollführen: Liest ein Zeichen unter dem Lesekopf Schreibt ein Zeichen unter dem Lesekopf Bewegt sich um ein Feld nach links oder rechts Wechselt den Zustand 18

19 Der Zustandsübergang einer Turing-Maschine wird dargestellt durch: Lies: Wenn die Maschine in Zustand z ist und unter dem Lesekopf X steht, dann: Schreibe Y an diese Stelle Bewege den Lesekopf nach M {L, R, N}, also nach links, rechts oder bleibe neutral in derselben Position Wechsle in den Zustand z Turing-Maschinen sind also nicht nur lesende Maschinen, sondern sie können auch die Symbole verändern, die als Eingabe dienen. Eine Turing-Maschine kann bei ihrer Arbeit nicht notwendigerweise unterscheinden zwischen Zeichen der ursprünglichen Eingabe und solchen, die währende der Verarbeitung geschreiben wurden. Das hat einige wichtige Konsequenzen: 1. Eine Turing-Maschine kann über einer endlichen Eingabe möglicherweise ewig laufen ohne jemals anzuhalten. (Diese einfache Tatsache wird auch Halteproblem bezeichnet und spielt eine wichtige Rolle in der Theorie der Berechenbarkeit.) 2. Da eine Turing-Maschine eventuell nicht anhält, sind ihre Endzustände anders definiert. Eine Turing-Maschine kann über einen akzeptierenden Zustand z ja und einen nicht akzeptierenden Zustand z nein verfügen. Sie hält entweder in z ja, in z nein oder gar nicht. Ein Wort ist nur akzeptiert, wenn die Maschine in z ja hält. Beispiel: Ein binärer Addierer als Turing-Maschine Die folgende Turing-Maschine addiert 1 auf beliebige binär codierte Zahlen. Gehen wir davon aus, dass zu Beginn die Eingabe 1011 (binäre 11) auf dem Band steht. Die Maschine befindet sich dabei im Zustand z 0. Der Lesekopf könnte z.b. auf die erste Ziffer der Eingabe zeigen. Wir gehen davon aus, dass die Eingabe nach links und rechts durch die Blank-Zeichen begrenzt ist ^ Die beiden Zustandsüberführungen, die von z 0 wieder nach z 0 führen, sorgen nun dafür, dass sich der Lesekopf bis ein Feld über das Ende der Eingabe hinaus bewegt. Dabei wird immer genau die Zahl geschrieben, die gelesen wurde. Die Eingabe auf dem Band verändert sich also nicht ^ Nun kann die Turing-Maschine über die Regel /, L nach z 1 wechseln und gelangt zur letzten Ziffer der Eingabe

20 ^ Da an dieser Stelle eine 1 gelesen wird, folgt die Maschine zweimal dem Übergang 1/0L und bleibt dabei in z ^ Anschließend kann die Maschine über 0/1, N in den Zustand z ja übergehen. Die Eingabe ist akzeptiert und aus der binären 11 ist eine binäre 12 geworden ^ Formal ist eine Turing-Maschine definiert als Tupel (Z, Σ, Γ, δ, z 0, E), für das gilt: Z ist die Menge der Zustände des Automaten. (wie DEA, NEA, PDA) Σ ist das Eingabealphabet. (wie DEA, NEA, PDA) Γ ist das Bandalphabet mit Σ Γ, Γ \ Σ. δ : (Z \ E) Γ Z Γ {L, R, N}. Die Übergangsfunktion δ bildet also Paare (z, X), bestehnd aus einem Zustand (nicht Endzustand) und einem (gelesenen) Buchstaben des Bandalphabets ab auf Tripel (z, Y, M), bestehend aus einem Zustand, einem (geschriebenen) Symbol des Bandalphabets und einer Bewegung L, R oder N. Die Maschine verhält sich dabei wie folgt: Wenn in Zustand z die Eingabe X gelesen wird, geht die Maschinen nach z über, schreibt Y, und bewegt den Lesekopf nach links, rechts oder gar nicht. z 0 Z ist der Startzustand. (wie DEA, PDA) E = {z ja, z nein } ist die Menge der Endzustände, bestehnd aus dem akzeptierenden Endzustand z ja und dem nicht akzeptierenden Endzustand z nein. Turing-Maschinen und die Chomsky-Hierarchie Eine Spezialform der Turing-Maschine ist die Linear beschränkte Turing-Maschine. Sie zeichnet sich einfach dadurch aus, dass sie den Bereich der Eingabe nicht verlassen kann. Für Turing-Maschinen gilt: Linear beschränkte Turing-Maschinen akzeptieren genau die kontextsensitiven (Typ 1-) Sprachen. Turing-Maschinen akzeptieren genau die rekursiv aufzählbaren (Typ 0-) Sprachen. 20

Vorlesung Theoretische Informatik

Vorlesung Theoretische Informatik Vorlesung Theoretische Informatik Automaten und Formale Sprachen Hochschule Reutlingen Fakultät für Informatik Masterstudiengang Wirtschaftsinformatik überarbeitet von F. Laux (Stand: 09.06.2010) Sommersemester

Mehr

Sprachen/Grammatiken eine Wiederholung

Sprachen/Grammatiken eine Wiederholung Sprachen/Grammatiken eine Wiederholung Was sind reguläre Sprachen? Eigenschaften regulärer Sprachen Sprachen Begriffe Symbol: unzerlegbare Grundzeichen Alphabet: endliche Menge von Symbolen Zeichenreihe:

Mehr

Zusammenfassung Grundzüge der Informatik 4

Zusammenfassung Grundzüge der Informatik 4 Zusammenfassung Grundzüge der Informatik 4 Sommersemester 04 Thorsten Wink 21. September 2004 Version 1.2 Dieses Dokument wurde in L A TEX 2εgeschrieben. Stand: 21. September 2004 Inhaltsverzeichnis 1

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax

Mehr

GTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de

GTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 6. Juni - 13. Juni 1 / 49 Die Turingmaschine war das erste (bzw. zweite) formale Modell der Berechenbarkeit. Sie wurden bereits 1936 (also lange

Mehr

Mathematische Grundlagen der Informatik 2

Mathematische Grundlagen der Informatik 2 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Emanuel Duss emanuel.duss@gmail.com 12. April 2013 1 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Dieses Dokument basiert

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 2.4 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibungsformen für Sprachen Mathematische Mengennotation Prädikate beschreiben Eigenschaften

Mehr

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka

Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka Literatur: John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman, Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie,

Mehr

Aufgabentypen die in der Klausur vorkommen

Aufgabentypen die in der Klausur vorkommen Aufgabentypen die in der Klausur vorkommen können 1. Nennen Sie fünf wichtige Anwendungsgebiete der Computerlinguistik. 2. Für welches der drei Anwendungsgebiete Maschinelle Übersetzung, Rechtschreibkorrektur

Mehr

THEORETISCHE INFORMATIK

THEORETISCHE INFORMATIK THEORETISCHE INFORMATIK Vorlesungsskript Jiří Adámek Institut für Theoretische Informatik Technische Universität Braunschweig Januar 2014 Inhaltsverzeichnis 1 Endliche Automaten 1 1.1 Mathematische Grundbegriffe.......................

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen / Kontextfreie Sprachen und Kellerautomaten

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen / Kontextfreie Sprachen und Kellerautomaten Inhalt 1 Einführung 2 Automatentheorie und Formale Sprachen Grammatiken Reguläre Sprachen und endliche Automaten Kontextfreie Sprachen und Kellerautomaten Kontextsensitive und Typ 0-Sprachen 3 Berechenbarkeitstheorie

Mehr

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls 4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls δ(q, a, Z) + δ(q, ɛ, Z) 1 (q, a, Z) Q Σ. Die von einem DPDA, der mit leerem Keller akzeptiert,

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit Sommersemester 2011 Dozent: Prof. Dr. J. Rothe, Prof. Dr. M. Leuschel J. Rothe (HHU Düsseldorf)

Mehr

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1 Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 7 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 1 Wir betrachten die folgende Signatur

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2013 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Deterministische Kellerautomaten

Mehr

Tutorium zur theoretischen Informatik Übungsblatt 4 (2006-12-13)

Tutorium zur theoretischen Informatik Übungsblatt 4 (2006-12-13) Ein verständiges Herz erwirbt Kenntnisse, und das Ohr der Weisen lauscht dem Wissen. (Die Bibel, "Buch der Sprüche", Kapitel 18 Vers 15) Inhalt 1. Empfehlenswerte Referenzen 2. Aufgabe 1 CF Grammatik für

Mehr

Syntax (= Satzgefüge), vgl. auch Grammatik

Syntax (= Satzgefüge), vgl. auch Grammatik 1 Natürliche Sprachen Natürliche Sprachen bezeichnen wie das Wort "Sprache" ausdrückt zunächst das Gesprochene. Das Schweizerdeutsch etwa ist eine typische natürliche Sprache. Mit der Erfindung der Aufzeichnung

Mehr

Formale Sprachen. Script, Kapitel 4. Grammatiken

Formale Sprachen. Script, Kapitel 4. Grammatiken Formale Sprachen Grammatiken Script, Kapitel 4 erzeugen Sprachen eingeführt von Chomsky zur Beschreibung natürlicher Sprachen bedeutend für die Syntaxdefinition von Programmiersprachen (Compilerbau) Automaten

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

Grafische Interaktionssysteme/ dynamische Visualisierung des endlichen Automaten

Grafische Interaktionssysteme/ dynamische Visualisierung des endlichen Automaten Sprachliche Informationsverarbeitung 29.01.2007 HS Intelligente Systeme Prof. Dr. J. Rolshoven (WS 06/07) Grafische Interaktionssysteme/ dynamische Visualisierung des endlichen Automaten Referentin: Melinda

Mehr

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik Grundlagen der Informatik II Teil I: Formale Modelle der Informatik 1 Einführung GdInfoII 1-2 Ziele/Fragestellungen der Theoretischen Informatik 1. Einführung abstrakter Modelle für informationsverarbeitende

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale Sprachen, reguläre und kontextfreie Grammatiken Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache

Mehr

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Grundlagen Theoretischer Informatik I SoSe 2011 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Grundlagen Theoretischer Informatik I Gesamtübersicht Organisatorisches; Einführung Logik

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 8: kontextfreie Grammatiken Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/37 Überblick Kontextfreie Grammatiken

Mehr

Grammatiken und die Chomsky-Hierarchie

Grammatiken und die Chomsky-Hierarchie Grammatiken und die Chomsky-Hierarchie Def.: Eine Grammatik G=(Σ,V,S,R) besteht aus endlichem Alphabet Σ endlicher Variablenmenge V mit V Σ= Startsymbol SєV endlicher Menge R с (V Σ) + x(v Σ)* von Ableitungsregeln

Mehr

Prof. Dr. Jürgen Dix Institut für Informatik, TU Clausthal Informatik III, WS 2006/07 2/561

Prof. Dr. Jürgen Dix Institut für Informatik, TU Clausthal Informatik III, WS 2006/07 2/561 Informatik III (Automatentheorie und formale Sprachen) Prof. Dr. Jürgen Dix Institut für Informatik TU Clausthal WS 2006/07 Zeit und Ort: Vorlesung am Mittwoch 15-17 (HA) und Donnerstag 13 15 (HB) (IfM),

Mehr

Formale Sprachen und deren Grammatiken. Zusammenhang mit der Automatentheorie.

Formale Sprachen und deren Grammatiken. Zusammenhang mit der Automatentheorie. Formale Sprachen Formale Sprachen und deren Grammatiken. Zusammenhang mit der Automatentheorie. Inhaltsübersicht und Literatur Formale Sprachen: Definition und Darstellungen Grammatiken für formale Sprachen

Mehr

Z 50. Z O Z Int Z Komma Z Real Ziffer Komma Ziffer

Z 50. Z O Z Int Z Komma Z Real Ziffer Komma Ziffer 10 Endliche Automaten 10.1 Einführungsbeispiele Beispiel 1: Warenautomat Ein Flasche Cola kostet 1,50. Münzen zu 1 und 50 ct werden angenommen. Cola und evtl. Restgeld werden ausgegeben. Auch der Rückgabeknopf

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik - das Quiz zur Vorlesung Teil I - Grundzüge der Logik In der Logik geht es um... (A) die Formen korrekten Folgerns (B) die Unterscheidung von wahr und falsch (C) das Finden von

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 4 26..25 INSTITUT FÜR THEORETISCHE INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Parsing-EinfŸhrung Ð 1

Parsing-EinfŸhrung Ð 1 Parsing-EinfŸhrung bersicht Falsifizierbarkeit, oder: Sind Grammatiken wissenschaftlich? Grammatik, Formalismus Kontextfreie Grammatiken Ableitungen Ziel Verstehen der linguistischen Motivation Intuitives

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Reguläre Ausdrücke. Prof.Dr.Christian Wagenknecht mit Beiträgen von Herrn Dr.Michael Hielscher

Reguläre Ausdrücke. Prof.Dr.Christian Wagenknecht mit Beiträgen von Herrn Dr.Michael Hielscher Reguläre Ausdrücke Prof.Dr.Christian Wagenknecht mit Beiträgen von Herrn Dr.Michael Hielscher Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 1/44 Definition reguläre Ausdrücke für reguläre Sprachen

Mehr

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19 Inhalt 1 inführung 2 Automatentheorie und ormale prachen Grammatiken Reguläre prachen und endliche Automaten Kontextfreie prachen und Kellerautomaten Kontextsensitive und yp 0-prachen 3 Berechenbarkeitstheorie

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Informatik IC2. Balazs Simon 2005.03.26.

Informatik IC2. Balazs Simon 2005.03.26. Informatik IC2 Balazs Simon 2005.03.26. Inhaltsverzeichnis 1 Reguläre Sprachen 3 1.1 Reguläre Sprachen und endliche Automaten...................... 3 1.2 Determinisieren.....................................

Mehr

Informatik I. Lutz Donnerhacke lutz@iks-jena.de. PGP:db089309 1c1c 6311 ef09 d819 e029 65be bfb6 c9cb

Informatik I. Lutz Donnerhacke lutz@iks-jena.de. PGP:db089309 1c1c 6311 ef09 d819 e029 65be bfb6 c9cb Informatik I Lutz Donnerhacke lutz@iks-jena.de PGP:db089309 1c1c 6311 ef09 d819 e029 65be bfb6 c9cb 1 Semesterübersicht Grundbegriffe der theoretischen Informatik Übersicht über Funktionen von Betriebsystemen

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395 Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395 Turing-Machine Wir suchen ein Modell zur formalen Definition der Berechenbarkeit von Funktionen und deren Zeit- und Platzbedarf. Verschiedene Modelle

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen Berechenbarkeit und Komlexität Entscheidbarkeit und Unentscheidbarkeit Wolfgang Schreiner Wolfgang.Schreiner@risc.uni-linz.ac.at Research Institute for Symbolic Comutation (RISC) Johannes Keler University,

Mehr

Automaten, Formale Sprachen und Berechenbarkeit I. Skript zur Vorlesung im WS 2001/02 an der TU München

Automaten, Formale Sprachen und Berechenbarkeit I. Skript zur Vorlesung im WS 2001/02 an der TU München Automaten, Formale Sprachen und Berechenbarkeit I Skript zur Vorlesung im WS 2001/02 an der TU München Ekkart Kindler Steffen Manthey Version: 1.30 vom 30. April 2002 ii Redaktioneller Hinweis: Es gibt

Mehr

Automatentheorie Berechnungsmodell für logische Sprachen

Automatentheorie Berechnungsmodell für logische Sprachen Automatentheorie Berechnungsmodell für logische Sprachen Thorsten Haupt Betreuer: Tim Priesnitz -Proseminar Theorie kommunizierender Systeme SS 24- Prof. Gert Smolka, PS-Lab, Universität des Saarlandes

Mehr

Einführung in die Computerlinguistik

Einführung in die Computerlinguistik Einführung in die Computerlinguistik Syntax WS 2006/2007 Manfred Pinkal Einführung in die Computerlinguistik 2006/2007 M. Pinkal UdS 1 Morphologie und Syntax Gegenstand der Morphologie ist die Struktur

Mehr

Gibt es verschiedene Arten unendlich? Dieter Wolke

Gibt es verschiedene Arten unendlich? Dieter Wolke Gibt es verschiedene Arten unendlich? Dieter Wolke 1 Zuerst zum Gebrauch des Wortes unendlich Es wird in der Mathematik in zwei unterschiedlichen Bedeutungen benutzt Erstens im Zusammenhang mit Funktionen

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken

Mehr

4.2.4 Reguläre Grammatiken

4.2.4 Reguläre Grammatiken 4.2.4 Reguläre Grammatiken Eine reguläre Grammatik ist eine kontextfreie Grammatik, deren Produktionsregeln weiter eingeschränkt sind Linksreguläre Grammatik: A w P gilt: w = ε oder w = Ba mit a T und

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

ARBEITSBLATT ZU FORMALEN SPRACHEN ARBEITSBLATT ZU FORMALEN SPRACHEN Aufgabe 1: Gegeben ist die folgende Formale Sprache L(G) mit G = (T, N, P, S). Die Produktionen lauten ZUWEISUNG ::= name zuweisungsoperator AUSDRUCK semikolon AUSDRUCK

Mehr

Ausführung von Grammatikbasierten Prozessmodellen in einer Cloud Umgebung

Ausführung von Grammatikbasierten Prozessmodellen in einer Cloud Umgebung Institut für Architektur von Anwendungssystemen Universität Stuttgart Universitätsstraße 38 D - 70569 Stuttgart Diplomarbeit Nr. 3163 Ausführung von Grammatikbasierten Prozessmodellen in einer Cloud Umgebung

Mehr

Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung

Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung Frank Heitmann heitmann@informatik.uni-hamburg.de 13. Mai 2014 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/17 Überblick Wir hatten

Mehr

Wortproblem für kontextfreie Grammatiken

Wortproblem für kontextfreie Grammatiken Wortproblem für kontextfreie Grammatiken G kontextfreie Grammatik. w Σ w L(G)? Wortproblem ist primitiv rekursiv entscheidbar. (schlechte obere Schranke!) Kellerautomat der L(G) akzeptiert Ist dieser effizient?

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

b) Eine nd. k-band-turingmaschine M zur Erkennung einer m-stelligen Sprache L (Σ ) m ist ein 8-Tupel

b) Eine nd. k-band-turingmaschine M zur Erkennung einer m-stelligen Sprache L (Σ ) m ist ein 8-Tupel 2. Turingmaschinen Zur Formalisierung von Algorithmen benutzen wir hier Turingmaschinen. Von den vielen Varianten dieses Konzeptes, die sich in der Literatur finden, greifen wir das Konzept der on-line

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik I WS 07/08 Tutorium 24 Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 20.12.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Rückblick Semi-Thue-Systeme Ein Semi-Thue-System besteht

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 27 29..24 FAKULTÄT FÜR INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Definition

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik für die Studiengänge Ingenieur-Informatik berufsbegleitendes Studium Lehramt Informatik (Sekundar- und Berufsschule) http://theo.cs.uni-magdeburg.de/lehre04s/ Lehrbeauftragter:

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Turing-Maschine, Berechenbarkeit INSTITUT FÜR THEORETISCHE 0 KIT 07.11.2011 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen

Mehr

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 6 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Satz 1 Seien F, G Boolesche Ausdrücke

Mehr

Kapitel 2: Formale Sprachen Gliederung

Kapitel 2: Formale Sprachen Gliederung Gliederung 0. Einleitung und Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.1. Chomsky-Grammatiken 2.2. Reguläre Sprachen 2.3. Kontextfreie Sprachen

Mehr

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Endliche Automaten. Endliche Automaten 1 / 108

Endliche Automaten. Endliche Automaten 1 / 108 Endliche Automaten Endliche Automaten 1 / 108 Endliche Automaten Endliche Automaten erlauben eine Beschreibung von Handlungsabläufen: Wie ändert sich ein Systemzustand in Abhängigkeit von veränderten Umgebungsbedingungen?

Mehr

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE: FORMALISIERUNG VON ALGORITHMEN Wegen der beobachteten Zusammenhänge zwischen Berechnungs-, Entscheidungs- und Aufzählungsverfahren genügt es Berechnungsverfahren zu formalisieren. Weiter genügt es Verfahren

Mehr

Programmieren I. Formale Sprachen. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Formale Sprachen. www.kit.edu. Institut für Angewandte Informatik Programmieren I Formale Sprachen KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Formale Sprachen: Allgemeines Sprachen werden

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines

Mehr

Konfiguration einer TM als String schreiben: Bandinschrift zwischen den Blank-Zeichen Links von der Kopfposition Zustand einfügen.

Konfiguration einer TM als String schreiben: Bandinschrift zwischen den Blank-Zeichen Links von der Kopfposition Zustand einfügen. H MPKP Konfiguration einer TM als String schreiben: Bandinschrift zwischen den Blank-Zeichen Links von der Kopfposition Zustand einfügen. Beispiel: 1234q567 bedeutet: Kopf steht auf 5, Zustand ist q. Rechnung:

Mehr

Reguläre Sprachen Endliche Automaten

Reguläre Sprachen Endliche Automaten Endliche Automaten (Folie 54, Seite 16 im Skript) Einige Vorteile endlicher deterministischer Automaten: durch Computer schnell simulierbar wenig Speicher benötigt: Tabelle für δ (read-only), aktueller

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

Formelsammlung theoretische Informatik I

Formelsammlung theoretische Informatik I Formelsammlung theoretische Informatik I Stand: 27.05.2005 - Version: 1.0.3 Erhältlich unter http://privat.macrolab.de Diese Formelsammlung basiert auf der Vorlesung Theoretische

Mehr

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet 22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet Autor Volker Claus, Universität Stuttgart Volker Diekert, Universität Stuttgart Holger Petersen, Universität Stuttgart

Mehr

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Ulrich Furbach. Sommersemester 2014

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Ulrich Furbach. Sommersemester 2014 Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Ulrich Furbach Institut für Informatik Sommersemester 2014 Furbach Grundlagen d. Theoretischen Informatik:

Mehr

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

Mehr

Übungen zu Modellierung verteilter Systeme

Übungen zu Modellierung verteilter Systeme Technische Universität München SoSe 2014 Institut für Informatik Lösungsblatt 1 PD Dr.habil. B. Schätz Ausgabe: 17. April 2014 M. Gleirscher, D. Marmsoler Besprechung: 24. April 2014 Übungen zu Modellierung

Mehr

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen Brainfuck 1 Brainfuck 1.1 Brainfuck Geschichte und Umfeld Brainfuck ist eine sogenannte esoterische Programmiersprache. Sie wurde 1993 vom Schweizer Urban Müller entworfen mit dem Ziel, eine Sprache mit

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

Theoretische Informatik 1 + 2

Theoretische Informatik 1 + 2 AG Theoretische Grundlagen der KI, Fachbereich Informatik, Universität Bremen Skript zu den Lehrveranstaltungen Theoretische Informatik 1 + 2 Prof. Dr. Carsten Lutz Basierend auf einem Skript von Franz

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle.

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle. Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik Seminar Entscheidungsverfahren für logische Theorien Tobias Hebel Koblenz, am 18.02.2005 Inhaltsverzeichnis 1 Einleitung... 3 2 Grundlagen...

Mehr

Übung Theoretische Grundlagen Nachtrag zur Vorlesung Dirk Achenbach 21.11.2013

Übung Theoretische Grundlagen Nachtrag zur Vorlesung Dirk Achenbach 21.11.2013 Übung Theoretische Grundlagen Nachtrag zur Vorlesung Dirk Achenbach 21.11.2013 INSTITUT FÜR KRYPTOGRAPHIE UND SICHERHEIT KIT University of the State of Baden-Wuerttemberg and National Laboratory of the

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik Wolfgang Ertel 28. Oktober 2008 Inhaltsverzeichnis 1 Formale Sprachen und Maschinenmodelle 3 1.1 Grundlagen................................... 3 1.2 Grammatiken..................................

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

6.2 Petri-Netze. kommunizierenden Prozessen in der Realität oder in Rechnern Verhalten von Hardware-Komponenten Geschäftsabläufe Spielpläne

6.2 Petri-Netze. kommunizierenden Prozessen in der Realität oder in Rechnern Verhalten von Hardware-Komponenten Geschäftsabläufe Spielpläne 6.2 Petri-Netze WS 06/07 mod 621 Petri-Netz (auch Stellen-/Transitions-Netz): Formaler Kalkül zur Modellierung von Abläufen mit nebenläufigen Prozessen und kausalen Beziehungen Basiert auf bipartiten gerichteten

Mehr

4 Lexikalische Analyse und Parsing

4 Lexikalische Analyse und Parsing 4 Lexikalische Analyse und Parsing Lexikalische Analyse und Parsing sind die wichtigsten Bereiche des Compilerbaus. Prinzipien und Techniken des Compilerbaus beschränken sich nicht auf die Erstellung von

Mehr

3 Quellencodierung. 3.1 Einleitung

3 Quellencodierung. 3.1 Einleitung Source coding is what Alice uses to save money on her telephone bills. It is usually used for data compression, in other words, to make messages shorter. John Gordon 3 Quellencodierung 3. Einleitung Im

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Codierung Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Ein bisschen Informationstheorie Betrachten wir das folgende Problem: Wie lautet eine sinnvolle Definition für das quantitative

Mehr

Übungsaufgaben und Lösungen. zur Vorlesung. Theoretische Grundlagen der Informatik

Übungsaufgaben und Lösungen. zur Vorlesung. Theoretische Grundlagen der Informatik UNIVERSITÄT KONSTANZ Theoretische Grundlagen der Informatik SS 3 Fachbereich Informatik & Informationswissenschaft www.inf.uni-konstanz.de/algo/lehre/ss3/theo Dr. Bernd Gärtner, Carola Haid, Jasper Möller,

Mehr

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt:

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt: Informatik 13: Gierhardt Theoretische Informatik III Berechenbarkeit Nicht-berechenbare Funktionen Nach der Church-Turing-These kann alles, was berechenbar ist, mit einer Turing-Maschine oder einer While-Maschine

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

5.1 Drei wichtige Beweistechniken... 55 5.2 Erklärungen zu den Beweistechniken... 56

5.1 Drei wichtige Beweistechniken... 55 5.2 Erklärungen zu den Beweistechniken... 56 5 Beweistechniken Übersicht 5.1 Drei wichtige Beweistechniken................................. 55 5. Erklärungen zu den Beweistechniken............................ 56 Dieses Kapitel ist den drei wichtigsten

Mehr