Informatiker und Wölfe
Die Situation
Man stelle sich einmal einen Informatiker im tiefsten Winter in einem dunklen Wald von hungrigen Wölfen
gejagt vor. Hier ist der Informatiker geradezu in seinem Element. Er steht nämlich vor einem Problem,
und solche zu lösen hat er ja während seines Studiums sehr ausführlich und mühsam
erlernt. Das Problem ist zwar bereits gegeben, aber irgendwann einmal hat er vor langer, langer Zeit gelernt,
dass ein Problem erst spezifiziert sein will.
Er beginnt also:
Gegeben: Landschaft mit 1 Informatiker und n Wölfen, n aus NAT
Gesucht: Landschaft mit 1 Informatiker und keinen Wölfen
Lösungsweg: Wölfe mit einem Prügel verjagen.
Sicher kann sich unser Informatiker denken, dass das Problem nicht einfach zu lösen ist. Also beginnt
er, es in Teilprobleme zu zerlegen. Etwa in n Teilprobleme:
für alle i aus (1..n): den Wolf i verjagen.
Nun ist unser Informatiker überglücklich. Er benutzt eine simple FOR-NEXT-Schleife, in der er nacheinander die n Teilprobleme löst und somit seine Teillösungen sogar schon zu einer Gesamtlösung zusammengesetzt hat. Dass der Algorithmus korrekt ist und terminiert, hat unser Informatiker schnell bewiesen. Was nun weiter geschieht, ist typisch, wenngleich es zwei Möglichkeiten gibt.
Fall 1
Wir haben einen Durchschnittsinformatiker vor uns.
In Ermangelung eines Rechners benutzt er sich selbst als Maschine und lässt das Programm auf sich
ablaufen. Er beginnt damit, den Wolf Nr. 1 zu verjagen, kommt zu Wolf Nr. 2, doch spätestens jetzt hat
ihn ein Wolf, der laut Algorithmus noch gar nicht an der Reihe ist, ins Bein gebissen, worauf er in Panik
gerät, das ganze schöne formale Denken vergisst und einfach instinktiv die Flucht ergreift.
Später dann, wenn er wieder in Sicherheit ist und wieder klar denken kann, bricht eine ganze Welt in ihm
zusammen. Dies kommt davon, wenn man sich als Durchschnittsinformatiker mit praktischen Problemen
beschäftigt.
Fall 2
Ganz anders, wenn wir einen hochbegabten, mathematisch besonders geschulten Informatiker aus Hamburg in die Wildnis schicken, der schon nach dem 3. Semester das Vordiplom und nach dem 7. das Hauptdiplom gemacht hat.
Er sieht zwar n Wölfe, zweifelt jedoch daran, dass die Zahl der Wölfe ohne sein Zutun konstant bleiben wird. Es könnten ja während des Verjagens eine noch nicht verjagte Wölfin Junge werfen. Um den Aufwand des Wölfeverjagens unter diesem Aspekt abzuschätzen, muss zuerst eine Differentialgleichung gelöst werden, ganz abgesehen davon, dass das Problem neu spezifiziert werden muss. Mit Erschrecken stellt unser Informatiker fest, dass ab einem bestimmten n der Algorithmus nicht mehr terminiert (es werden in gleicher Zeit mehr Junge geworfen, als er Wölfe verjagen kann).
Er wird also eine neue Spezifikation vornehmen.
Gegeben: Ort a mit n Wölfen und 1 Informatiker, ein Ort b;
Gesucht: Ort a mit n+k Wölfen (k ist die Anzahl der zwischenzeitlich geborenen Wölfe), ein Ort b ohne Wölfe mit mindestens einem Informatiker.
Lösungsweg: Flucht von Ort a nach Ort b.
Nach Ausführung seines Algorithmus trifft er dann auf unseren Durchschnittsinformatiker, der wahrscheinlich auf eine Baumspitze geflüchtet ist, wohin er sich eilends auch begibt und wartet, bis die Wölfe wieder abziehen. Sind die Wölfe erst weg, so werden sich beide Informatiker schnell darüber einig, dass man den Baum am besten per rekursivem Abstieg herunterkommt. Da sie lange auf dem Baum sassen, waren sie stark durchfroren. Doch zum Glück kam ihnen eine alte Algorithmenentwurfsmethode entgegen, und eine alte Axt, die herumlag, entpuppte sich als ein ausgezeichnetes Programmierwerkzeug.