Man stelle sich einmal einen Informatiker im tiefsten Winter in einem dunklen Wald von hungrigen knurrenden Wölfen verfolgt 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 die n Teilprobleme
für alle i aus {1..n}: den Wolf i verjagen.
Nun ist unser Informatiker überglücklich. Er benützt eine simple FOR-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 Karlsruhe 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 noch nicht verjagte Wölfinnen 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 jedoch 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 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 saßen, 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.