Articles

Wie sind wir hierher gekommen? Die Geschichte der Algorithmen.

Bis vor kurzem waren Algorithmen eine Domäne der Informatiker. Doch jetzt haben sie Einzug in unser Leben gehalten und sind allgegenwärtig geworden. Algorithmus ist kein Fremdwort mehr. Algorithmischer Handel, algorithmische Voreingenommenheit, der Facebook-Algorithmus, sogar algorithmische Kriegsführung – all diese Begriffe sind in den letzten Jahren Teil unseres Wortschatzes geworden. Manche Leute gehen sogar so weit zu behaupten, dass wir in einem neuen Zeitalter leben: dem Zeitalter des Algorithmus. Doch so neu sind die Algorithmen nicht. Wir verwenden sie, bewusst oder unbewusst, schon seit Hunderten und Tausenden von Jahren. Algorithmen sind lediglich spezifische Beschreibungen von Schritt-für-Schritt-Aktionen, die durchgeführt werden müssen, um ein bestimmtes Ergebnis zu erzielen. Sie sind eines der gebräuchlichsten Instrumente der Wissensvermittlung.

Praktisch jeder Prozess, bei dem jemandem beigebracht wird, wie man etwas tut, verwendet Algorithmen.

Einige Aspekte von Algorithmen haben sich jedoch in den letzten Jahrzehnten verändert. Vor allem die Einführung von Computern hat dazu geführt, dass viele Algorithmen heute wesentlich komplexer sind, als wir uns das früher vorstellen konnten. Wie haben sich die Algorithmen so entwickelt, dass sie heute so viel ausgefeilter sind als früher? Werfen wir einen kurzen Blick auf ihre Geschichte.

Algorithmen, die menschliche Handlungen steuern

Eine Briefmarke, die am 6. September 1983 in der Sowjetunion zum Gedenken an den (ungefähren) 1200. Geburtstag von al-Khwārizmī ausgegeben wurde; via Wikimedia Commons

Der Begriff Algorithmus leitet sich vom Namen von Muhammad ibn Mūsā al’Khwārizmī ab, einem persischen Mathematiker aus dem neunten Jahrhundert. Sein latinisierter Name, Algoritmi, bedeutete „das Dezimalzahlensystem“ und wurde jahrhundertelang in dieser Bedeutung verwendet. Der moderne Begriff Algorithmus tauchte im neunzehnten Jahrhundert im Englischen auf und wurde seit den 1950er Jahren, ausgelöst durch das Aufkommen der ersten kommerziell erhältlichen Computer, immer häufiger verwendet.

Lange bevor Algorithmen ihren modernen Namen bekamen, wurden sie jedoch allgemein erstellt und verwendet.

Die ersten Algorithmen wurden im antiken Griechenland auf Papier festgehalten. Gelehrte wie Nikomachos von Gerasa oder Euklid schufen damals die Bausteine der modernen Mathematik. Um das Verständnis und die Anwendbarkeit ihrer Ideen zu erleichtern, drückten sie viele von ihnen als schrittweise Aktionen aus.

Nikomachos von Gerasa führte das Sieb des Eratosthenes ein. Das Sieb wird bis heute von Studenten verwendet, die lernen, effizienten Computercode zu schreiben. Es hat dazu beigetragen, den Prozess der Identifizierung von Primzahlen zu vereinfachen. Primzahlen sind natürliche Zahlen, die größer als eins sind und nicht durch Multiplikation zweier kleinerer natürlicher Zahlen gebildet werden können. So ist beispielsweise die Vier keine Primzahl, da sie durch Multiplikation von zwei mit zwei gebildet werden kann. Die Fünf hingegen ist eine Primzahl, weil keine natürliche Zahl kleiner als fünf mit ihr multipliziert werden kann, um sie zu bilden. Während es nicht allzu schwer ist, die ersten paar Primzahlen zu ermitteln (z. B. 2, 3, 5, 7, 11, 13, 17, 19, 23 und 29), ist es sehr zeitaufwändig, große Primzahlen zu finden. Und große Primzahlen sind in der Kryptographie unerlässlich. Das Sieb des Eratosthenes gibt eine schrittweise Anleitung, wie man aus einer definierten Zahlenmenge (z. B. zwischen 1 und 10.000) schnell alle Nicht-Primzahlen entfernt, bis nur noch Primzahlen übrig bleiben. Heute gibt es zahlreiche Algorithmen, die die Identifizierung solcher Zahlen vereinfachen. Das Sieb des Eratosthenes stand am Anfang einer ganzen Familie von Algorithmen, die das gleiche Ziel verfolgen und immer besser (schneller oder in weniger Schritten) Primzahlen erkennen.

Sieb des Eratosthenes von SKopp in der deutschen Wikipedia

Euklid, der andere oben erwähnte Gelehrte, der heutzutage viel bekannter ist als Nikomachos, führte einen Algorithmus zur Ermittlung des größten gemeinsamen Teilers zweier Zahlen ein. Auch das ist nicht immer eine einfache Aufgabe, aber in vielen Situationen unerlässlich. Euklids Algorithmus hat dazu beigetragen, diese Berechnung einfach zu machen. Warum ist der Algorithmus von Euklid hilfreich? Stellen Sie sich vor, Sie haben einen Raum mit den genauen Maßen 612 mal 2006 Zentimeter, der einen neuen Fußboden braucht. Der Algorithmus von Euklid hilft Ihnen dabei, die Größe der größten quadratischen Fliesen zu ermitteln, mit denen sich der Boden sauber bedecken ließe. Die Antwort, die der Algorithmus gibt, ist 34 cm mal 34 cm, was eine Anordnung von 18 mal 59 Fliesen ergibt. Natürlich wird Ihnen jeder Fliesenleger sagen, dass die Antwort falsch ist und dass Sie keine Ahnung haben, was Sie tun, weil der Algorithmus die Fugenbreite nicht berücksichtigt und keinen Platz dafür lässt. Keine Angst, auch das lässt sich berechnen und als Algorithmus formulieren.

Algorithmen, die das Handeln von Maschinen steuern

In den folgenden hundert Jahren wurden viele weitere Algorithmen entwickelt und auf Papier festgehalten. Sie wurden dann von Einzelpersonen verwendet und Schritt für Schritt befolgt. Der erste Algorithmus, der auf einer Maschine ausgeführt werden sollte, wurde von Ada Lovelace (geborene Byron) erstellt und 1843 veröffentlicht.

Ada Byron, vier Jahre alt. Bald wird sie die erste Computerprogrammiererin der Welt sein. Von Künstler: Alfred, Comte d’Orsay. Digitales Bild; Somerville College, Oxford – Somerville College, Oxford, Public Domain, https://commons.wikimedia.org/w/index.php?curid=44246375

Ada war eine faszinierende Persönlichkeit. Sie wurde 1815 als das einzige eheliche Kind des Dichters Lord Byron geboren. Sie entwickelte große Talente in der Mathematik. Und da die Liebe zur Poesie eindeutig in ihren Genen lag, gelang es ihr irgendwie, sowohl die Liebe zur Wissenschaft als auch zur Poesie zu entwickeln und auszugleichen. Ada selbst bezeichnete ihre Denkweise als „poetische Wissenschaft“. Als begabte Mathematikerin lernte sie Charles Babbage kennen, der dank seiner Erfindungen oft als „Vater des Computers“ bezeichnet wird. Zwischen den beiden entwickelte sich eine Arbeitsbeziehung und Freundschaft. Ada interessierte sich sehr für eine von Charles‘ Konstruktionen – die Analytical Engine.

Ein Diagramm für die Analytical Engine. Von ArnoldReinhold – Eigenes Werk, CC BY 4.0, https://commons.wikimedia.org/w/index.php?curid=69497631

Die Analytical Engine war ein mechanischer Computer – eine Maschine, die Berechnungen automatisierte. Für die Analytical Engine schrieb sie den ersten Algorithmus. Ihre Arbeit bestand aus einer Formel, die zeigte, wie man die Maschine so konfiguriert, dass sie eine bestimmte komplexe Zahlenfolge, die so genannten Bernoulli-Zahlen, berechnet. Die Formel gilt heute als der erste Computeralgorithmus der Geschichte.

Ada beschränkte sich nicht nur auf rein mathematische Berechnungen. Jahrhundert lebte, war sie eine echte Visionärin.

Während viele ihrer Zeitgenossen die ersten mechanischen Computer in erster Linie als Rechenmaschinen betrachteten, stellte sie die Frage, was über die Durchführung von Berechnungen hinausging. Sie war neugierig auf das breitere Potenzial von mechanischen Computern als Werkzeuge für die Zusammenarbeit. Sie hoffte auf Computer, die den Menschen viel mehr als nur durch die Automatisierung von Berechnungen unterstützen würden.

Lovelace’s Diagramm aus „Note G“, dem ersten veröffentlichten Computeralgorithmus, von Ada Lovelace – http://www.sophiararebooks.com/pictures/3544a.jpg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=37285970

Leider wurde die Konstruktion der Analytical Engine nicht vor Adas Tod abgeschlossen, und so konnte sie ihren Algorithmus nie in Aktion sehen. Leider ist die Analytical Engine bis heute nicht gebaut worden. Ein weiterer Entwurf von Charles Babbage, die Difference Engine №2, wurde erst 1991 vom Londoner Wissenschaftsmuseum gebaut. Sie erwies sich als funktionsfähig und verwendete Materialien und Technologien, die Charles Babbage zur Verfügung standen. Es scheint, dass Babbage einfach Pech hatte, wenn es darum ging, seine Entwürfe gebaut zu bekommen. Andere Teilimplementierungen von Charles‘ Arbeit existieren anderswo, aber leider können wir Ada Byrons Algorithmus nicht auf einer echten Analytical Engine ausführen.

Das neunzehnte Jahrhundert wurde zu einer Ära der „in Maschinen eingebetteten Algorithmen“.

Es gab viele davon, die alle möglichen menschlichen Handlungen automatisierten. Wenn man ein kompliziertes Muster auf einem Stück Stoff brauchte, hatte Joseph Marie Jacquard, ein französischer Weber und Kaufmann, eine Lösung für einen: den Jacquard-Webstuhl. Er ermöglichte es den Stoffherstellern, mithilfe einer Reihe von Lochkarten, die dem Webstuhl vorgaben, wie er zu weben hatte, komplizierte Muster herzustellen. In ähnlicher Weise nutzten frühe Telefonzentralen ausgeklügelte mechanische Vorrichtungen, um Telefongespräche zu verbinden. Sie folgten automatisch Schritt für Schritt den Anweisungen, damit zwei Personen miteinander sprechen konnten. Diese Maschinen, ob Webstühle oder Vermittlungsstellen, waren zu ihrer Zeit bahnbrechend und sind auch heute noch beeindruckend. Es ist schwer, den Grad der Komplexität einiger dieser Maschinen nicht zu bewundern. Alle diese Geräte waren jedoch noch rein mechanisch. Sie bestanden aus Hebeln, Schaltern und Wellen. Sie machten eine Menge Lärm. Und sie waren sehr weit von dem entfernt, was wir heute als Computer bezeichnen.

Algorithmen auf Allzweckcomputern

Erst in den 1930er Jahren wurden erstmals Algorithmen in elektronischen (nicht-mechanischen) Computern erwähnt. Alan Turing war einer der ersten Wissenschaftler, der formell festhielt, wie Menschen Berechnungen durchführten. Turings Ziel war es, einen allgemeinen Prozess zu erfassen und nicht einen für eine bestimmte Aufgabe spezifischen, wie etwa die Ermittlung von Primzahlen oder die Berechnung des größten gemeinsamen Teilers. Der allgemeine Prozess konnte dann zur Ausführung spezifischer Aufgaben verwendet werden. Turings konzeptionelle Arbeit führte zur Entwicklung dessen, was heute als Turing-Maschine bekannt ist. Die Turing-Maschine wiederum führte zur Entwicklung von Allzweckcomputern. Die Vorsilbe „für allgemeine Zwecke“ ist hier von entscheidender Bedeutung. Im Gegensatz zu den früheren Maschinen konnten die neuen Computer beliebige Befehlssätze ausführen. Sie konnten für Zwecke eingesetzt werden, die nicht einmal von ihren Erfindern vorhergesehen wurden. Mit anderen Worten: Turings Arbeit führte zur Entwicklung von Computern, auf denen wir Anwendungen installieren und ausführen können.

Kein Flappy Bird auf Ihrem Smartphone ohne das Konzept einer Turing-Maschine.

Jahrzehnte später sind die Algorithmen extrem ausgefeilt. Sie sind sogar so ausgeklügelt, dass wir oft nicht mehr erklären können, wie sie funktionieren. Im zwanzigsten Jahrhundert zogen es viele vor, Computeralgorithmen als Black Boxes zu betrachten. Man brauchte nicht zu verstehen, wie sie genau funktionieren. Alles, was man wissen wollte, waren die Eingaben – was in die Blackbox hineinging – und die Ausgaben – was herauskam. Diese Vereinfachung war eine Entscheidung. Im einundzwanzigsten Jahrhundert ist dies bei einigen Algorithmen nicht mehr möglich: Menschen können nicht genau erklären, wie Algorithmen zu bestimmten Ergebnissen kommen, und so sind wir gezwungen, diese Algorithmen als schwarze oder vielleicht magische Boxen zu betrachten. Eine Gruppe solcher Algorithmen sind einige der Algorithmen der künstlichen Intelligenz. Wir können ihre Prinzipien erklären. Zum Beispiel können wir sagen, dass ein Algorithmus ein künstliches neuronales Netz verwendet. Wir können auch erklären, wie das Netz erstellt wurde und wie die Eingabe zu einer bestimmten Ausgabe führte. Was wir jedoch nicht erklären können, ist, warum dieses bestimmte Ergebnis das Ergebnis des Algorithmus war, abgesehen von einer rein mechanischen Erklärung. Eric L. Loomis, dessen Inhaftierungsdauer von einem Algorithmus abhing, versuchte zu verstehen, warum der COMPAS-Algorithmus ihn als Hochrisikokriminellen einstufte. Es war einfach unmöglich. Die Raffinesse der Algorithmen ist oft überwältigend. Und das ist erst der Anfang.

Wir leben in einer Welt, in der Algorithmen allgegenwärtig sind – nicht nur auf Papier oder in unseren Köpfen, sondern auch bei der Steuerung von Maschinen, Computern und Robotern.

Sie sind klein, allgegenwärtig und – zumindest in einigen Fällen – unerklärlich.

Eine formalere Definition eines Algorithmus ist „eine eindeutige Spezifikation, wie eine Klasse von Problemen zu lösen ist“ oder „eine in sich geschlossene, schrittweise Reihe von auszuführenden Operationen“

www.oed.com/view/Entry/4959

Im Oktober 2018 ist die größte bekannte Primzahl 277.232.917- 1, eine Zahl mit 23.249.425 Stellen. Allein die Überprüfung, ob diese Zahl eine Primzahl ist, dauerte sechs Tage Non-Stop-Rechenarbeit auf einem modernen Heimcomputer. (https://www.mersenne.org/primes/press/M77232917.html)