Blog

Die Abenteuer des Herrn Algorithmus

Der Begriff des Algorithmus ist mittlerweile in den allgemeinen Sprachgebrauch eingegangen, aber weil kaum jemand weiß, was ein Algorithmus überhaupt ist, führt das nicht selten in die Irre. Es ist also Zeit, dass ich mir mal wieder meine Informatikermütze aufsetze …

Überall, so liest man, begegnen uns Algorithmen. Die Beiträge, die uns Facebook, Instagram und TikTok als erstes zeigen, haben angeblich Algorithmen ausgewählt, und dasselbe soll für die personalisierte, von Google Ads & Co. kuratierte Bannerwerbung auf fast allen Websites gelten, die wir besuchen. Algorithmen, so heißt es, bestimmen unser Schufa-Ranking und damit, ob wir noch als kreditwürdig gelten. Doch stimmt das überhaupt? Was immer ein Computer tut, es steckt ein Algorithmus dahinter. Aber was ist das eigentlich?

Algorithmus
al-Chwarizmi auf einer sowjetischen Briefmarke

Nicht das, wonach es klingt, denn mit dem griechischen Wort Rhythmus hat es nichts zu tun. Algorithmus ist der (verballhornte) Name eines Mannes, nämlich des persischen Mathematikers Abu Dschaʿfar Muhammad ibn Musa al-Chwārizmī, der im 9. Jahrhundert lebte. In Bagdad, damals das Zentrum der wissenschaftlichen Welt, erschien 825 sein Buch über das Rechnen mit den indischen Zahlen des Dezimalsystems, das viel praktischer als das römische Zahlsystem war (bei uns sind die ursprünglich indischen Zahlen als arabische Zahlen bekannt, weil sie vermittelt über die Araber nach Europa gekommen sind). Fünf Jahre später folgte Das kurzgefasste Buch über die Rechenverfahren durch Ergänzen und Ausgleichen. Im 12. Jahrhundert wurden beide ins Lateinische übersetzt und dabei auch der Name des Autors latinisiert – aus al-Chwārizmī wurde der Herr Algorithmi oder Algorithmus. Im Mittelalter war mit Algorithmus oft auch das Dezimalsystem gemeint, das er popularisiert hatte, aber weil al-Chwārizmīs Bücher verschiedene Rechenanleitungen enthielten, wurde sein Name schließlich zum Inbegriff solcher Rechenverfahren; man sprach beispielsweise vom „Algorithmus der Division“.

Die Sache selbst ist aber noch weit älter als ihr Name. Als frühester bekannter Algorithmus gilt der euklidische Algorithmus, mit dem sich der größte gemeinsame Teiler zweier Zahlen berechnen lässt. Euklid hatte ihn vor rund 2300 Jahren beschrieben, aber nicht selbst erfunden; der nach ihm benannte Algorithmus ist also noch älter. Man kann ihn so formulieren: Um den größten gemeinsamen Teiler zweier Zahlen zu finden, zieht man so lange die kleinere der beiden Zahlen von der größeren ab und macht mit der Differenz und der kleineren Zahl weiter, bis eine der Zahlen gleich Null ist; die andere Zahl ist dann das gesuchte Resultat. Ein ähnliches Alter hat das Sieb des Eratosthenes zur Primzahlenberechnung – ein Algorithmus, mit dem man aus einer Menge ganzer Zahlen systematisch alle aussiebt, die durch andere Zahlen teilbar sind, bis nur die Primzahlen übrig bleiben.

In der Informatik verwendet man den Begriff des Algorithmus für (oft nur halb) formale Beschreibungen von Rechenverfahren, die von Implementationsdetails abstrahieren. Will man eine Software für eine bestimmte Aufgabe entwickeln, sucht man zunächst nach einem geeigneten Algorithmus, der später in einer Programmiersprache implementiert wird. Bei der Formulierung des Algorithmus kann man von den Eigenheiten verschiedener Programmiersprachen ebenso absehen wie beispielsweise davon, ob Zahlen mit 32 oder 64 Bit und Texte im ASCII-, Latin-1- oder UTF-8-Code gespeichert werden. Die abstrakten Algorithmen eignen sich gut für eine Analyse, ob sie beweisbar das gewünschte Ergebnis berechnen, oder ob sie in jedem Fall in endlicher Zeit zum Abschluss kommen. Vor allem aber kann man ihre Komplexität analysieren. Komplexität ist ein Fachbegriff der Informatik, der den Ressourcenbedarf – Rechenzeit und Speicher – eines Algorithmus beschreibt. Wie lange eine Software am Ende konkret braucht, um eine bestimmte Aufgabe zu bewältigen, wird auch von der Leistungsfähigkeit der Hardware bestimmt, aber die Komplexität beschreibt, wie der Ressourcenverbrauch von den zu verarbeitenden Daten abhängt. Wenn ein Photoshop-Filter für ein doppelt so großes Bild doppelt so viel Zeit benötigt, skaliert sein Algorithmus problemlos und ist auch für große Dateien geeignet. Steigt die Bearbeitungszeit dagegen exponentiell mit der Bildgröße, so ist schnell eine Grenze erreicht, die auch ein schnellerer Computer nur wenig verschieben kann. Dann lohnt es nicht die Mühe, den Programmcode zu optimieren, sondern man muss nach einem besseren Algorithmus mit geringerer Komplexität suchen.

Da ein Computer immer irgendein Programm ausführt und jedes Programm einen Algorithmus implementiert, ist es zwar nicht falsch, im Zusammenhang mit Computeranwendungen von den dahinter stehenden Algorithmen zu reden, aber der inflationäre Gebrauch des Begriffs ist längst nicht immer erhellend. Oft liegt das Wesentliche einer Anwendung woanders als in den eingesetzten Algorithmen.

Wenn es um die Bemühungen von sozialen Netzwerken oder der werbetreibenden Industrie geht, aus unserem Verhalten im Internet vorauszusagen, welche Inhalte uns faszinieren beziehungsweise welche Produkte und Dienstleistungen unser Interesse wecken könnten, stehen vermutlich Formeln der Stochastik dahinter. Insbesondere das Theorem von Thomas Bayes über bedingte Wahrscheinlichkeiten („Wie wahrscheinlich ist ein Ereignis A, wenn ein Ereignis B eingetreten ist?“) dürfte die Grundlage solcher Berechnungen bilden. Thomas Bayes (1701–1761) war ein Pfarrer im südenglischen Tunbridge Wells, dessen eigentliche Berufung in der Mathematik lag. Sein erst posthum veröffentlichter Aufsatz An Essay Towards Solving a Problem in the Doctrine of Chances galt zu seiner Zeit als bloße Spielerei, während heutzutage weder die Wettervorhersage noch die Versicherungswirtschaft oder die Epidemiologie ohne Bayes’ Theorem auskämen. Zwar rührt dessen heutige Nützlichkeit auch daher, dass man die Formel dank schneller Computer auf große Datenmengen anwenden kann (Stichwort Big Data), aber der algorithmische Anteil daran ist vergleichsweise trivial. Entscheidend ist das Theorem selbst, das die Beziehung zwischen der bedingten Wahrscheinlichkeit P(A | B), der umgekehrten bedingten Wahrscheinlichkeit P(B | A) – also „Wie wahrscheinlich ist ein Ereignis B, wenn das Ereignis A eingetreten ist?“ – und den a-priori-Wahrscheinlichkeiten von A und B beschreibt:

P(A\mid B) \; = \; \frac {P(B\mid A) \cdot P(A)} {P(B)}
Die Berechnung bedingter Wahrscheinlichkeiten nach Thomas Bayes

Auch im Bereich der künstlichen Intelligenz sind Algorithmen überbewertet. In den 50er und 60er Jahren des vergangenen Jahrhunderts glaubte man noch, die generelle Intelligenz sei eine Sache des richtigen Algorithmus: Hätte man erst das Verfahren zur Suche nach einer oder der besten Lösung im riesigen Raum aller möglichen Lösungswege gefunden, das unserer natürlichen Intelligenz zugrunde liegt, könnte man alle Denkaufgaben mit dem Computer bewältigen. Schnell wurde den KI-Forschern jedoch klar, dass es hier kein allgemeingültiges Verfahren gibt. Man brauchte vielmehr aufgabenspezifisches Wissen, das für sich genommen unintelligente Algorithmen bloß anwenden. Damit begann die Epoche der wissensbasierten KI der 70er und 80er Jahre, für die man das nötige Wissen in Fakten und Schlussfolgerungsregeln formalisierte. Der algorithmische Anteil solcher KI-Systeme bestand in einer inference engine, einer Schlussfolgerungsmaschine, die dafür sorgte, dass alle aus den Fakten zu ziehenden logischen Schlüsse – und nur diese – gezogen wurden. Solche Inferenzmaschinen, wie ich sie zu meiner Zeit selbst implementiert habe, besitzen keine eigene Problemlösungskompetenz, die stattdessen in den Schlussfolgerungsregeln liegt.

Bei neueren KI-Anwendungen auf Basis neuronaler Netze ist es ähnlich. Auch hier sind Algorithmen im Spiel, doch sind sie nicht entscheidend für die Kompetenz des Systems. Der Algorithmus für die Ausführung eines neuronalen Netzes ist recht simpel; er gewichtet die Anregungen eines simulierten Neurons, summiert sie auf und ermittelt dessen aktuelle Aktivierung, mit der es wiederum auf andere Neuronen einwirkt. Das algorithmische Lernverfahren, mit dem das neuronale Netz zunächst darauf trainiert wird, die gewünschte Leistung zu erbringen, ist anspruchsvoller, aber ebenfalls nicht spezifisch für die jeweilige Aufgabe. Das, was das neuronale Netz „intelligent“ oder zumindest kompetent macht, steckt in der Matrix von Koeffizienten, die die Verbindungen der simulierten Neuronen beschreiben, nicht in irgendwelchen Algorithmen. Prinzipiell könnte man das, was ein neuronales Netz tut, auch in die Form eines Algorithmus bringen, aber das wäre nichts als eine aufgeblähte Variante des generischen Algorithmus, in den die Koeffizienten bereits eingearbeitet sind. Zu einem besseren Verständnis, wie das neuronale Netz seine Leistung erbringt, trüge ein solcher Algorithmus nichts bei.

In Computeranwendungen spielen Algorithmen zwar eine große Rolle – gerade typische Bildbearbeitungsverfahren wie Nachschärfen und Weichzeichnen, die Manipulation von Farben und Tonwerten oder die Verrechnung von Ebenen und Masken lassen sich gut algorithmisch beschreiben –, aber in vielen anderen Fällen wäre die Kenntnis der beteiligten Algorithmen dem Verständnis wenig förderlich.

Zeig mehr

Michael J. Hußmann

Michael J. Hußmann gilt als führender Experte für die Technik von Kameras und Objektiven im deutschsprachigen Raum. Er hat Informatik und Linguistik studiert und für einige Jahre als Wissenschaftler im Bereich der Künstlichen Intelligenz gearbeitet.

Ähnliche Artikel

Schreibe einen Kommentar

Schaltfläche "Zurück zum Anfang"