Man stelle sich einmal einen Informatiker im tiefsten Winter in einem
dunklen Wald von hungrigen Woelfen gejagt vor. Hier ist der Informatiker
geradezu in seinem Element. Er steht naemlich vor einem Problem, und
solche zu loesen hat er ja waehrend seines Studiums sehr ausfuehrlich
und muehsam 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 Woelfen, n aus NAT
Gesucht: Landschaft mit 1 Informatiker und keinen Woelfen
Loesungsweg: Woelfe mit einem Pruegel verjagen.
Sicher kann sich unser Informatiker denken, dass das Problem nicht
einfach zu loesen ist. Also beginnt er, es in Teilprobleme zu zerlegen.
Etwa in n Teilprobleme:
fuer alle i aus (1..n): den Wolf i verjagen.
Nun ist unser Informatiker uebergluecklich. Er benutzt eine simple
FOR-NEXT-Schleife, in der er nacheinander die n Teilprobleme loest
und
somit seine Teilloesungen sogar schon zu einer Gesamtloesung
zusammengesetzt hat. Dass der Algorithmus korrekt ist und terminiert,
hat unser Informatiker schnell bewiesen. Was nun weiter geschieht, ist
typisch, wenngleich es zwei Moeglichkeiten gibt.
Fall 1 - Wir haben einen Durchschnittsinformatiker vor uns.
In Ermangelung eines Rechners benutzt er sich selbst als Maschine und
laesst das Programm auf sich ablaufen. Er beginnt damit, den Wolf Nr. 1
zu verjagen, kommt zu Wolf Nr. 2, doch spaetestens jetzt hat ihn ein
Wolf, der laut Algorithmus noch gar nicht an der Reihe ist, ins Bein
gebissen, worauf er in Panik geraet, das ganze schoene formale Denken
vergisst und einfach instinktiv die Flucht ergreift. Spaeter 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 beschaeftigt.
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 Woelfe, zweifelt jedoch daran, dass die Zahl der Woelfe
ohne sein Zutun konstant bleiben wird. Es koennten ja waehrend des
Verjagens eine noch nicht verjagte Woelfin Junge werfen. Um den Aufwand
des Woelfeverjagens unter diesem Aspekt abzuschaetzen, muss zuerst eine
Differentialgleichung geloest 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
Woelfe verjagen kann). Er wird also eine neue Spezifikation vornehmen.
Gegeben: Ort a mit n Woelfen und 1 Informatiker, ein Ort b;
Gesucht: Ort a mit n+k Woelfen (k ist die Anzahl der
zwischenzeitlich geborenen Woelfe), ein Ort b ohne
Woelfe mit mindestens einem Informatiker.
Loesungsweg: Flucht von Ort a nach Ort b.
Nach Ausfuehrung seines Algorithmus trifft er dann auf unseren
Durchschnittsinformatiker, der wahrscheinlich auf eine Baumspitze gefluechtet ist,
wohin er sich eilends auch begibt und wartet, bis die Woelfe wieder abziehen.
Sind die Woelfe erst weg, so werden sich beide Informatiker schnell darueber einig,
dass man den Baum am besten per rekursivem Abstieg herunterkommt.
Da sie lange auf dem Baum sassen, waren sie stark durchfroren.
Doch zum Glueck kam ihnen eine alte Algorithmenentwurfsmethode entgegen,
und eine alte Axt, die herumlag,
entpuppte sich als ein ausgezeichnetes Programmierwerkzeug.