Woher weiß eine Software, wer die Liebe meines Lebens ist? Das versprechen zumindest die großen Dating-Portale – dabei hat das Programm keine Ahnung von Partnerschaft, geschweige denn von Liebe. Aber es hat ein Werkzeug, das – richtig eingesetzt – sehr mächtig sein kann: den Algorithmus. Diesen möchte ich Ihnen heute näher vorstellen.
Definition eines Algorithmus
Der Begriff Algorithmus umfasst heute ein breites Spektrum von Verfahren der Mathematik und Informatik. Dementsprechend ist eine Definition immer sehr allgemein gehalten und liest sich je nach Quelle etwas anders. Grundsätzlich ist ein Algorithmus ein formal festgelegtes Verfahren, mit dem eine definierte Aufgabe nach einem strukturierten Schema gelöst wird.
In der Regel gibt es einen Eingabewert, der in einen Ausgabewert umgewandelt wird. Meist erfolgt dieser Vorgang schrittweise, wobei ein einfacher funktionaler Algorithmus auch aus nur einem (Rechen-)Schritt bestehen kann.
Das ist alles ziemlich theoretisch, weshalb ich an dieser Stelle schon einmal auf die praktischen Anwendungsmöglichkeiten vorgreifen möchte. Ein Algorithmus kann zum Beispiel genutzt werden, um das kleinste gemeinsame Vielfache von zwei Zahlen zu bestimmen.
Er eignet sich aber auch für sehr viel komplexere Aufgaben: Die Reihenfolge der Suchergebnisse bei Google wird ebenfalls von einem Algorithmus bestimmt.
Eigenschaften eines Algorithmus
Zurück zur Theorie: Welche Merkmale muss ein Verfahren haben, um als Algorithmus zu gelten? In der Informatik ist das klar definiert:
- Determinismus: Das Verfahren ist determiniert, weil zu einer bestimmten Eingabe jedes Mal dasselbe Resultat ausgegeben wird.
- Determiniertheit: Das Schema ist deterministisch, weil es jedem Teilergebnis einen eindeutigen nächsten Schritt zuordnet.
- Terminiertheit: Die Anzahl der Schritte ist endlich, das Verfahren liefert nach dem finalen Schritt ein Ergebnis.
- Finitheit: Der Algorithmus selbst muss eine endliche Beschreibung haben. Zudem muss der von ihm belegte Speicher zu jeder Zeit begrenzt sein.
Was ist der Unterschied zwischen Algorithmus und Programm?
Die (schrittweise) Umwandlung einer Eingabe in eine Ausgabe – das erinnert stark an ein Programm. Worin unterscheidet sich nun das algorithmische Vorgehen vom Programmieren? Kurz gesagt: durch die verwendete Sprache.
Im Detail heißt das: Ein Algorithmus in Form einer Handlungsanweisung oder eines Schemas existiert unabhängig von einer Sprache. Er ist die reine „Anweisung“, bestimmte Schritte nach einer vorgegebenen Struktur auszuführen. So kann ein Piktogramm zum „Verhalten im Notfall“ in gewisser Weise bereits ein Algorithmus sein.
In der Technik steht jedoch der Nutzen von Algorithmen für automatische, maschinelle Prozesse im Vordergrund. So ist es mit Hilfe ausgeklügelter Schemata möglich, große Datensätze zu analysieren – zum Beispiel bei Google. Doch damit das funktioniert, braucht der Algorithmus eine Sprache. Genauer gesagt: eine Programmiersprache.
Aufgabe des Entwicklers ist es, die formalen Vorgaben des Algorithmus in einer synthetischen Sprache wie Java auszudrücken. Dabei muss er nicht nur die konkrete „Rechenvorschrift“ korrekt erfassen, sondern auch die zugehörigen Datenbereiche.
Eine Herausforderung kann dabei die Umsetzung des Schemas mit den in der jeweiligen Sprache verfügbaren elementaren Operationen sein. Die vollständige Formulierung des Algorithmus mit all seinen Datenbereichen in einer Sprache wird als Programm bezeichnet.
Das Algorithmus-Prinzip ist schon lange bekannt, mindestens seit dem 9. Jahrhundert. Zu dieser Zeit forschte der Gelehrte al-Chwārizmī in Bagdad, sein latinisierter Name: Algorismi. An ihn ist der Fachbegriff angelehnt. Das strukturierte Herangehen an ein Problem ist hingegen vermutlich (fast) so alt wie die Menschheit selbst.
Schließlich lässt sich jedes Kochrezept als eine Art von Algorithmus auffassen. Tatsächliche Relevanz bekam das Prinzip jedoch erst in der Mathematik. Mit dem Gauß-Algorithmus ist es zum Beispiel möglich, beliebige lineare Gleichungssysteme zu lösen. Zugegeben, das ist eher trockene Materie.
Algorithmen finden sich jedoch auch im Alltag. Wenn Sie das nächste Mal vor einer roten Ampel stehen, können Sie das zugrundeliegende Programm wunderbar beobachten. Die Schaltung folgt einer genau definierten Abfolge von wiederkehrenden Befehlen.
An dieser Stelle möchte ich auf die eingangs erwähnte Suche nach der großen Liebe zurückkommen: Auch dafür gibt es algorithmenbasierte Programme. Die bekannten Dating-Portale analysieren die Eigenschaften ihrer Nutzer und suchen auf dieser Basis nach passenden Partnern.
Dabei fließen weit mehr Informationen ein als nur Körpergröße und Lieblingsessen. Die Software analysiert auch große Datenmengen, die bei der Nutzung des Portals anfallen. Dabei kommen die derzeit fortschrittlichsten Algorithmen-Entwicklungen zum Einsatz: Künstliche Intelligenz und maschinelles Lernen.
Algorithmen und Machine Learning
Machine Learning bezeichnet die Fähigkeit einer Software, selbstständig zu lernen und sich zu verbessern – das war lange Jahre den Menschen vorbehalten. Seit einiger Zeit zeigen sich jedoch auch Programme lernfähig. Die Erfahrungen, die beim Menschen die Grundlage für das Lernen bilden, sind im Fall von Software die Daten. Was macht ein Programm damit – und vor allem: Wie arbeitet die Künstliche Intelligenz?
Der „intelligente“ Part der Software ist der Algorithmus. Er wird oft dazu entwickelt, um Werte sinnvoll zu gruppieren oder Muster zu erkennen. Bestes Beispiel: die Kundensegmentierung auf Grundlage vorhandener Daten.
Benötigen Sie Unterstützung?
Gerne helfen wir Ihnen bei den ersten Schritten zur eigenen Datenplattform oder begleiten Sie auf Ihrem Weg zur Data Driven Company.
Größte Herausforderung ist hier die enorme Menge an gespeicherten Informationen (Stichwort: Big Data). Sie per Hand zu durchsuchen, ist unmöglich. Auch ist zu Beginn unklar, welche Gemeinsamkeiten zwischen Kunden überhaupt bestehen könnten. Hier greift die Künstliche Intelligenz. Sie ist auf Grundlage ihrer Basis-Algorithmen in der Lage, neue Strukturen zu erkennen und Muster zu identifizieren.
… wobei das nicht ganz richtig ist: Tatsächlich muss das Programm erst lernen, wie es arbeiten soll. In der sogenannten Trainingsphase richtet der Entwickler die Software so ein, dass sie „lernt, zu lernen“.
Damit sind Unternehmen in der Lage, vorhandene, aber bisher nicht genutzte Daten mehrwertschaffend zu analysieren. Im Bereich CRM wird dadurch beispielsweise eine persönliche und individuelle Kommunikation möglich, die sich in Form steigender Umsätze auszahlt. Weil Sie, bildlich gesprochen, in einem Berg aus Informationen nach wertvollen Erkenntnissen suchen, werden solche Programme auch unter dem Stichwort „Data Mining“ zusammengefasst.
Das Potential von Machine Learning zeigt sich darüber hinaus im digitalen Alltag, zum Beispiel auf Youtube. Hier nehmen die meisten den Algorithmus aus Kundenseite wahr: Er schlägt Videos vor, die zu den Interessengebieten des Nutzers passen. Es muss also nicht immer die Liebe des Lebens sein, die das Programm findet – es gibt viele spannende Möglichkeiten!