Was Computer nicht berechnen können Hochschulinformationstag 13 Juni 2003 Christoph Kreitz Theoretische Informatik, Raum 119, Telephon 3064 kreitz@csuni-potsdamde http://wwwcsuni-potsdamde/ti
Computer haben unser Leben revolutioniert Integraler Bestandteil unseres Alltags Steuerungsmodule in Alltagsprodukten, e-commerce, Telephonnetze, Automobilkonstruktion, Luftfahrtkontrolle, Unglaubliche Leistungssteigerungen Verdopplung der Leistung alle 18 Monate bei sinkenden Kosten Billige Videokarten leistungsfähiger als teure Großrechner vor 20 Jahren Bisher kein Ende abzusehen Erstaunliche Fähigkeiten Schach auf Weltmeisterniveau, Autopilot in Flugzeugen In vielen Aspekten besser als der Mensch Zugänglich für Laien Vor 30 Jahren gab es nur sehr wenige Computerexperten Was Computer nicht berechnen können 1 13 Juni 2003
Informatik hat sehr viel erreicht Mathematische Analyse führt zu großen Erfolgen Wissenschaft der Berechnung (Theoretische Informatik) Grundsätzliche Methoden: was ist mit Symbolverarbeitung erreichbar? Wissenschaft der Rechenmaschine (Technische Informatik) Welche Mittel gibt es, um schnelle und große Computer zu bauen? Wissenschaft der Programmierung (Praktische Informatik) Welche Methoden/Strukturen unterstützen Entwicklung guter Software? Wissenschaft des Problemlösens (Angewandte Informatik) Welche Standardverfahren gibt es für bestimmte Anwendungen? Wissenschaft des Einsatzes von Informationstechnik (Humanwissenschaftliche Informatik) Auswirkungen, rechtliche Aspekte, Didaktik, Alles wird schneller, besser und einfacher Was Computer nicht berechnen können 2 13 Juni 2003
Es gibt genug offene Fragen Sind Korrekheitsgarantien möglich? Kein Systemabsturz, kein Aufhängen, keine falsche Resultate Wie effizient kann Software sein? Wieviel RAM, Plattenplatz, Rechenzeit wird benötigt? Skalierbarkeit: wie groß darf das Problem werden? Wie einfach kann Interaktion gemacht werden? Welche Freiheiten sind in der Formulierung von Programmen möglich? Wie natürlich darf die Sprache sein? Gibt es Grenzen? Können alle Aufgaben irgendwann von Computern übernommen werden? Machen Hardwaresteigerungen jedes Programm schnell genug? Kann eine Programmiersprache natürlich sein? Was Computer nicht berechnen können 3 13 Juni 2003
Prinzipielle Grenzen des Berechenbaren Gibt es Problemstellungen die prinzipiell unlösbar sind? Terminierung von Programmen Hält ein gegebenes Programm bei einer bestimmten Eingabe überhaupt an? Korrektheit von Programmen Löst ein gegebenes Programm eine bestimmte Aufgabe? Äquivalenz von Programmen Berechnen zwei Programme dasselbe? Optimalität von Programmen Kann man ein Programm in äquivalentes optimales Programm umwandeln? (optimal bzgl Programmlänge, Ausführungszeit, Platzbedarf, ) Keine dieser Fragestellungen kann universell mit einem Computerprogramm gelöst werden Was Computer nicht berechnen können 4 13 Juni 2003
Grundannahmen über Berechnungen Programme und Daten sind als Zahlen codierbar Programme und Daten werden als Bitfolgen dargestellt Bitfolgen für Daten können als Zahlen interpretiert werden Bitfolgen, die Programme darstellen, können durchnumeriert werden Computer sind universelle Maschinen Bei Eingabe beliebiger Programme und Daten berechnen sie das Ergebnis p i (j): Ergebnis der Anwendung von Programm i auf Zahl j Man kann Programme beliebig zusammensetzen Das Ergebnis ist ein neues Programm Was Computer nicht berechnen können 5 13 Juni 2003
Terminierung von Programmen kann nicht getestet werden Annahme: es gibt ein Programm zum Test auf Terminierung Term(i,j)=1 falls p i (j) hält (sonst 0) Konstruiere ein neues Programm Unsinn wie folgt: Unsinn(i)=0 falls Term(i,i)=0, ansonsten hält Unsinn nicht an 0 1 2 3 4 5 6 p 0 p 0 (0) p 0 (1) p 0 (2) p 0 (3) p 0 (4) p 0 (5) p 0 (6) p 1 p 1 (0) p 1 (1) p 1 (2) p 1 (3) p 1 (4) p 1 (5) p 1 (6) p 2 p 2 (0) p 2 (1) p 2 (2) p 2 (3) p 2 (4) p 2 (5) p 2 (6) p 3 p 3 (0) p 3 (1) p 3 (2) p 3 (3) p 3 (4) p 3 (5) p 3 (6) p 3 p 3 (0) p 3 (1) p 3 (2) p 3 (3) p 3 (4) p 3 (5) p 4 (6) p 5 p 5 (0) p 5 (1) p 5 (2) p 5 (3) p 5 (4) p 5 (5) p 5 (6) Unsinn ist ein Programm, also hat es eine Nummer k (p k =Unsinn) Was macht p k auf seiner eigenen Nummer? Wenn p k (k) hält, dann Term(k,k)=1, also hält Unsinn(k) nicht??? Wenn p k (k) nicht hält, dann Term(k,k)=0, also hält Unsinn(k) an??? Was Computer nicht berechnen können 6 13 Juni 2003
Praktische Grenzen des Berechenbaren Was kann nicht mit vertretbarem Aufwand gelöst werden? Komplexität: Analyse benötigter Resourcen Zeitbedarf, Speicherbedarf, Plattenzugriffe, Netzzugriffe, Meßgröße unabhängig von Hardware, Programmiersprache, Compiler, Wachstumsfunktion in Abhängigkeit von der Größe der Eingabe Asymptotisches Verhalten ist interessant Komplexität großer Probleme Grobe Abschätzung reicht: Konstanten werden unbedeutend Gibt es Probleme, die nicht effizient lösbar sind? Was Computer nicht berechnen können 7 13 Juni 2003
Komplexität Typischer Probleme Sortieren von Listen der Länge n Suchen: log 2 n bei sortierter Liste, n sonst n log 2 n Matrixmultiplikation n 3 Multiprozessor-Scheduling Verteile n Prozesse derart auf eine Menge von Prozessoren, daß die Ressourcen der Rechner optimal genutzt werden Travelling Salesman (Message Routing) Minimiere Kosten einer Rundreise zwischen n verschiedenen Städten Binpacking Minimiere Anzahl von Verpackungsbehältern, um n verschieden große Gegenstände zu transportieren Primzahltests für Zahlen mit n bits Gut für offene kryptographische Systeme (wähle n > 200) Exponentielle Laufzeit macht das Problem praktisch unlösbar 2 n 2 n 2 n 2 n Was Computer nicht berechnen können 8 13 Juni 2003
Wie schnell wächst die Rechenzeit mit der Größe der Eingabe? Rechenzeiten auf 33 Ghz Prozessor Größe n 10 20 30 40 50 60 1000 1000000 Wachstum log 2 n 1ns 2ns 3ns 10ns 100ns n 3ns 6ns 9ns 12ns 15ns 18ns 300ns 300µs n 2 30ns 120ns 270ns 480ns 750ns 11µs 300µs 300s n 3 300ns 24µs 81µs 192µs 375µs 64µs 300ms 95y 2 n 300ns 300µs 300ms 300s 833h 95y 3 n 178µs 11s 173h 116y 2500000000y Wieviel mehr kann man in der gleichen Zeit berechnen, wenn Computer um den Faktor 1000 schneller werden? log 2 n n n 2 n 3 2 n 3 n Problemsteigerung 10 300 -fach 1000-fach 31-fach 10-fach plus 10 plus 6 Was Computer nicht berechnen können 9 13 Juni 2003
Grenzen des Formulierbaren Was kann ein Computer fehlerfrei erkennen? Compilieren sollte schneller sein als Ausführung Scanner: Erkennungssysteme für lexikalische Einheiten in Programmen (Zahlen, Bezeichner) können keine korrekten Klammerausdrücke erkennen linear Parser: quadratisch Effiziente Erkennungssysteme für Syntax-/Strukturanalyse im Programmtext können nur Strukturen analysieren, die nicht von ihrem Kontext abhängen Rück- und Querbezüge sind kontextabhängige Eigenschaften und müssen einzeln behandelt werden exponentiell Was Computer nicht berechnen können 10 13 Juni 2003
Grenzüberschreitung Grenzen sind Herausforderung zur Suche nach neuen Wegen Künstliche Intelligenz Heuristische Lösung unentscheidbarer Probleme Theorembeweisen, Programmverifikation und -Synthese (unvollständig) Approximierende und probabilistische Algorithmen Sehr effiziente, fast optimale Näherungslösungen ZB Primzahltest (logarithmisch statt linear) Selbstorganisation statt vorformulierter Lösungen Lernverfahren, Neuronale Netze, genetische Algorithmen Liefert tieferes Verständnis der Materie Was Computer nicht berechnen können 11 13 Juni 2003