Begriff
Greedy Algorithm
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.
Stell dir vor, du bist ein Dieb in einem Tresorraum. Du hast nur 1 Minute Zeit. Vor dir liegen Goldbarren, Diamanten und Geldscheine. Was machst du? Du nimmst dir sofort das Wertvollste, was gerade in Reichweite ist ("Gier"). Du denkst nicht nach: "Vielleicht kann ich mehr tragen, wenn ich erst die kleinen Diamanten staple..." Nein, du greifst, was jetzt gerade am besten aussieht. Ein Greedy Algorithmus trifft immer die lokal beste Entscheidung in der Hoffnung, dass das am Ende auch global das beste Ergebnis ist.
Merksatz: Ein Algorithmus, der in jedem Schritt die offensichtlich beste Wahl trifft, ohne spätere Konsequenzen zu bedenken.
Beispiel: Wechselgeld. Du sollst 67 Cent herausgeben mit möglichst wenig Münzen. Greedy-Strategie:
- Nimm die größte Münze, die passt: 50 Cent. (Rest: 17).
- Nimm die größte Münze, die passt: 10 Cent. (Rest: 7).
- Nimm die größte Münze, die passt: 5 Cent. (Rest: 2).
- Nimm 2 Cent. Fertig. 4 Münzen. Perfekt. Greedy funktioniert hier super!
1. Wann Greedy scheitert
Stell dir ein Währungssystem vor mit Münzen: 1, 3, 4. Du sollst 6 Cent geben. Greedy nimmt die größte (4). Rest: 2. Dann zwei 1er. Ergebnis: 4 + 1 + 1 (3 Münzen). Optimal wäre aber: 3 + 3 (2 Münzen)! Hier versagt Greedy, weil er zu kurzsichtig war. Hier bräuchte man Dynamic Programming.
2. Dijkstra & Huffman
Berühmte Algorithmen sind greedy:
- Dijkstra (Kürzester Pfad): Gehe immer zum nächsten Knoten, der am dichtesten dran ist.
- Huffman-Kodierung (ZIP-Komprimierung): Fasse immer die zwei seltensten Zeichen zusammen. Hier ist mathematisch bewiesen, dass Gier immer zum optimalen Ziel führt (Matroid-Theorie).
1. Lokale Optima vs. Globale Optima
Der mathematische Archillesfersen von der puren Gier (Greedy Choice Property). In Systemen, in denen Subentscheidungen strikte Subsumptionsstrukturen unterliegen (Optimal Substructure), dominiert Greedy (siehe Kruskals Minimum Spanning Tree). Treten im Entscheidungsbaum asymmetrische Bestrafungen (Knapsack-Problem, Traveling Sales Person) auf, landet der Algorithmus irreparabel blinden Auges in einem Lokalen Optimum. Das System findet den Gipfel eines kleinen Hügels, anstatt in das düstere Tal des Verzichtes abzusteigen, um drei Meilen weiter den eigentlichen majestätischen Berg Everest (Global Optima) bezwingen zu können.
2. Matroide Kombinatorik (Das Greedy-Theorem)
Wie beweist man vorab, dass ein gieriger Hacker Code korrekt ist, ohne ihn für Milliarden Test-Eingaben laufen zu lassen? Die Matroid-Theorie ist das formale Rückgrat in Diskreter Mathematik, um die Richtigkeit von Greedy-Strukuren wasserdicht zu verifizieren. Ein Matroid ist ein Paar auf der Menge kombinatorisch unabhängiger Graphenmengen ($I, E$). Wenn die Problem-Datenstruktur das "Augmentation-Axiom" (Austauscheigenschaft / Independence Property) eines formellen Matroids erfüllt, garantiert das Rado-Edmonds-Theorem rigoros mathematisch, dass ein trivial designter Greedy-Algorithmus garantiert das perfekte Welt-Maximum liefert und Dynamic Programming Code reine Verschwendung an Developer-Time wäre.
3. Gradient Descent als Continuous Greedy Process
In der künstlichen Intelligenz basiert der elementare Deep Learning Kern auf Gradient Descent – es ist de facto ein Algorithmus der Greedy-Klasse im Multi-Dimensionalen, kontinuierlichen Vektorraum. Um das $Loss$ Netzwerk (Fehler) stetig zu minimieren, errechnet die KI den steilsten partiellen Neigungswinkel im Terrain. Sie schreitet "gierig" stumpf exakt bergab entgegen des Gradienten, ohne zu wissen wo ihr Schritt hingeht. Da gigantische Multi-Billion-Dim Räume kraterhaft zerklüftet sind, stolpern simple SGD-Gradients hier erbärmlich und stecken in Tälern (Lokale Minima) fest. Komplexe Optimizer wie AdamW fügen daher "Momentum" in den Gier-Prozess hinzu, was den Abroll-Kugeln physische Trägheit verleiht, um kurzzeittige Berg-Widerstände zu überrollen, ohne den Greedy Flow abzubrechen.
Quick-Check
Ist Greedy immer schnell?
Ja, meistens sehr schnell, da er nie zurückblickt (kein Backtracking). Er rennt einfach durch.Ist das Ergebnis immer perfekt?
Nein, oft nur eine "Annäherung" (Heuristik). Beim "Traveling Salesman Problem" liefert Greedy eine Route, die okay ist, aber selten die absolut kürzeste.Wann nutze ich es?
Wenn das perfekte Ergebnis zu lange dauert (NP-Hard Probleme) und du mit einer "guten" Lösung (95% optimal) zufrieden bist.