Zwei Gruppen von Menschen wurden in ihrem Studium besonders darauf trainiert, beim Lösen von Problemen in Algorithmen zu denken: Mathematiker und Programmierer (Politiker leider nicht). Dabei wird ein großes komplexes Problem abstrahiert und dann in (möglichst leicht) lösbare Probleme zerlegt. Mit dem gefundenen Algorithmus kann man dann das betrachtete Problem und im besten Fall unendliche viele ähnlich gelagerte Probleme lösen. Diese Denkweise geht einem mit den Jahren immer mehr in Fleisch und Blut über und ist der wichtigste Teil, den man aus einem Studium der Mathematik oder Informatik mitnimmt. Formeln kann man nachschlagen, aber die Denkweise muss man gelernt haben.

Um zu testen, ob jemand denkt wie ein Mathematiker oder Programmierer, kann man ihm eine einfache Frage stellen:

Wie kommt es eigentlich, dass man Dinge immer genau dort findet, wo man zuletzt gesucht hat?

Es kann sein, dass sie diese Frage lächerlich finden und Ihnen die Antwort sofort klar ist. Mir ging es auch so. Wenn Sie die Frage aber verschiedenen Menschen stellen, werden Sie sehen, dass einige von denen tatsächlich anfangen zu grübeln. Sie glauben die These teilweise sogar erst nicht und versuchen, sich daran zu erinnern, wann sie zuletzt etwas gesucht haben und was das war. Ihnen fällt auf, dass er doch in allen Fällen so war, dass der Gegenstand immer am letzten Suchort gefunden hatte. Eine Erklärung dafür habe sie aber nicht. Nicht, weil sie dumm sind oder so. Sie denken einfach anders. Sie werden nach einer Minute oder so wahrscheinlich auch auf die Lösung kommen.

Wenn Sie die Frage jedoch jemandem stellen, der in Algorithmen denkt, wird er ohne zu zögern antworten „Klar, denn wenn ich es gefunden habe, höre ich auf zu suchen.“

In einem Suchalgorithmus für ein einzelnes Objekt – wie immer er auch aussehen mag – ist das Auffinden des gesuchten Objektes logischerweise die Abbruchbedingung. An dem Punkt hat der Algorithmus erreicht, was man von ihm verlangt hat, und wird nicht weiter benötigt.

Zum Thema Mathematiker-Denkweise, die man kurz zusammenfassen kann als „neue Probleme auf bereits gelöste Probleme zurückführen“, gibt es die fiktive Geschichte eines Mathematikers, der die Wand im Wohnzimmer streichen will. Das hat er schon einmal getan. Dazu musste er damals Pinsel und Farbe aus dem Keller ins Wohnzimmer bringen, die Wand streichen und danach Pinsel und Farbe wieder in den Keller bringen. Nun gibt es aber ein Problem. Der Algorithmus von damals funktioniert nicht mehr, weil Farbe und Pinsel bereits im Wohnzimmer stehen. Seine Frau hat sie dort schon mal hingebracht. Der Mathematiker braucht Farbe und Pinsel aber im Keller, um danach so vorzugehen, wie er es schon einmal erfolgreich gemacht hat. Also bringt er Farbe und Pinsel erst einmal wieder in den Keller und startet dann seinen Algorithmus.

Das Beispiel klingt erst mal lächerlich und überzeichnet. Da bringt jemand die Farbe nach unten, um sie sofort danach wieder hoch zu holen. An dieser Stelle muss ich aber gestehen, dass ich privat in einigen Situationen ähnlich schräg handele. So friere ich oft Speisen ein, obwohl ich sie ein paar Stunden später zubereiten will. Ich weiß, wie lange sie in den Ofen müssen, wenn sie tiefgefroren sind. Das ist ein bereits gelöstes Problem. Im aufgetauten Zustand fehlen mir aber die Erfahrungswerte. Wie viel kürzer müssen sie in den Ofen, wenn sie bereits aufgetaut sind? Klar, ich könnte es ausprobieren, aber dann müsste ich mir auf einmal doppelt zu viele Backzeiten merken – einmal für tiefgefroren und einmal für aufgetaut. Da beschränke ich ich doch lieber auf die Backzeiten im tiefgefrorenen Zustand und friere eben zur Not die Speise direkt vor dem Backen ein.