Kategorien
Uncategorized

Meta-Algorithmik

Die Meta-Frage der Algorithmik

Von Algorithmen ist derzeit viel die Rede, und in keinem Informatik-Lehrplan darf ein Kurs „Algorithmen und Datenstrukturen“ fehlen. Algorithmik ist die Lehre von den Algorithmen, aber sie umfasst mehr, als in einem klassischen Algorithmen-Buch steht. Ziegenbald schreibt dazu im Handbuch der Mathematikdidaktik (Springer, 2015):

Computer werden mit Programmen bzw. Algorithmen „gefüttert“, und dementsprechend ist in diesem Zeitraum viel Literatur zum Thema Algorithmen entstanden, weniger dagegen zur Algorithmik. Der Begriff der Algorithmik ist der umfassendere, denn neben der rein inhaltlichen Seite, eben den Algorithmen (auf der „Objektebene“), umfasst er (auf der „Metaebene“) alles, was das Arbeiten mit Algorithmen betrifft, also insbesondere auch die Methode des algorithmischen Problemlösens. Er signalisiert, dass es beim Arbeiten mit Algorithmen auch um eine bestimmte methodologische und philosophische Grundeinstellung geht, die in einem engen Zusammenhang mit der konstruktivistischen Seite der Mathematik steht.

Tatsächlich habe ich in meinem Büro ziemlich viele Bücher stehen, die Titel wie „Algorithmen und Datenstrukturen“ oder „Algorithmen in Java/Python/C/…“ tragen. Die meisten davon erklären, wie Algorithmen für typische Probleme funktionieren. Einige wenige erklären sogar die dahinterliegenden Designprinzipien für Algorithmen. Aber ich kenne tatsächlich nur ein einziges, das die Frage beantwortet, die sich meiner Meinung nach jeder Algorithmiker irgendwann stellen müsste:

„Wie sieht ein Algorithmus (oder eine Heuristik) aus, mit dessen Hilfe man einen geeigneten Algorithmus für ein gegebenes Problem findet?“

Ein Algorithmus, der Algorithmen findet

Das Buch, das besagte löbliche Ausnahme bildet, ist The Algorithm Design Manual (Springer, 2008) von Steven S. Skiena, das in seinem Mittelteil tatsächlich ein (wenn auch kleines) Kapitel namens „How to Design Algorithms“ enthält. Dieses Kapitel gibt tatsächlich eine Schritt-für-Schritt-Anleitung zum Finden von Algorithmen. Dieser ist zwar vergleichsweise oberflächlich und alles andere als einfach anzuwenden, aber es ist immerhin ein Versuch.

Was man häufiger findet, sind Sammlungen von Techniken, die beim Entwickeln von Algorithmen helfen. Ein berühmtes Beispiel ist Polyas 1945 erschienenes (und seither immer wieder aufgelegtes) Buch How to Solve It. Ihm geht es zwar in erster Linie um das Lösen mathematischer Probleme, aber seine Ideensammlung umfasst von Analogy bis Working Backwards viele Techniken, die auch auf andere Diszplinen (und insbesondere auf die Algorithmik) übertragbar sind. Eines aber leistet auch sie nicht: Sie bringt diese Techniken nicht in eine Reihenfolge, sondern überlässt es der Intuition des Lesers, die richtige Technik oder die richtige Kombination von Techniken für den jeweiligen Anlass auszuwählen.

Es erstaunt mich, dass Algorithmiker nicht entschlossener darüber nachdenken, wie sie eigentlich einen Algorithmus finden. Skiena selbst schreibt:

Problem-solving is not a science, but part art and part skill.

Dieser Satz weckt in mir unangenehme Erinnerungen, weil er in meinem angestammten Forschungsgebiet, der Kryptografie, fast genauso verwendet wird. Scheinbar beginnen wir immer dann, wenn wir ein Problemfeld nicht wirklich durchdrungen haben, von einer Kunstform zu reden. Wahrscheinlich haben die Menschen früherer Jahrhunderte das gleiche über die Medizin oder die Landwirtschaft gesagt.

Einerseits spricht daraus ein gesundes Vertrauen in die menschliche Intuition. Selbst eine so exakte Wissenschaft wie die Mathematik wird an den meisten Universitäten gelehrt, indem man die Studierenden mit zahlreichen Beispielen konfrontiert und darauf setzt, dass das Gehirn schon irgendwann selbst herausfinden wird, wie es beim Lösen neuer Probleme vorzugehen hat.

Bin ich zu naiv, wenn ich mir wünsche, dass wir wenigstens versuchen sollten, erste Schritte in die Richtung einer Meta-Algorithmik zu machen? Es muss ja nicht gleich perfekt sein, aber können wir unseren Studierenden nicht erklären: „Wenn ich vor einem neuen Problem stehe, dann mache ich zuerst dies, dann versuche ich das?“ Müssen wir uns wirklich damit abfinden, dass Algorithmik eine Kunstform ist, die am Ende eben den Inspirierten vorbehalten ist? Besteht nicht doch die Hoffnung, dass wir Heuristiken zum Finden von Problemlösungen beschreiben können, die vielleicht nicht gleich optimal sind, aber nachvollziehbar und vielleicht sogar vergleichbar? Und wäre nicht das der erste Schritt hin zu einer echten Wissenschaft des Denkens?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert