Skip to main content

Das Know-How.

Seminare, Schulungen, Ausbildungen und Trainings

Algorithmus


Algorithmus

Definition

Ein Algorithmus ist eine allgemeine Handlungsanweisung für ein schrittweises Vorgehen zum Erreichen eines Ergebnisses. Dabei kann es sich beispielsweise um die Durchführung einer Aufgabe oder die Lösung eines Problems handeln.

Die Grundregeln sind dabei ganz einfach:

  • Die Ausführung erfolgt in einzelnen, unterscheidbaren (diskreten) Schritten.
  • Jeder Schritt besteht aus einer einzigen einfachen Aktion oder Grundoperation.
  • Zu jedem Zeitpunkt, also bei jedem Bearbeitungsschritt, ist eindeutig festgelegt, welcher Schritt als nächstes ausgeführt wird. Stehen unterschiedliche Optionen der Vorgehensweise zur Auswahl, ist das Ergebnis der vorangegangenen Operationen – das Zwischenergebnis – ausschlaggebend.

Die Bezeichnung „Algorithmus" leitet sich dabei aus „Algorismi" ab, dem latinisierten Namen des persisch-arabischen Mathematikers al-Charismi (ca. 780 – 846 n. Chr.; andere Schreibweisen: Chwarizmi, Chwaresmi, Khwarismi oder Kwarizmi). Er schrieb 825 ein auf dem indischen Zahlensystem beruhendes Rechenbuch, das um 1200 ins Lateinische übersetzt wurde und das Rechnen in Europa stark beeinflusste.

Darstellungsformen von Algorithmen

Ein Algorithmus kann in normaler Sprache abgefasst werden – etwa in Form eines Kochrezepts oder einer Bedienungsanleitung.

Möglich ist auch die visuelle Darstellung, beispielsweise als Ablaufschema (etwa bei einer Bauanleitung), in einem Flussdiagramm bzw. Flowchart (meist bei technischen Prozessen) oder (in der Informatik) in einem Programmablaufplan (PAP). Nach welchen Regeln eine standardisierte Visualisierung zu erfolgen hat, ist in der DIN 66001:1983-12 „Informationsverarbeitung; Sinnbilder und ihre Anwendung" sowie in der ISO 5807:1985-02 „Informationsverarbeitung; Dokumentationssymbole und -konventionen für Daten, für Programm- und Systemabläufe, für Pläne von Programmnetzen und Systemhilfsquellen" beschrieben.

Damit der Algorithmus maschinenlesbar und damit elektronisch verarbeitbar wird, muss er allerdings in eine formalisierte, logisch-mathematische Sprache übersetzt werden. Durch diese Übersetzung in eine Programmiersprache wird der Algorithmus als PAP zu einem von einem (Rechen-)Automaten ausführbaren Programm. Dieses besteht aus einer lückenlosen Abfolge von exakten Arbeitsanweisungen an einen Computer. Mit diesen wird die Durchführung einer Aufgabe oder der Lösungsweg eines Problems in endlich vielen ausführbaren elementaren Verarbeitungsschritten eindeutig beschrieben. Die Anzahl der Rechenschritte, mit denen das Ziel erreicht wird, ist ein Maß für die Komplexität des Algorithmus.

Eigenschaften von Algorithmen

Damit aus der Beschreibung einer Vorgehensweise oder einer allgemeinen Handlungsanweisung ein Algorithmus entwickelt und dieser in ein Programm übersetzt werden kann, müssen mehrere grundlegende Voraussetzungen erfüllt sein.

Dazu muss der Algorithmus die folgenden Eigenschaften aufweisen:

  1. Allgemeinheit: Ein Algorithmus ist darauf angelegt, eine Klasse von Problemen zu lösen bzw. gleichartige Aufgaben durchzuführen. Der Einzelfall wird von den gewählten Parametern bestimmt.
  2. Determiniertheit: Der Algorithmus muss bei Vorliegen identischer Voraussetzungen – Eingabewerten und Startbedingungen – stets das gleiche Ergebnis liefern.
  3. Finitheit: Das Verfahren insgesamt sowie jeder der darin durchzuführenden Schritte müssen mit einem begrenzten Textumfang eindeutig beschreibbar sein.
  4. Terminierung: Das Verfahren darf nur aus endlich vielen Schritte bestehen bzw. die Bearbeitung einer Eingabe hält nach einer endlichen Anzahl von Schritten an.
  5. Ausführbarkeit: Jeder einzelne Schritt des Verfahrens muss durchgeführt werden können.
  6. Determinismus: Bei jedem Verfahrensschritt besteht nur eine Möglichkeit der Fortsetzung. Der jeweils nächste Schritt bzw. die als Nächstes im Ablauf anzuwendende Regel ist eindeutig definiert.
  7. Dynamische Finitheit: Das Verfahren darf zu jedem Zeitpunkt nur endlich viel Speicherplatz benötigen.

Einsatz und Entwicklung von Algorithmen

Algorithmen sind als Programmablaufplan die Grundlage jeder elektronischen Steuerung und jedes Computerprogramms. Je nach Anwendung, Aufgabe und Sicherheitslevel werden die Algorithmen dazu mit unterschiedlichen Programmiersprachen übersetzt und damit maschinenlesbar bzw. zu ausführbaren Programmen. Die Kunst der Informatiker und Software-Ingenieure besteht darin, die jeweils zweckmäßige Programmiersprache auszusuchen und möglichst effiziente und fehlerfreie Programme zu schreiben. Diese Aufgabe wird derzeit immer häufiger von Anwendungen mit Künstlicher Intelligenz (KI) übernommen.

Die Entwicklung von Algorithmen für maßgeschneiderte (industrielle) Anwendungen sowie die Weiterentwicklung dieser Handlungsanweisungen wird unter dem Begriff „Software Engineering" zusammengefasst. Das Ziel ist, so die Leistungsfähigkeit von Programmen zu steigern, deren Geschwindigkeit zu erhöhen oder das Aufgabenspektrum bzw. die Einsatzmöglichkeiten zu vergrößern. Es war lange Zeit die Domäne von Spezialisten wie Informatikern, Mathematikern, Physikern oder auch Ingenieuren, die komplexe Abläufe strukturieren, systematisieren, logisch verknüpfen und – durch Übersetzung in eine Programmiersprache – formalisieren können.

Algorithmen und KI

Bereits in den 1990er-Jahren kam in der Informatik aber ein neuartiger Ansatz zur Entwicklung von Algorithmen auf, der sich an die Evolution biologischer Systeme anlehnte. Diese sogenannten „genetischen Algorithmen" bauen in ihre Kopien Veränderungen ein; anschließende Testläufe zeigen dann, ob diese sich positiv oder negativ auf das gewünschte Ergebnis auswirken. Algorithmen mit besseren Eigenschaften waren dann wieder Ausgangspunkt für den nächsten Kreislauf der Evolution durch Reproduktion, Mutationen, Anpassung und Auslese. Dieses „survival of the fittest" führte im Endeffekt zu besseren Programmen.

Hier setzt eine der Grundlagen der Künstlichen Intelligenz als lernendes System an. Lernende Systeme passen sich durch kontinuierliche Verbesserung ihrer Algorithmen selbst an die Umweltbedingungen, also die unterschiedlichen Anforderungen, an, entwickeln sich weiter und optimieren so ihre Leitungsfähigkeit, ihre „Fitness". Früher waren es „nur" die Algorithmen, die verbessert wurden, heute sind es außer diesen auch die zugrunde liegenden mathematischen oder statistischen Modelle, die immer weiter verfeinert werden.

Zusammen mit der Auswertung großer Datenmengen, der Analyse von Nutzeranforderungen sowie der Lokalisierung von Standorten und dem Erstellen von Bewegungsmustern wird es so möglich, dass Webseiten, Apps oder digitale Sprachassistenten individuelle Antworten geben, Rankings anbieten, Werbung ausspielen oder Produktvorschläge unterbreiten. Welche Algorithmen genau hinterlegt sind und wie sie funktionieren, ist dabei in der Regel das Betriebsgeheimnis der großen Software-Konzerne und Plattformbetreiber.