Was ist ein Algorithmus?
Aussprache: [alɡoˈrɪtmʊs]
Wortart und Herkunft
Substantiv, Maskulinum; abgeleitet vom Namen des persischen Mathematikers Muhammad ibn Musa al-Chwarizmi (9. Jahrhundert), dessen latinisierter Name "Algorismi" zur Bezeichnung für Rechenverfahren wurde.
Kurzdefinition
Ein Algorithmus ist eine eindeutige, schrittweise Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen. Er besteht aus einer endlichen Folge von wohldefinierten Anweisungen, die in einer festgelegten Reihenfolge ausgeführt werden, um von einer gegebenen Eingabe zu einer gewünschten Ausgabe zu gelangen.
Ausführliche Erklärung
Algorithmen bilden das Fundament der Informatik und sind essentiell für die Funktionsweise aller Computerprogramme. Sie zeichnen sich durch fünf wesentliche Eigenschaften aus: Finitheit (endliche Beschreibung), Eindeutigkeit (klare Anweisungen), Ausführbarkeit (praktisch umsetzbare Schritte), Determiniertheit (gleiche Eingabe führt immer zum gleichen Ergebnis) und Terminierung (endet nach endlich vielen Schritten).
Die Entwicklung eines Algorithmus beginnt mit der präzisen Problemdefinition, gefolgt von der Zerlegung in Teilprobleme und der Formulierung der Lösungsschritte. Diese können in verschiedenen Formen dargestellt werden: als Pseudocode, Flussdiagramm, Struktogramm oder direkt in einer Programmiersprache. Die Wahl der Darstellungsform hängt vom Verwendungszweck und der Zielgruppe ab.
In der Praxis unterscheiden wir verschiedene Algorithmentypen nach ihrer Vorgehensweise. Sequenzielle Algorithmen führen Schritte nacheinander aus, während parallele Algorithmen mehrere Operationen gleichzeitig verarbeiten. Deterministische Algorithmen liefern bei gleicher Eingabe stets dasselbe Ergebnis, probabilistische nutzen Zufallselemente. Rekursive Algorithmen rufen sich selbst auf, iterative verwenden Schleifen.
Die Effizienz eines Algorithmus wird durch Komplexitätsanalyse bewertet. Die Zeitkomplexität beschreibt, wie die Laufzeit mit der Eingabegröße wächst, während die Speicherkomplexität den benötigten Arbeitsspeicher betrachtet. Diese werden oft in der Big-O-Notation ausgedrückt, beispielsweise O(n) für lineare oder O(n²) für quadratische Komplexität.
Praktische Beispiele:
- Sortieralgorithmus (Bubblesort): Vergleicht benachbarte Elemente einer Liste und tauscht sie, falls sie in falscher Reihenfolge stehen. Dieser Vorgang wird wiederholt, bis die Liste vollständig sortiert ist.
- Routenplanung (Dijkstra-Algorithmus): Findet den kürzesten Weg zwischen zwei Punkten in einem Netzwerk, wie es Navigationssysteme für die optimale Route verwenden.
- Suchmaschinen (PageRank): Googles ursprünglicher Algorithmus bewertet Webseiten nach ihrer Verlinkung und Relevanz, um Suchergebnisse zu ordnen.
- Verschlüsselung (RSA-Algorithmus): Nutzt mathematische Eigenschaften großer Primzahlen, um sichere Kommunikation über unsichere Kanäle zu ermöglichen.
Technische Details
Ein einfacher Suchalgorithmus in Pseudocode:

Die Komplexitätsklassen umfassen:
- O(1): Konstante Zeit (Zugriff auf Array-Element)
- O(log n): Logarithmische Zeit (Binäre Suche)
- O(n): Lineare Zeit (Lineare Suche)
- O(n log n): Linearithmische Zeit (Effiziente Sortierung)
- O(n²): Quadratische Zeit (Einfache Sortierung)
- O(2ⁿ): Exponentielle Zeit (Traveling Salesman Problem)
Vor- und Nachteile
Vorteile
- Automatisierung komplexer Aufgaben
- Reproduzierbare Ergebnisse
- Skalierbarkeit für große Datenmengen
- Objektive Entscheidungsfindung
- Zeitersparnis durch Automatisierung
Nachteile
- Benötigen präzise Problemdefinition
- Können nur vorhergesehene Fälle behandeln
- Qualität abhängig von Eingabedaten
- Mögliche Verzerrungen (Bias) in Entscheidungen
- Wartung und Anpassung erforderlich
Verwandte Begriffe
- Datenstruktur
- Programmierung
- Komplexitätstheorie
- Pseudocode
- Flussdiagramm
- Rekursion
- Iteration
- Heuristik
Synonyme
Lösungsverfahren, Verfahrensvorschrift, Rechenvorschrift, Prozedur (im weiteren Sinne)
Weiterführende Ressourcen
Klassische Lehrbücher wie "Introduction to Algorithms" von Cormen et al. bieten umfassende Einführungen. Online-Plattformen wie LeetCode oder HackerRank ermöglichen praktisches Üben verschiedener Algorithmen.