Theoretische Informatik Theoretische Informatik Wintersemester 2004/05 Steffen Lange 1 Theoretische Informatik Einordnung/Motivation Theoretische Informatik Logik Berechnungstheorie formale Sprachen/Automatentheorie Komplexitätstheorie 2 Theoretische Informatik Einordnung/Motivation Berechnungstheorie Welcherart Probleme sind überhaupt mit Hilfe eines Computers lösbar? Von welchen Problemen sollte man die Finger lassen? ... Geben Sie einem Computer die richtige Software und er wird tun, was immer Sie wünschen. Die Maschine selbst mag ihre Grenzen haben, doch für die Möglichkeiten von Software gibt es keine Grenzen. Time-Magazine, 1984 3 Theoretische Informatik Einordnung/Motivation Vortrag von David Hilbert auf dem Internationalen Mathematikerkongreß 1900 in Paris Problem Nr. 10: Eine diophantische Gleichung mit irgendwelchen Unbekannten und mit ganzen rationalen Zahlenkoeffizienten sei vorgelegt: “Man soll ein Verfahren angeben, nach welchem sich mittels einer endlichen Anzahl von Operationen entscheiden läßt, ob diese Gleichung in den ganzen Zahlen lösbar ist.” 4 Theoretische Informatik Einordnung/Motivation Es gibt keinen Algorithmus, der folgendes leistet: der Algorithmus akzeptiert als Eingabe eine Beschreibung einer diophantischen Gleichung mit irgendwelchen Unbekannten und mit ganzen rationalen Zahlenkoeffizienten falls diese Gleichung eine Lösung in den ganzen Zahlen hat, so liefert der Algorithmus das Resultat „ja“ andernfalls liefert der Algorithmus das Resultat „nein“ 5 Theoretische Informatik Einordnung/Motivation gegeben: Beschreibung von endlich vielen Fliesentypen (Quadrate unterteilt in vier farbige Dreiecke) beliebig viele Fliesen jedes Typs Frage: Kann man die unendliche Ebene mit Fliesen dieser Typen kacheln? Randbedingung Fliesen haben eine feste Orientierung Farben aneinanderstoßender Fliesen müssen übereinstimmen 6 Theoretische Informatik Einordnung/Motivation Fliesentypen, mit denen es klappt 7 Theoretische Informatik Einordnung/Motivation Fliesentypen, mit denen es nicht klappt 8 Theoretische Informatik Einordnung/Motivation Es gibt keinen Algorithmus, der folgendes leistet: der Algorithmus akzeptiert als Eingabe eine Beschreibung von endlich vielen Fliesentypen falls sich die unendliche Fläche mit Fliesen dieser Typen kacheln läßt, so liefert der Algorithmus das Resultat „ja“ andernfalls liefert der Algorithmus das Resultat „nein“ 9 Theoretische Informatik Einordnung/Motivation Collatz Problem: Wird für jedes n ≥1 die Zahl 1 ausgegeben? int n; cin >> n; while( n!= 1 ) if ( n%2==0 ) n = n/2; else n = 3n+1; cout << n; 10 Theoretische Informatik Einordnung/Motivation Collatz Problem: Wird für jedes n ≥1 die Zahl 1 ausgegeben? int n; cin >> n; while( n!= 1 ) if ( n%2==0 ) n = n/2; else n = 3n+1; cout << n; Bisher ist keine Antwort auf diese Frage bekannt!!! 11 Theoretische Informatik Einordnung/Motivation Komplexitätstheorie ... Einschränkung auf lösbare Probleme Anhand welcher Kriterien beurteilt man die Güte von Algorithmen zur Lösung eines Problems? Wie gut können Algorithmen zur Lösung eines Problems sein? Kann man einem Problem ansehen, ob es einen effizienten Algorithmus zu seiner Lösung gibt? ... 12 Theoretische Informatik Einordnung/Motivation Problem 1 Input: Eine Straßenkarte mit Enfernungsangaben an Straßenabschnitten, zwei Städte A und B auf der Karte. Output: Eine “Reiseroute” minimaler Länge, die von A nach B geht und die durch jede Stadt genau einmal führt. Problem 2 Input: Eine Straßenkarte mit Enfernungsangaben an Straßenabschnitten, zwei Städte A und B auf der Karte. Output: Eine “Reiseroute” minimaler Länge, die von A nach B geht. 13 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 14 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 15 Problem 1 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 16 Problem 2 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 weiß: ein kürzester Weg von A zu diesem Knoten wurde bereits gefunden 17 Problem 2 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 weiß: ein kürzester Weg von A zu diesem Knoten wurde bereits gefunden 18 Problem 2 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 weiß: ein kürzester Weg von A zu diesem Knoten wurde bereits gefunden 19 Problem 2 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 weiß: ein kürzester Weg von A zu diesem Knoten wurde bereits gefunden 20 Problem 2 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 weiß: ein kürzester Weg von A zu diesem Knoten wurde bereits gefunden 21 Problem 2 Theoretische Informatik Anstelle einer Motivation … 6 a 3 b 4 10 A 9 10 4 c 7 5 9 B 4 2 7 e d 4 weiß: ein kürzester Weg von A zu diesem Knoten wurde bereits gefunden 22 Problem 2 Theoretische Informatik Anstelle einer Motivation … Problem 2 Ein kürzester Weg von A nach B kann in O(n2) vielen Schritten gefunden werden. Problem 1 Ein Algorithmus, der auf der Idee basiert, mittels “Durchprobieren” zum Ziel zu kommen, benötigt O(n!) (* = O(2poly(n)) *) viele Schritte. Ein besserer Algorithmus ist bisher nicht bekannt. n = Anzahl der Städte 23 Theoretische Informatik Anstelle einer Motivation … Arbeitszeit eines Rechners mit 106 Op/sec n = Anzahl der Städte 24 Theoretische Informatik Anstelle einer Motivation … Problemgröße, die in einer Stunde bewältigt werden kann n = Anzahl der Städte 25 Theoretische Informatik Einordnung/Motivation formale Sprachen/Automatentheorie „Kommunikation“ Mensch <-> Maschine höhere Programmiersprache Maschinensprache Aufgabe: Transformation eines Programms in einer höheren Programmiersprache in ein „äquivalentes“ Programm in Maschinensprache 26 Theoretische Informatik Einordnung/Motivation Quellprogramm lexikalische Analyse Folge von Tokens syntaktische Analyse Ableitungsbaum semantische Analyse und Codegenerierung Zielprogramm Codeoptimierung optimiertes Zielprogramm 27 Theoretische Informatik Einordnung/Motivation präzise Beschreibung der zur Verfügung stehenden Ausdrucksmittel Was kann benutzen werden? Was muß übersetzt (akzeptiert) werden? 28 Theoretische Informatik Einordnung/Motivation Beispiel: als zulässige Bezeichner kommen Zeichenketten in Frage, die nur aus Nullen und Einsen bestehen und mit drei Einsen enden Aufgabe: Maschine soll erkennen, ob ein verwendeter Bezeichner zulässig ist Fall 1: nur endlich viele Bezeichner Æ Tabelle Fall 2: unendlich viele Bezeichner Æ Algorithmus kommt eigentlich nicht vor !!! 29 Theoretische Informatik Einordnung/Motivation Beispiel: als zulässige Bezeichner kommen Zeichenketten in Frage, die nur aus Nullen und Einsen bestehen und mit drei Einsen enden Aufgabe: Maschine soll erkennen, ob ein verwendeter Bezeichner zulässig ist Fall 1: nur endlich viele Bezeichner Æ Tabelle nicht immer praktikabel !!! Fall 2: unendlich viele Bezeichner Æ Algorithmus 30 Theoretische Informatik Gliederung der Vorlesung 0. Grundbegriffe 1. Formale Sprachen/Automatentheorie 1.1. Grammatiken 1.2. Reguläre Sprachen 1.3. Kontext-freie Sprachen 2. Berechnungstheorie 2.1. Entscheidungsprobleme 2.2. Turing-Maschinen (TM) 2.3. Die Churchsche These 2.4. Unentscheidbarkeit 3. Komplexitätstheorie 3.1. Nicht-deterministische TM 3.1 Komplexitätsmaße 3.2. Das P=NP? Problem 31 Theoretische Informatik Organisatorisches • Vorlesung • wöchentlich (zwei- bzw. vierstündig) • Folien im Netz http://www.fbi.fh-darmstadt.de/~slange • Übung • 14-tägig (zweistündig; erste Übungen in der nächsten Woche; Übungsgruppeneinteilung siehe oben) • Sprechstunde • wöchentlich (Dienstag 13:00 – 14:00 Uhr, D15, 207a) 32 Theoretische Informatik Literatur • • • • J.E. Hopcroft, J.E. Ullmann, Einführung in die Automatentheorie, formale Sprachen und Komplexitätstheorie, Addison-Wesley, Bonn, 1990. U. Schöning, Theoretische Informatik – kurz gefaßt, Spektrum Akademischer Verlag, Heidelberg, 1997. Alexander Asteroth, Christel Baier, Theoretische Informatik, Perason Studium, München, 2002 Ulrich Hedtstück, Einführung in die Theoretische Informatik, Oldenburg Verlag, München, 2000 33