Theoretische Informatik 1 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung TU Graz SS 2007
Übersicht 1 Allgemein Teilgebiete der Informatik ohne Theoretische Grundlagen 2 Fragen an die Theoretische Informatik Probleme intuitive Berechenbarkeit Algorithmusbegriff formalisiert 3 Registermaschine: Konfigurationen RM-Berechnenbarkeit
Teilgebiete der Informatik ohne Theoretische Grundlagen Komplexitätstheorie Sprachen & Semantik Datenstrukturen Programmiersprachen Logik & Berechenbarkeit KI & Maschinelles Lernen Theoretische Informatik Automatentheorie Informatik Algorithmen Praktische Informatik Software- Technik Betriebssysteme (integr.) Schaltkreise Technische Informatik Robotik Angewandte Informatik Databases Automatisierungstechnik Netzwerke Protokolle Rechner- Architektur Medizintechnik Geoinformatik WWW & Internet
Teilgebiete der Informatik ohne Theoretische Grundlagen Theoretische Informatik 1 Inhalte Intuitive und formale Berechenbarkeit Registermaschinen (RAM) und Turingmaschinen Zeitkomplexität P, NP, NP-vollständig Probabilistische Algorithmen, BPP,ZPP Maschinelles Lernen: probably approximative correct (PAC) learning
Teilgebiete der Informatik ohne Theoretische Grundlagen Infos zur LV Homepage http://www.igi.tugraz.at/lehre/ Newsgroup news://news.tu-graz.ac.at:119/tu-graz.lv.ti1 Bücher: M. Sipser,Introduction to the Theory of Computation. PWS Publishing, Boston, 1997 A.Asteroth, Ch. Baier, Theoretische Informatiker, Pearson Studium, München, 2003 Tom M. Mitchell, Machine Learning, McGraw-Hill, 1997 Internet: Wikipedia, Google. z.b. Quantenalgorithmen
Teilgebiete der Informatik ohne Theoretische Grundlagen Softwaretechniker ohne Theoretische Informatik Nach langer Tüftellei hast Du ein Programm für das Problem XY geschrieben. Der erste Test mit Testdaten (Länge 50bit) hat funktioniert. Der Chef kommt und verlangt eine Demonstration auf realitischen Daten, also ca.10kbit. Das Programm rechnet, und rechnet, und rechnet...und Du stehst ratlos daneben. Nach ein Stunde Rechenzeit ohne Ergebnis beschließt der Chef, das Problem einem Mitarbeiter zu übertragen, der sich in Informatik auskennt. Und DU...?
Fragen an die Theoretische Informatik Probleme intuitive Berechenbarkeit Algorithmusbegriff formalisiert Fragen an die Theoretische Informatik Was sind die grundsätzlichen Fähigkeiten eines Computers? Wo liegen die Grenzen von Computern? Etwas konkreter: Was ist ein Berechnungsverfahren? Gibt es zum Probelm XY einen Berechnungsverfahren? Was ist überhaupt ein Problem? Warum sind Probleme verschieden schwer zu lösen? Ist das lösbare Problem XY auch effizient lösbar? Was heißt effizient?
Fragen an die Theoretische Informatik Probleme intuitive Berechenbarkeit Algorithmusbegriff formalisiert Verschiedene Probleme Erstelle ein sortiertes Telefonbuch! Erstelle einen Stundenplan für jede Schule, sodaß sowohl für Lehrer wie Schüler keine Lücken enstehen! Optimiere die Produktionseinteilung vom Mercedes! Optimiere den Auslieferweg eines Zustelldienstes! Wie wird das Wetter morgen? Hat die Gleichung f (x 1,..., x n ) = 0 eine Lösung? Der Computer reagiert nicht. Hat es Sinn zu warten?
Fragen an die Theoretische Informatik Probleme intuitive Berechenbarkeit Algorithmusbegriff formalisiert Intuitive Berechenbarkeit Jeder von uns hat eine gewisse Vorstellung davon, was prinzipiell berechenbare Probleme sind, und ob sie eher leicht sind oder eher schwer bzw. mühsam. Händische Addition ist leicht Matrizenmultiplikation ist deutlich mehr Arbeit. Stundenpläne werden händisch durch probieren und mit viel Erfahrung erstellt, also sehr mühsam. Mathematische Beweise sind i.a. nicht berechenbar 1 Es gibt auch Probleme, bei denen wir (noch) nicht wissen, ob sie durch ein Berechnungsverfahren gelöst werden können. 1 Sonst hätte der Beweis von Fermats letzem Satz n 3 : a, b, c N : a n + b n = c n wohl nicht fast 400 Jahre gebraucht.
Fragen an die Theoretische Informatik Probleme intuitive Berechenbarkeit Algorithmusbegriff formalisiert Intuitive Berechenbarkeit, algorithmische Lösbarbkeit 1 1 Grafik aus: Asteroth, Baier: Theoretische Informatik, Pearson Studium
Begriff Algorithmus Fragen an die Theoretische Informatik Probleme intuitive Berechenbarkeit Algorithmusbegriff formalisiert Das Zehnte Hilbert sche Problem 2 : Eine diophantische (=ganzzahlige) 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 die Gleichung in ganzen Zahlen lösbar ist. Hilbert hat also explizit und in definierter abstrakter Form nach einem Entscheidungsalgorithmus gefragt. Tatsächlich konnte 1970 bewiesen werden, daß es keinen solchen Algorithmus geben kann. 2 David Hilbert präsentiert 1900 in Paris die 23 offenen Probleme der Mathematik
Fragen an die Theoretische Informatik Probleme intuitive Berechenbarkeit Algorithmusbegriff formalisiert Intuitive Berechenbarkeit formalisiert Verfahren, Operationen, endliche Anzahl endliche, numerierte Anweisungsliste (Programm) bedingte Verzweigung (JZERO), Sprung(GOTO) Rechenoperationen: + (Zwischen-)Ergebnisse: c(0), c(1),..., c( ) Konstanten #k, direkte Adressierung c(k) indirekte Adressierung c(c(k)) definierter Haltebefehl: END = Registermaschine (RAM)
Registermaschine: Konfigurationen RM-Berechnenbarkeit Schema einer Registermaschine (RAM) 1 Graphik aus: Asteroth, Baier: Theoretische Informatik, Pearson Studium
Registermaschine: Konfigurationen RM-Berechnenbarkeit LOAD x c(0) := v(x) STORE k c(k) := c(0) STORE k if c(k) 1 then c(c(k)) := c(0) else b := ADD x c(0) := c(0) + v(x) SUB x c(0) := max {0, c(0) v(x)} MULT x c(0) := c(0) v(x) DIV x if v(x) > 0 then c(0) := c(0) v(x) else b := GOTO k b := k JZERO k if c(0) = 0 then b := k END b := danach: b := b + 1 (außer nach Verzweigungen) Argumentwert x v(x) #k k k c(k) k c(c(k)) i N 0 : c(i) N c :N 0 N 0 :i c(i) b = HALT
Registermaschine: Konfigurationen RM-Berechnenbarkeit Ein- und Ausgabe Die Eingabe für eine RM R soll eine Liste von k ganzen Zahlen n 1,..., n k N 0 sein. c(j) := n j Alle anderen Register werden vor dem Start auf 0 gesetzt Falls R terminiert, erwarten wir das Ergebnis in einem bestimmten Register, z.b. im Accumulator c(0).
Registermaschine: Konfigurationen RM-Berechnenbarkeit Ein- und Ausgabe Definition (initiale Registerbelegung) Eine Funktion c : N 0 N 0 heißt initiale Registerbelegung mit n 1,..., n k einer RM und wird als c[n 1,..., n k ] angeschrieben, wenn { 0 : j = 0 j > k c(j) = n j : 1 j k
Registermaschine: Konfigurationen RM-Berechnenbarkeit Konfigurationen Definition (Konfiguration) Die Konfiguration einer RM ist ein Tupel κ = (b, c), wobei b N { } der aktuelle Befehlszähler ist und c N 0 N 0 den Speicherinhalt darstellt. Der Inhalt c Speichers umfasst den Akkumulator c(0) sowie die Registerzellen c(1),..., c( ) Der Zusammenhang der aufeinanderfolgenden Konfigurationen bei der schrittweisen Ausführung der RM R wird durch die sog. Konfigurationsrelation R beschrieben.
Registermaschine: Konfigurationen RM-Berechnenbarkeit Konfigurationsrelation Definition (Konfigurationsrelation R ) Sei κ = (b, c) und κ = (b, c ), dann ist κ R κ, genau dann, wenn b und R von der Konfiguration κ durch Ausführung der Programmzeile b in die Konfiguration κ übergeht. Eine terminierte Konfiguration (, c) hat keine Nachfolgekonfiguration. Definition ( n R, R ) κ 0 R κ genau dann wenn κ = κ. κ n+1 R κ gdw κ N N N 0 0 : κ n R κ κ R κ R ist die reflexive, transitive Hülle von R.
Registermaschine: Konfigurationen RM-Berechnenbarkeit Definition Die durch R berechnete partielle Funktion f R : N k N ist gegeben durch { : c N N0 0 : κ f R (n 1,..., n k ) = 0 R (, c) N c(0) : c N 0 0 : κ 0 R (, c) wobei κ 0 = (1, c[n 1,..., n k ]) die Startkonfiguration darstellt.
Registermaschine: Konfigurationen RM-Berechnenbarkeit RM-Berechenbarkeit Definition Eine partielle Funktion f : N k N wird RM-berechenbar genannt, wenn es eine Registermaschine R gibt, sodass f = f R.
Registermaschine: Konfigurationen RM-Berechnenbarkeit Beispiel: Berechne n m Startkonfiguration: q 0 = (1, c[n, m]), n, m N 0 Gesucht: Programm für R, sodaß f R (n, m) =!! n m Pseudocode für n m z = 1; while m > 0 z := z n; m := m 1; wend 1 LOAD #1 2 STORE 3 3 LOAD 2 4 JZERO 11 5 SUB #1 6 STORE 2 7 LOAD 3 8 MULT 1 9 STORE 3 10 GOTO 3 11 LOAD 3 12 END
Registermaschine: Konfigurationen RM-Berechnenbarkeit Problemcodierung Eingabewerte x 1,..., x n N Codierungen gesucht für Ganze Zahlen n i = x, n i+1 = sign(x) Rationale Zahlen Vorkommateil, Nachkommateil, Vorzeichen Zähler, Nenner, Vorzeichen Graphen G(V, E) Anzahl Knoten, quardatische Adjazenzmatrix aufzählen Adjazenzmatrix zeilenweise binär verschlüsseln Programm einer RM zeilenweise, Befehlscode + Argument 20