Theoretische Informatik Sibylle Schwarz Westsächsische Hochschule Zwickau Dr. Friedrichs-Ring 2a, RII 263 http://wwwstud.fh-zwickau.de/~sibsc/ sibylle.schwarz@fh-zwickau.de SS 2010 1
Einordnung der Theoretischen Informatik Informatik Wissenschaft von der Darstellung und Verarbeitung symbolischer Information durch Algorithmen Teilgebiete der Informatik: theoretisch technisch Sprachen zur Formulierung von Information und Algorithmen, Möglichkeiten und Grenzen der Berechenbarkeit durch Algorithmen, Grundlagen für technische und praktische (und angewandte) Informatik maschinelle Darstellung von Information Mittel zur Ausführung von Algorithmen praktisch Entwurf und Implementierung von Algorithmen angewandt Anwendung von Algorithmen 2
Theoretische Informatik ältester Zweig der Informatik (lange vor Computern) Mathematische Prinzipien: Abstraktion ermöglicht verallgemeinerte Aussagen und breit einsetzbare Verfahren, Ergebnisse und Verfahren oft nicht sofort praktisch anwendbar, müssen auf spezielle Situationen angepasst werden. Beweisbarkeit erfordert präzise Modellierung des Problems Nachweis der Korrektheit von Hard- und Software (Tests können dies nicht) Wissen aus der theoretischen Informatik veraltet kaum. 3
Themen der Theoretischen Informatik Berechenbarkeitstheorie: Welche Probleme sind überhaupt algorithmisch (mit Hilfe eines Computers) lösbar? Auch negative Antworten sind hier sehr hilfreich (sparen Aufwand für unlösbare Probleme). Komplexitätstheorie: Für welche Problem gibt es schnelle Algorithmen? Formale Sprachen: Repräsentation von Problemen in maschinenlesbarer Form (Mensch-Maschine-Kommunikation, Modellierung) Ausdrucksstärke und Flexibilität von Programmiersprachen Übersetzung höherer Programmiersprachen in ausführbaren Code Maschinenmodelle: Möglichkeiten und Grenzen verschiedener Hard- und Softwarearchitekturen Verifikation (Korrektheitsbeweise) 4
Anwendung bei der Übersetzung von Programmen Höhere Programmiersprachen (z.b. C, Java) erfordern Übersetzung von Quell- in Maschinen- oder Byte-Code Quellcode Zwischendarstellung Java-Bytecode Übersetzung in zwei Phasen: 1. Analyse-Phase (Front-End): Transformation des Quellcodes in eine Zwischendarstellung 2. Synthese-Phase (Back-End): Transformation der Zwischendarstellung in Java-Bytecode 5
Analyse-Phase Quellcode Scanner Folge von Token Parser Syntaxbaum lexikalische Analyse (Scanner) lineare Analyse des Quelltextes, Aufteilung in Einheiten (Token) z.b. Schlüsselwörter, Bezeichner, Zahlen reguläre Sprachen, endliche Automaten syntaktische Analyse (Parser) hierarchische Struktur des Quelltextes z.b. Ausdrücke, Verzweigungen, Schleifen kontextfreie Sprachen, Kellerautomaten semantische Analyse Annotationen im Syntaxbaum, z.b. Typprüfungen 6
Einsatz ähnlicher Analyse-Methoden Übersetzung von Daten zwischen verschiedenen Formaten Verarbeitung von Domain-spezifischen Sprachen Textformatierung kontextabhängige Hilfe in Entwicklungsumgebungen statische Analyse zur Fehlersuche in Programmen Interpreter graphische Editoren (z.b. für UML-Diagramme) mit Programmerzeugung 7
Inhalt der Lehrveranstaltung Formale Sprachen Alphabet, Wort, Sprache Wortersetzung Grammatiken, Chomsky-Hierarchie Maschinenmodelle Endliche Automaten Kellerautomaten Turing-Maschinen Berechenbarkeit berechenbare Funktionen These von Church algorithmische Entscheidbarkeit Komplexität Komplexitätsmaße Komplexitätsklassen P, NP, PSPACE 8
Literatur Uwe Schöning: Theoretische Informatik - kurzgefasst (Spektrum 2001) John E. Hopcroft, Jeffrey D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie (Addison-Wesley 1990) Dirk W. Hoffmann: Theoretische Informatik (Hanser 2009) Rolf Socher: Theoretische Grundlagen der Informatik (Hanser 2008) Ulrich Hedtstück: Einführung in die Theoretische Informatik (Oldenbourg 2007) Gottfried Vossen, Kurt-Ulrich Witt: Grundkurs Theoretische Informatik (Vieweg 2006) Alexander Asteroth, Christel Baier: Theoretische Informatik. Eine Einführung in Berechenbarkeit, Komplexität und formale Sprachen (Pearson 2002) Renate Winter: Theoretische Informatik (Oldenbourg 2002) 9
Organisation http://wwwstud.fh-zwickau.de/~sibsc/lehre/ss10/ti/ Vorlesung Z1 Freitag 11:20-15:00 in HS2 Z2 Donnerstag 11:20-12:50 344 Hausaufgaben schriftliche Aufgaben praktische Aufgaben (Autotool) Einschreibung unter https://bildungsportal.sachsen. de/autolat Übungen 2 Gruppen Z1 Mittwoch 15:20-16:50 Uhr in R249 Z1 Donnerstag 9:20-10:50 Uhr in R249 Fragen zum Vorlesungsstoff Besprechung der schriftlichen Übungsaufgaben Prüfung: Klausur 90 min (keine Hilfsmittel) 10
Formale Sprachen natürliche Sprachen Rechtschreibung: korrekte Wörter Grammatik: Aufbau korrekter Sätze Programmiersprachen Sprachdefinition: Syntax Form der Sprachelemente Semantik Bedeutung der Sprachelemente und -strukturen Pragmatik Regeln zur zweckmäßigen Anwendung Syntax: Schlüsselwörter, Bezeichner, Darstellung von Zahlen,... Programmstrukturen: Form der Ausdrücke, Anweisungen, Deklarationen,... 11
Maschinenmodell: endlicher Automat Beschreibung des dynamischen Verhaltens von Systemen Modellierung von Abläufen Beispiele: Bedienoperationen an Geräten oder Software Schaltfolgen von Ampelanlagen Ablauf von Geschäftsprozessen Steuerung von Produktionsanlagen 12
Beispiel: Einlassautomat mit Karte definiert durch Zustände: gesperrt, frei Startzustand: gesperrt Aktionen (Eingabesymbole): Karte (anlegen), Durchgehen, Timeout Zustandsübergänge(gesperrt, Karte) frei (frei, Karte) frei (frei, Durchgehen) gesperrt (frei, Timeout) gesperrt definiert mögliche (erlaubte) Folgen von Aktionen ( Karte Karte ( Durchgehen + Timeout )) Diese Folgen lassen sich durch reguläre Ausdrücke darstellen. 13
Berechenbarkeit / Entscheidbarkeit Halteproblem: Kann ein Programm U existieren, welches für jedes beliebige Programm P (Eingabe als Quelltext) entscheidet, ob P nach endlich vielen Schritten anhält? Nein Folgerungen: Alle Versuche, ein solches Programm zu schreiben, müssen fehlschlagen. Suche nach Verfahren, die für möglichst viele Programme P entscheiden, ob P nach endlich vielen Schritten anhält, ist sinnvoller. 14
Komplexität Problem: Ist eine gegebene Zahl n eine Primzahl? lösbar durch Algorithmus: 1. Für p {2,..., n} Test: Ist n durch p teilbar? ja: Abbruch mit Ausgabe: p ist nicht prim. nein weiter mit p + 1 2. Ausgabe: p ist prim. Test dauert für große Zahlen sehr lange. Geht es schneller? 15
Formale Sprachen 16
Beispiele banane ist ein Wort (Zeichenkette) mit Symbolen aus der Menge {a, b, e, n} neben und abbbeeeab auch, ananas und ab + bea nicht 2009 ist ein Wort mit Symbolen aus der Menge {0, 2, 9} 90 und 09020090 auch, 2090 nicht (x + y) (z x) ist ein Wort mit Symbolen aus der Menge {x, y, z, (, ), +,, } ()xz(xy + auch, x + 3 z nicht ( p p) q ist ein Wort mit Symbolen aus der Menge {p, q,,,, (, )} q (p q) und )( p auch, p = q nicht Otto holt Obst. ist ein Wort mit Symbolen aus der Menge {Otto, Obst, holt,., },.Otto..Otto auch, Otto boxt. nicht 17
Begriffe Notationen: Für eine Menge A heißt A n = A A }{{} n = {w 1 w n i : w i A} Menge aller Wörter der Länge n über A (n-tupel, Vektoren, Listen, Zeichenketten) A = {n N} An A 0 = {ε} Menge aller Wörter über A mit leerem Wort ε Alphabet (endliche) Menge A von Symbolen Wort endliche Folge von Symbolen w = w 1 w n mit i {1,..., n} : w i A Länge eines Wortes w = Anzahl der Symbole in w Sprache Menge von Wörtern L A 18
Beispiele für Sprachen Menge aller englischen Wörter L 1 {a,..., z} Menge aller deutschen Wörter L 2 {a,..., z, ß,ä,ö,ü} Menge aller möglichen DNA L 3 {A, T, G, C} Menge aller natürlichen Zahlen in Dezimaldarstellung L 4 {0,..., 9}, genauer L 4 = ({1,..., 9} {0,..., 9} ) {0} Menge aller natürlichen Zahlen in Binärdarstellung L 5 {0, 1}, Menge aller deutschen Sätze L 6 (L 2 {.,,,!,?, (, ), }) Problem: Für die automatische Verarbeitung ist eine endliche Darstellung unendlicher Sprachen nowendig. 19
Verkettung Verkettung von Wörtern: : A A A, wobei für alle Wörter u = u 1 u m A, v = v 1 v n A gilt u v = u 1 u m v 1 v n Beispiel: anne marie = annemarie Eigenschaften der Operation : ist assoziativ, d.h. für alle Wörter u, v, w A gilt (u v) w = u (v w) Das leere Wort ε ist neutral für, d.h. w A : (ε w = w ε = w) Damit ist (A,, ε) ein Monoid (Halbgruppe mit neutralem Element). ist nicht kommutativ. Gegenbeispiel: u = marie, v = anne u v = marieanne annemarie = v u 20
Umkehrung (gespiegeltes Wort) Umkehrung von w = w 1 w n : w R = w n w 1 Beispiele: marie R = eiram, 2009 R = 9002, 101 R = 101 ( to ( ( m (ate) R) R n ) R ) R =? Fakt Für jedes Wort w A gilt ( w R) R = w. Beweis: Für beliebiges w = w 1... w n A gilt w R = w n w 1 (nach Definition von R ) und damit (w R ) R = (w n w 1 ) R = w 1... w n (nach Def. von R ). Wegen w 1... w n = w gilt (w R ) R = w. Fakt Für zwei beliebige Wörter u, v A gilt (u v) R = v R u R. 21
Anwendung: Java-Standardbibliothek Rotieren einer Liste x 0,..., x }{{ mid 1, x } mid,..., x size durch }{{} u v v u = (u R v R ) R java.util.collections : private static void rotate2(list<?> list, int distance) int size = list.size(); if (size == 0) return; int mid = -distance % size; if (mid < 0) mid += size; if (mid == 0) return; } reverse(list.sublist(0, mid)); reverse(list.sublist(mid, size)); reverse(list); 22
Palindrome Palindrom: Wort w mit w = w R B: anna, neben, ε, jedes Wort der Länge 1 Die Menge aller Palindrome über dem Alphabet A ist L pal = {w A w = w R } = {w w R w A } {w a w R w A a A} Beispiele: otto = ot to = ot (ot) R für A = {a,..., z} reliefpfeiler = relief p feiler = relief p (relief ) R für A = {a,..., z} 1 = ε 1 ε = ε 1 ε R für A = {0, 1} ε = ε ε = ε ε R 23
Relationen auf Wörtern (binäre Relation = Menge geordneter Paare) Präfix-Relation (Anfangswort): A A Für zwei Wörter u = u 1 u m A, v = v 1 v n A gilt genau dann u v, wenn ein Wort w A existiert, so daß u w = v gilt. Beispiele: an anna (mit w = na) tom tomate (mit w = ate) für jedes Wort u A gilt ε u (mit w = u) für jedes Wort u A gilt u u (mit w = ε) 24
Postfix- und Infix-Relation Postfix-Relation: Für zwei Wörter u = u 1 u m A, v = v 1 v n A heißt u genau dann Postfix von v, wenn ein Wort w A existiert, so dass w u = v gilt. Beispiel: enten ist Postfix von studenten Infix-Relation (Teilwort, Faktor): Für zwei Wörter u = u 1 u m A, v = v 1 v n A heißt u genau dann Infix von v, wenn zwei Wörter w, w A existieren, so dass w u w = v gilt. Beispiel: uwe ist Infix von sauwetter satt ist kein Infix von sauwetter 25
Wortersetzungssysteme Alphabet A Wortersetzungsregel (l, r) A A (geschrieben l r) Wortersetzungssystem endliche Menge von Wortersetzungsregeln Beispiele: Regel ba ab, System S = {a ab, ba c, abc ε} 26
Anwendung von Wortersetzungsregeln Eine Regel l r ist auf ein Wort w A anwendbar, falls l ein Infix von w ist. Beispiel: Regel ma ε ist auf tomate anwendbar, u = to, v = te, auf a und motte nicht anwendbar. Die Anwendung der Regel l r auf ein Wort w = u l v ergibt das Wort u r v. (Ersetzung des Teilwortes l durch r) Beispiel: ab a angewendet auf baababa = u l v mit u = ba und v = aba ergibt baaaba mit u = baab und v = a ergibt baabaa 27
Ableitungsschritt Ableitungsschritt (u, (l r), p, v) im Wortersetzungssystem S mit Ausgangswort u, auf u anwendbare Regel l r aus S, Position p {1,..., u } im Wort u, an der das Teilwort l beginnt v ist das nach Anwendung der Regel l r an Position p auf u entstandene Wort. Beispiel: S = {ab ba, a b}, u = aba mögliche Ableitungsschritte in S (aba, (ab ba), 1, baa) (aba, (a b), 3, abb) (aba, (a b), 1, bba) 28
Ein-Schritt-Ableitungsrelation Jedes Wortersetzungssystem S A A definiert eine Relation S A A, wobei genau dann u S v gilt, wenn ein Ableitungsschritt (u, (l r), p, v) mit (l r) S existiert. Beispiel: Für S = {ab ba, a b} gilt aba S bba wegen (aba, (a b), 1, bba) aba S abb wegen (aba, (a b), 3, abb) aba S baa wegen (aba, (ab ba), 1, bba) aba S bbb 29
Ableitungen Eine Folge von Ableitungsschritten (u, (l 1 r 1 ), p 1, u 2 ), (u 2, (l 2 r 2 ), p 2, u 3 ),, (u n 1, (l n 1 r n 1, p n 1, v) im Wortersetzungssystem S heißt Ableitung von u nach v in S. Beispiel: S = {ab ba, a b}, u = aba Folge von Ableitungsschritten (aba, (ab ba), 1, baa), (baa, (a b), 3, bab), (bab, (a b), 2, bbb) aba ab ba baa a b bab a b bbb Länge der Ableitung = Anzahl der Ableitungsschritte In jedem System S existiert für jedes u A die leere Ableitung (der Länge 0) von u nach u. 30
Beispiele S 1 = { } mit u = und v = Was wird hier berechnet? Anderes Wortersetzungssystem mit derselben Wirkung? S 2 = {11 1, 00 1, 01 0, 10 0} und u = 1101001 Wirkung verschiedener Ableitungreihenfolgen? S 3 = {c aca, c bcb, c a, c b, c ε} und u = c Menge aller in S 3 ableitbaren Wörter, die kein c enthalten? 31
Ersetzungsrelation Jedes Wortersetzungssystem S (A A ) definiert die Ersetzungsrelation S (A A ), wobei genau dann u S v gilt, wenn eine Ableitung von u nach v existiert. Beispiel: S = {a aa}, für jedes n 1 gilt ba S b a a }{{} n wegen ba S baa S baaa S S b a a }{{} n b S b, aber für kein Wort w b gilt b S w ( S ist die reflexive transitive Hülle von S) 32
Münzenspiel Startkonfiguration : 6 Münzen auf einem Stapel Spielzug : zwei Münzen von einem Stapel nehmen und auf jeden Nachbarstapel je eine Münze legen Konfiguration:... 6... Welche Endkonfigurationen (keine Züge mehr möglich) sind von der Startkonfiguration erreichbar? zwei Spieler: Spielregeln: Beide Spieler ziehen abwechseld. Wer am Zug ist, wenn kein Zug mehr möglich ist, verliert. Kann der Spieler, der den ersten Zug macht, gewinnen? ein Spieler: Wieviele Züge sind mindestens / höchstens notwendig, um eine Endkonfiguration zu erreichen? 33
Münzenspiel als Wortersetzungssystem Symbole Höhe der Stapel A = {0,..., 6} Konfiguration Wort w A 11 Startkonfiguration Wort w = } 0 {{ 0 } 6 } 0 {{ 0 } 5 5 Spielzug Anwendung einer Regel aus dem Wortersetzungssystem S = {i(j + 2)k (i + 1)j(k + 1) i, j, k {0,..., 6}} Weiteres dazu von Vincent van Oostrom: Bowls and beans http://www.phil.uu.nl/~oostrom/publication/pdf/ bowls3.pdf 34
Sprachen aus Wortersetzungssystemen Jedes Paar (Wortersetzungssystem S, Anfangswort w) über einem Alphabet A definiert die Sprache L(S, w) = {v A w S v} (alle Wörter v, die von w durch eine Ableitung in S erreicht werden) B: S = {c aca, c bcb, c ε}, w = c L(S, w) = {w c w R } (Menge aller Palindrome über {a, b, c}, die höchstens an der mittleren Position ein c enthalten) Jedes Paar (Wortersetzungssystem S, Menge M von Wörtern) über einem Alphabet A definiert die Sprache L(S, M) = w L L(S, w) (alle Wörter v, die von irgendeimem w M durch eine Ableitung in S erreicht werden) 35
Ausdruckskraft von Wortersetzungssystemen Wortersetzungssysteme ermöglichen eine endliche Darstellung unendlicher Sprachen. (als Erzeugungsvorschrift für alle Wörter der Sprache) Beispiele: L ({a aa}, a) = {a... a }{{} n n 1} L ({2 020, 2 121}, 2) = {w2w R w {0, 1} } HTML-Quelltext für alle möglichen Tabellen können Berechnungen simulieren (Bestimmung von erreichbaren Wörtern ohne Nachfolger) Beispiel: ε L ({ }, ) 36
Fragen für Sprachen Welche Sprachen lassen sich durch Wortersetzungssysteme beschreiben? Ist ein gegebenes Wort w in der Sprache L enthalten? (Wortproblem) Enthält die Sprache L nur endlich viele Wörter? Gilt L 1 L 2? Gilt L = A? Alle Antworten sind für endliche Sprachen einfach, für unendliche Sprachen oft nicht. 37
Zusammenfassung Alphabet, Wort, Sprache Operationen auf Wörtern (Verkettung, Umkehrung) Relationen auf Wörtern (Präfix, Postfix, Infix) Palindrome Wortersetzungssystem Ableitungsschritt, Ableitung Ersetzungsrelation S, S von Systemen und Wörtern (oder Wortmengen) erzeugte Sprachen 38