Begriff
Algorithmus
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Ein Algorithmus ist ein Kochrezept für Probleme. Es ist eine Schritt-für-Schritt-Anleitung, die genau sagt, was zu tun ist, um ein bestimmtes Ziel zu erreichen. Wichtig dabei: Die Anweisungen müssen so präzise sein, dass selbst ein "dummer" Roboter (oder Computer) sie ohne Nachfragen ausführen kann.
Vergleich es mit dem Händewaschen:
- Wasser an.
- Hände nass machen.
- Seife nehmen.
- 10 Sekunden reiben.
- Abspülen.
- Abtrocknen. Das ist ein Algorithmus. Würdest du sagen "Wasch dich", wüsste der Computer nicht, ob er duschen oder Zähne putzen soll.
Merksatz: Eine eindeutige Anleitung, die ein Problem in kleinen Schritten löst.
Algorithmen sind überall, nicht nur im Computer:
- Navi (Google Maps): Der Dijkstra-Algorithmus berechnet den kürzesten Weg von A nach B (probiere alle Straßen, nimm die schnellste).
- Google Suche: Der PageRank-Algorithmus entscheidet, welche Webseite ganz oben steht (wer wird am meisten verlinkt?).
- Netflix: Ein Empfehlungs-Algorithmus schaut, was du geguckt hast, und sucht ähnliche Filme.
In der Programmierung schreibst du Algorithmen, um Daten zu sortieren, zu filtern oder Berechnungen durchzuführen.
1. Terminierung & Determinismus
Ein echter Algorithmus muss zwei Eigenschaften haben:
- Terminierung: Er muss irgendwann aufhören. Eine Endlosschleife ist (meistens) kein gültiger Algorithmus zur Problemlösung.
- Determinismus: Bei gleicher Eingabe muss immer das gleiche Ergebnis herauskommen. Wenn 2+2 heute 4 und morgen 5 ergibt, ist der Algorithmus kaputt (oder nutzt Zufall).
2. Effizienz (Big-O Notation)
Nicht alle Algorithmen sind gleich gut. Wenn du ein Telefonbuch nach "Müller" durchsuchst:
- Schlechter Algorithmus (Linear Search): Du fängst bei A an und liest jeden Namen, bis du M findest. (Dauert ewig).
- Guter Algorithmus (Binary Search): Du schlägst die Mitte auf. Ist M davor oder danach? Danach. Du halbierst den Rest wieder. Und wieder. (Geht rasend schnell). Man misst das in "O-Notation" (z. B. O(n) vs O(log n)).
1. Rekursion (Die russische Matroschka)
Ein eleganter (aber oft im PC gehasster) Weg für Algorithmen ist die Rekursion. Der Algorithmus ruft sich selbst auf, bis er an eine Abbruchbedingung stößt (Base Case).
Ein Klassiker ist die Fakultät (5! = 5 * 4 * 3 * 2 * 1).
def fakultaet(n):
if n == 1: return 1 # Abbruch (sonst ewige Schleife)
return n * fakultaet(n - 1) # Der Algorithmus ruft sich selbst auf
Jeder Aufruf wird auf den Call-Stack des Betriebssystem (OS) gelegt. Ist die Basis zu tief (z.B. bei der Verarbeitung von gigantischen Baumstrukturen), knallt es mit einem "Stack Overflow Default". Alternativ nutzt man iterative Schleifen (for/while), was performanter, aber bei komplexen Bäumen schwerer zu lesen ist.
2. P vs. NP (Das offene Millionen-Dollar-Problem)
Es gibt Probleme, für die wir schnelle, skalierbare Algorithmen haben (P-Klasse, Polynomialzeit). Das Sortieren von Namen gehört dazu.
Dann gibt es die NP-Klasse. Wir können zwar extrem schnell überprüfen, ob eine Antwort richtig ist (z.B. Sudoku), aber der Algorithmus zum Finden der Antwort dauert bei größeren Rätseln exponentiell lange (oft Tausende von Jahren). Hierzu gehört das "Problem des Handlungsreisenden" (Traveling Salesman). Wenn jemand beweist, ob P = NP, löst er das größte Problem der Informatik und bricht im Vorbeigehen jede moderne Verschlüsselung.
3. Heuristiken (Der pragmatische Cheat)
Da NP-Probleme zu komplex sind, um sie für 10.000 Paket-Stops perfekt zu berechnen, nutzen Amazon und UPS Heuristiken. Eine Heuristik ist ein Algorithmus, der das "Raten" (Rule of Thumb) erlaubt. Er sagt nicht: "Das ist die mathematisch zu 100% kürzeste Route". Er sagt: "Ich habe nach einer gewissen Zeit keine Lust mehr zu rechnen. Diese Route ist nah genug am Optimum, sie reicht für die Praxis." Oft basieren sie auf maschinellem Lernen oder genetischen Algorithmen.
Quick-Check
Ist ein Kochrezept ein Algorithmus?
Im Prinzip ja. Aber nur, wenn es extrem präzise ist ("Eine Prise Salz" ist für Computer zu ungenau, "1 Gramm Salz" wäre okay).Warum braucht Google einen Algorithmus für die Suche?
Weil es Milliarden Webseiten gibt. Kein Mensch kann die sortieren. Ein Algorithmus kann in Millisekunden entscheiden, was relevant ist.Was passiert, wenn ein Algorithmus nicht "deterministisch" ist?
Er liefert bei jedem Aufruf ein anderes Ergebnis, obwohl die Eingabe gleich war. Das ist in der Softwareentwicklung meistens unerwünscht (außer bei Zufallsgeneratoren).