Frohe Weihnachten! Einführung in die Weihnachtliche Informatik A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 1
Kathrinchens Wunschzettel Weihnachtswünsche Vor langer, langer Zeit, im Jahre 1989, als Kinder sich noch keinen Multimedia Computer von Aldi, sondern allerhöchstens einen Taschenrechner wünschten, geschah dem Weihnachtsmann etwas Seltsames. Von Kathrinchen bekam er einen Wunschzettel, der anders war, als alle Wunschzettel, die er bisher bekommen hatte. Da Kathrinchen die Adresse des Weihnachtsmannes nicht kannte, hatte sie ihre Wünsche in der ZEIT aufgeschrieben. Aber das war es nicht, was dem Weihnachtsmann Sorgen machte. Sein Problem war: Er verstand Kathrinchens Wünsche nicht! Der Weihnachtsmann wandte sich in seiner Not an Professor N. I. Claus, einen himmlischen Experten für Weihnachtliche Informatik. Der konnte ihm weiterhelfen. A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 2
Weihnachtswünsche Hier ist Kathrinchens Wunschzettel: Lieber Weihnachtsmann! Wenn ich zum Fest von Dir einen Tennisschläger bekomme, dann möchte ich kein Fernrohr haben. Und wenn Du mir ein paar tolle Jeans bringst, dann möchte ich keinen Taschenrechner bekommen. Doch bringst Du mir einen Puppenherd, dann, lieber Weihnachtsmann, wünsche ich mir dazu einen Tennisschläger und einen Dackel. Wenn Du mich nicht mit einem Taschenrechner beschenkst, dann möchte ich entweder einen Puppenherd oder einen Baukasten bekommen. Wenn Du mir aber keinen Baukasten auf den Gabentisch legst, dann bitte ich Dich, sofern ich eine Babypuppe bekommen sollte, ein Paar tolle Jeans dazuzulegen../. A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 3
Weihnachtswünsche Bringst Du mir eine Babypuppe, dann möchte ich bitte keinen Baukasten bekommen. Wenn Du mir entweder einen Tennisschläger oder einen Taschenrechner schenkst, (also genau eines von beiden), dann möchte ich, falls ich kein Fernrohr kriege, auch keinen Dackel geschenkt bekommen. Wenn Du mir meinen Wunsch, einen Taschenrechner zum Fest zu erhalten, erfüllst, dann möchte ich, sofern ich nicht ein paar tolle Jeans, wohl aber einen Dackel bekomme, keinen Baukasten zu Weihnachten haben. Und wenn Du mir keinen Puppenherd schenken magst, dann lege mir, bitte, bitte eine Babypuppe unter den Weihnachtsbaum. Mehr Wünsche habe ich nicht! Dein Kathrinchen A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 4
Erfüllbarkeit Die Erfüllbarkeit von Wünschen Professor Claus erkannte sofort, dass es sich im Fall von Kathrinchens Wunschzettel um eine Instanz des Erfüllbarkeitsproblems handelte. Er erschreckte den Weihnachtsmann mit folgender Definition Eine aussagenlogische Formel α(x 1... x n ) in n Variablen heißt erfüllbar, wenn es ein (x 1... x n ) Bool n mit α(x 1... x n ) = true gibt. Das Erfüllbarkeitsproblem (SAT) besteht darin, einen guten Algorithmus zu finden, der für jedes α = α(x 1... x n ) entscheidet, ob α erfüllbar ist.... und erklärte: Verstehen Sie, verehrter Weihnachtsmann, gefragt ist ein ω : n 0 A n Bool, das für jedes α A n dessen Erfüllbarkeit feststellt. A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 5
Erfüllbarkeit Der Weihnachtsmann verstand nicht. Er nickte aber sicherheitshalber mit gütiger Miene und fragte: Und was wünscht sich Kathrinchen nun? Um das zu ermitteln, verwandeln wir Kathrinchens Wunschzettel in eine aussagenlogische Formel. Der Professor notiert α(x 0,..., x 7 ) = (x 0 x 1 ) (x 2 x 3 ) (x 4 (x 0 x 5 )) ( x 3 (x 4 x 6 )) ( x 6 (x 7 x 2 )) (x 7 x 6 ) ((x 0 x 3 ) ( x 1 x 5 )) (x 0 ( x 2 x 5 x 6 )) ( x 4 x 7 ) mit x 0 = Tennisschläger, x 1 = Fernrohr, x 2 = tolle Jeans, x 3 = Taschenrechner, x 4 = Puppenherd, x 5 = Dackel, x 6 = Baukasten, x 7 = Babypuppe. Also, ganz einfach, jetzt müssen wir nur noch die 28 möglichen Kombinationen für die Werte der x i durchprobieren. A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 6
Erfüllbarkeit Der Professor schreibt die Formel als Java Methode: // true, wenn alle Wuensche erfuellt sind static boolean wunschzettel( boolean tennis, boolean fernrohr, boolean jeans, boolean rechner, boolean puppenherd, boolean dackel, boolean baukasten, boolean babypuppe) { return wenndann( tennis,!fernrohr ) && wenndann( jeans,!rechner ) && wenndann( puppenherd, tennis & dackel ) && wenndann(!rechner, puppenherd baukasten ) && wenndann(!baukasten, wenndann( babypuppe, jeans ) ) && wenndann( babypuppe,!baukasten ) && wenndann( tennis ^ rechner, wenndann(!fernrohr,!dackel ) ) && wenndann( tennis, wenndann(!jeans & dackel,!baukasten ) ) && wenndann(!puppenherd, babypuppe ); } // x => y static boolean wenndann( boolean x, boolean y ) { return (!x) y; } A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 7
Erfüllbarkeit Er verpackt das Ganze in eine Java Klasse namens Kathrinchen. Die hat noch zwei weitere Methoden: In der einen wird in einer achtfach (!) geschachtelten for Schleife für jede mögliche Kombination von boolean Werten der Parameter geprüft, ob der Wunschzettel dafür erfüllt ist. Die zweite Methode dient der Ausgabe. Der Professor führt dem Weihnachtsmann sein Programm vor, und jetzt versteht dieser alles! >> java Kathrinchen Kathrinchen wünscht sich: Tennisschläger Taschenrechner Puppenherd Dackel Wie schön, meint der Weihnachtsmann, dass wir Kathrinchens Wünsche nun kennen und dass ich sie erfüllen kann! A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 8
Unerfüllbare Wünsche? Alle Wünsche kann man nicht erfüllen... Der Professor für Weihnachtliche Informatik weiß: Er hat Glück gehabt (und natürlich Kathrinchen und der Weihnachtsmann auch). Das Problem SAT, von dem er eben eine Instanz gelöst hat, ist nämlich ein schwieriges Problem. Sogar ein extrem schwieriges. Sollte einmal ein Wunschzettel eintreffen, der nicht von 8, sondern vielleicht von 150 Wünschen handelt (vielleicht von einer Schulklasse?), dann sieht es mit dem Lösen zappenduster aus! Dann müsste der Computer mit der eben benutzten Methode sage und schreibe 2 150 = 1427247692705959881058285969449495136382746624 mögliche Zusammenstellungen von Geschenken auf ihre Wunschzettelkonformität hin durchprobieren. Das geht nur auf sehr speziellen Rechnern... A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 9
P, NP und der Weihnachtsmann Nikolaus-polynomielle Probleme Definition Die Menge aller auf einem irdischen Computer (mit überirdisch viel Speicherplatz) in polynomieller Laufzeit lösbaren Probleme nennt man P. Die Menge aller auf einem Nikolaus Computer in polynomieller Laufzeit lösbaren Probleme nennt man NP. Ein Nikolaus Computer ist in der Lage, immer dann, wenn er eine Entscheidung treffen muss, die richtige Entscheidung zu erraten. Man kann beweisen: Ein Problem liegt genau dann in NP, wenn man jede vermutete Lösung auf einem irdischen Computer in polynomieller Zeit verifizieren kann. A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 10
P, NP und der Weihnachtsmann Probleme α, β NP kann man nach Schwierigkeit (teil )ordnen: Wenn man mit einem Algorithmus für α auch das Problem β unter höchstens polynomiellem Zusatzaufwand lösen kann, dann gilt β poly α. Die Probleme α NP, die bzgl. dieser Ordnung maximal schwer sind, bilden die Menge NPC (Nikolaus Polynomielle Christkind Probleme). Satz (von Stephen A. Cook, 1971) Das Problem SAT liegt in NPC. Aber nur das Christkind weiß, ob SAT wirklich ein schwieriges Problem ist! Allen anderen im Himmel und auf Erden ist nämlich unbekannt, ob P NP gilt. Vielleicht kennt ja das Christkind einen polynomiellen Algorithmus für das Erfüllbarkeitsproblem... A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 11
... und ein gutes Neues Jahr! Der Weihnachtsmann und die Mitarbeiter der Vorlesung wünschen Ihnen allen Frohe Weihnachten! A. Clausing, Einführung in die Weihnachtliche Informatik, 23. 12. 2004 EWI 12