Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber) Zentrale Fragestellungen Wie definiert man (formal) die Syntax einer Sprache (z.B. einer Programmiersprache)? Wie überprüft man, ob ein Wort (d.h. eine Zeichenreihe) zur Sprache gehört? Teil II: Berechenbarkeit und Komplexität (Hannes Diener) Zentrale Fragestellungen Welche Probleme (Aufgabenstellungen) sind prinzipiell mit einem Computer lösbar bzw. nicht lösbar? Welche Probleme sind mit vernünftigem Aufwand (an Speicherplatz und Laufzeit) lösbar? Kurt Sieber GTI - SS 2013 1 Zeichen, Wörter, Sprachen Grundlagen für beide Teile: Zeichen, Wörter und Sprachen Definition 1.1 Ein Alphabet oder Zeichenvorrat ist eine nichtleere endliche Menge. Die Elemente eines Alphabets nennen wir Zeichen oder Symbole. Konvention: Alphabete werden mit Σ, Σ1, Σ0, . . . bezeichnet. Kurt Sieber GTI - SS 2013 2 Zeichen, Wörter, Sprachen Beispiele Σ1 = {1} Σ2 = {0, 1} Σ3 = {0, . . . , 9} Σ4 = {a, . . . , z, A, . . . , Z} Σ5 = Menge aller ASCII-Zeichen Σ6 = {begin, end, if, then, else, ; , :=, +, ∗, . . .} Kurt Sieber GTI - SS 2013 3 Zeichen, Wörter, Sprachen Definition 1.2 Ein Wort über dem Alphabet Σ ist eine endliche Folge w = (a1, . . . , an), wobei n ≥ 0 und ai ∈ Σ für i = 1, . . . , n. n heißt Länge des Wortes w, ai heißt i-tes Zeichen von w. Das Wort () heißt leeres Wort. Kurzschreibweise a1 . . . an statt (a1, . . . , an) Vorsicht: Zeichen a und Wort a nicht mehr unterscheidbar! ε statt () Weitere Schreibweisen |w| = Länge von w Σ∗ = Menge aller Wörter über Σ Σ+ = Σ∗ \ {ε} = Menge aller nichtleeren Wörter über Σ Kurt Sieber GTI - SS 2013 4 Zeichen, Wörter, Sprachen Beispiele {1}∗ = {ε, 1, 11, 111, . . .} {0, 1}∗ = {ε, 0, 1, 00, 01, 10, 11, . . .} ε, 0, 123, 0815 ∈ {0, . . . , 9}∗ Der Inhalt einer Datei ist ein Wort über dem ASCII-Alphabet (denn Leerzeichen, Zeilenwechsel etc. sind Zeichen dieses Alphabets). Ein Programm (in irgendeiner Programmiersprache) ist ebenfalls ein Wort über dem ASCII-Alphabet. Der Inhalt eines Buches ist ein Wort (über dem Alphabet der Sprache, in der es geschrieben ist). Kurt Sieber GTI - SS 2013 5 Zeichen, Wörter, Sprachen Alternative Definition für Σ∗ und Σ+ Σn = {(a1, . . . , an) | ai ∈ Σ für i = 1, . . . , n} = {a1 . . . an | ai ∈ Σ für i = 1, . . . , n} = Menge aller Wörter der Länge n über Σ Speziell: Σ0 = {()} = {ε} Σ∗ = S n≥0 Σ n = Menge aller Wörter über Σ S + n Σ = n≥1 Σ = Σ∗ \ {ε} Kurt Sieber GTI - SS 2013 6 Zeichen, Wörter, Sprachen Definition 1.3 Seien v = a1 . . . am und w = b1 . . . bn Wörter über Σ. Dann ist die Konkatenation v ◦ w von v und w definiert durch v ◦ w = a1 . . . amb1 . . . bn Kurzschreibweise: vw statt v ◦ w Eigenschaften der Konkatenation Assoziativität: (uv)w = u(vw) für alle u, v, w ∈ Σ∗ Neutrales Element: wε = εw = w für alle w ∈ Σ∗ Also: (Σ∗, ◦) ist ein Monoid mit neutralem Element ε (vgl. natürliche Zahlen mit Multiplikation) Kurt Sieber GTI - SS 2013 7 Zeichen, Wörter, Sprachen Definition 1.4 Sei w ∈ Σ∗ und n ∈ N. Dann ist die n-te Potenz wn von w definiert durch wn = w . . w} (speziell: an = a . . a} falls a ∈ Σ). | .{z | .{z n n Besser: Definition von wn durch Induktion über n w0 = ε wn = wwn−1 falls n > 0 Oder: w0 = ε wn = wn−1w falls n > 0 Beispiele (bla)2 = blabla (bla )3 = bla bla bla Kurt Sieber GTI - SS 2013 8 Zeichen, Wörter, Sprachen Definition 1.5 Für w = a1 . . . an ∈ Σ∗ sei wR ∈ Σ∗ das Wort, das durch “Spiegelung” aus w entsteht , d.h. wR = an . . . a1 (R steht für engl. reverse) Beispiel (01001)R = 10010 Alternative Definition von wR durch Induktion über |w| (s. Übung!) Kurt Sieber GTI - SS 2013 9 Zeichen, Wörter, Sprachen Definition 1.6 Sei x ∈ Σ∗. u heißt Anfangswort oder Präfix von x, falls ein v ∈ Σ∗ existiert mit x = uv. v heißt Endwort oder Suffix von x, falls ein u ∈ Σ∗ existiert mit x = uv. v heißt Teilwort von x, falls u, w ∈ Σ∗ existieren mit x = uvw. Beispiel Präfixe von 010: ε, 0, 01, 010 Suffixe von 010: ε, 0, 10, 010 Teilwörter von 010: ε, 0, 1, 01, 10, 010 Kurt Sieber GTI - SS 2013 10 Zeichen, Wörter, Sprachen Die Beziehungen ‘Anfangswort’, ‘Endwort’ und ‘Teilwort’ sind zweistellige Relationen auf Σ∗. Jede dieser Relationen ist reflexiv : Jedes w ∈ Σ∗ steht in Relation zu sich selbst. transitiv : Wenn u in Relation zu v und v in Relation zu w steht, dann steht auch u in Relation zu w. antisymmetrisch: Wenn u in Relation zu v steht und v in Relation zu u, dann ist v = u. Also: Jede der Relationen definiert eine partielle Ordnung auf Σ∗. Kurt Sieber GTI - SS 2013 11 Zeichen, Wörter, Sprachen Definition 1.7 Eine Sprache (oder formale Sprache) über dem Alphabet Σ ist eine (beliebige) Teilmenge von Σ∗. Konvention: Sprachen bezeichnen wir meist mit L, L1, L0, . . . (engl. language). Alternative Formulierung Eine Sprache über Σ ist ein Element der Potenzmenge ℘(Σ∗). Kurt Sieber GTI - SS 2013 12 Zeichen, Wörter, Sprachen Beispiele L1 = ∅ L2 = Σ∗ L3 = {ε} L4 = {1n | n ist eine Primzahl} L5 = Menge aller Binärdarstellungen natürlicher Zahlen L6 = Menge aller Dezimaldarstellungen natürlicher Zahlen L7 = Menge aller Java-Programme L8 = Menge aller Sätze der deutschen Sprache L9 = {0n1n | n ≥ 0} L10 = {vw | v ∈ {0}∗, w ∈ {1}∗} Kurt Sieber GTI - SS 2013 13 Zeichen, Wörter, Sprachen Definition 1.8 Seien L, L1, L2 ⊆ Σ∗. Dann sei L1 ∪ L2 die Vereinigung von L1 und L2. L1 ∩ L2 der Durchschnitt von L1 und L2. L1 \ L2 = {w ∈ L1 | w ∈ / L2} die Mengendifferenz von L1 und L2. L̄ = Σ∗ \ L das Komplement von L. L1 ◦ L2 = {vw | v ∈ L1, w ∈ L2} die Konkatenation von L1 und L2. Kurzschreibweise: L1L2 statt L1 ◦ L2 Eigenschaften der Konkatenation Assoziativität: (L1L2)L3 = L1(L2L3) für alle L1, L2, L3 ⊆ Σ∗ Neutrales Element: L{ε} = {ε}L = L für alle L ⊆ Σ∗ Also: (℘(Σ∗), ◦) ist ein Monoid mit neutralem Element {ε}. Kurt Sieber GTI - SS 2013 14 Zeichen, Wörter, Sprachen Definition 1.9 Seien L ⊆ Σ∗ und n ∈ N. Dann ist die n-te Potenz Ln von L definiert durch Ln = L . . ◦ L} | ◦ .{z n = L . . L} | .{z n = {w1 . . . wn | wi ∈ L für i = 1, . . . , n} Besser: Definition von Ln durch Induktion über n L0 = {ε} Ln = LLn−1 falls n > 0 Oder: L0 = {ε} Ln = Ln−1L falls n > 0 Kurt Sieber GTI - SS 2013 15 Zeichen, Wörter, Sprachen Definition 1.10 Für L ⊆ Σ∗ sei LR = {wR | w ∈ L} die “Spiegelung” von L S ∗ n L = n≥0 L = {w1 . . . wn | n ≥ 0, wi ∈ L für i = 1, . . . , n} der Kleene-Abschluss von L. Speziell: {w}∗ = {wn | n ≥ 0} falls w ∈ Σ∗ {a}∗ = {an | n ≥ 0} falls a ∈ Σ L+ = S n n≥1 L = {w1 . . . wn | n ≥ 1, wi ∈ L für i = 1, . . . , n} = LL∗ Folgerung: L∗ = L+ ∪ L0 = L+ ∪ {ε} Kurt Sieber GTI - SS 2013 16 Zeichen, Wörter, Sprachen Rechenregeln für Potenzen . . . von Sprachen . . . von Wörtern w0 = ε (neutrales Element) L0 = {ε} (neutrales Element) w1 = w L1 = L wmwn = wm+n LmLn = Lm+n (wm)n = wmn (Lm)n = Lmn Diese Regeln gelten in jedem Monoid (wenn man das Potenzieren nach dem üblichen Schema definiert). Denn sie folgen allein aus der Assoziativität und der Eigenschaft des neutralen Elements. n Warnung: Es gilt nicht (w1w2)n = w1nw2n oder (L1L2)n = Ln 1 L2 . Denn dazu bräuchte man die Kommutativität. Kurt Sieber GTI - SS 2013 17 Zeichen, Wörter, Sprachen Rechenregeln für ∗ und + L ⊆ L∗ L ⊆ L+ (L∗)∗ = L∗ (L+)+ = L+ Mengenoperatoren mit diesen beiden Eigenschaften nennt man Abschluss- oder Hüllenoperatoren. Beweis für ∗ S ∗ 1 ∗ 1. L ⊆ L ist klar wegen L = L und L = n≥0 Ln. 2. L∗ = (L∗)∗: ‘⊆’ ist klar wegen 1. ‘⊇’: Sei w ∈ (L∗)∗, d.h. w = w1 . . . wn mit n ≥ 0 und wi ∈ L∗ für i = 1, . . . , n. Dann existiert für jedes i ein mi ≥ 0 mit wi ∈ Lmi , also folgt w = w1 . . . wn ∈ Lm1 . . . Lmn = Lm1+...+mn ⊆ L∗. 2 Kurt Sieber GTI - SS 2013 18 Zeichen, Wörter, Sprachen Die Operatoren ∪, ◦,∗ , . . . lassen sich auch zur Beschreibung von Sprachen verwenden. Konvention: Die Postfixoperatoren n, + und ∗ binden am stärksten, ◦ bindet stärker als ∪. Beispiele Die Menge aller Dezimaldarstellungen natürlicher Zahlen: Lnat = {0, . . . , 9}+ = {0, . . . , 9}{0, . . . , 9}∗ Die Menge aller Dezimaldarstellungen ganzer Zahlen: Lint = {−, ε}Lnat Die Menge aller dezimalen Festpunktzahlen: Lfix = Lint {.} ∪ {.}Lnat ∪ Lint {.}Lnat Die Menge aller dezimalen Fließpunktzahlen: Lfloat = Lint {e, E}Lint ∪ Lfix ({ε} ∪ {e, E}Lint ) Kurt Sieber GTI - SS 2013 19 Zeichen, Wörter, Sprachen Die Menge aller Wörter über dem Alphabet {0, 1}, . . . . . . die mit 00 beginnen: L1 = {00}{0, 1}∗ . . . die 00 als Teilwort enthalten: L2 = {0, 1}∗{00}{0, 1}∗ . . . die mindestens zwei Nullen enthalten: L3 = {0, 1}∗{0}{0, 1}∗{0}{0, 1}∗ = {1}∗{0}{1}∗{0}{0, 1}∗ . . . die genau zwei Nullen enthalten: L4 = {1}∗{0}{1}∗{0}{1}∗ . . . die höchstens zwei Nullen enthalten: L5 = {1}∗{0, ε}{1}∗{0, ε}{1}∗ . . . deren erstes und letztes Zeichen übereinstimmen: L6 = {0, 1} ∪ {0}{0, 1}∗{0} ∪ {1}{0, 1}∗{1} Kurt Sieber GTI - SS 2013 20 Reguläre Sprachen Definition 2.1 Die Menge aller regulären Sprachen über Σ ist induktiv definiert durch: Jede endliche Menge L ⊆ Σ∗ ist regulär. Wenn L1, L2 ⊆ Σ∗ regulär sind, dann sind auch L1 ∪ L2 und L1 ◦ L2 regulär. Wenn L regulär ist, dann ist auch L∗ regulär. Mit anderen Worten: Eine Sprache ist genau dann regulär, wenn sie sich durch wiederholte Anwendung der Operatoren ∪, ◦ und ∗ aus endlichen Sprachen aufbauen lässt. Damit haben wir eine endliche Beschreibung für jede reguläre Sprache. Beispiele: Lnat , Lint , Lfix , Lfloat , L1, . . . , L6 sind reguläre Sprachen. Kurt Sieber GTI - SS 2013 21 Reguläre Sprachen Die ‘Mengenausdrücke’ aus Definition 2.1 sind gut lesbare Beschreibungen für reguläre Sprachen (zumindest für die Beispiele aus der Praxis wie Zahldarstellungen, Variablennamen, . . . .) Aber: Nachteil in der Praxis: Ein Mengenausdruck für eine Sprache liefert noch keinen Algorithmus, um die Zugehörigkeit zur Sprache zu testen. Nachteil in der Theorie: Mit Definition 2.1 kann man nur schwer zeigen, dass eine Sprache nicht regulär ist. Deshalb: Alternative Charakterisierungen der regulären Sprachen Insbesondere algorithmische Charakterisierungen Kurt Sieber GTI - SS 2013 22 Endliche Automaten Ein endlicher Automat ist eine ‘Maschine’, die (nur) endlich viele Zustände annehmen kann. Einer der Zustände heißt Startzustand, einige Zustände heißen Endzustände (besser: akzeptierende Zustände). Arbeitsweise Der Automat erhält ein Wort w als Eingabe. Zu Beginn befindet er sich im Startzustand. Er liest w zeichenweise von links nach rechts, wobei jedes Zeichen einen Zustandsübergang bewirkt. Ist er nach Abarbeitung von w in einem Endzustand, so wird w akzeptiert, andernfalls wird w abgelehnt. Ein endlicher Automat kann also dazu benutzt werden, die Zugehörigkeit zu einer Sprache zu testen. Kurt Sieber GTI - SS 2013 23 Endliche Automaten Graphische Darstellung eines endlichen Automaten 0 1 1 q0 q1 0 Konvention: sind die Zustände ist der Startzustand sind die Endzustände Akzeptierte Wörter: 0, 010, 01100 Abgelehnte Wörter: 1, 101, 11011 Kurt Sieber GTI - SS 2013 24