Begriff
NP-Complete
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 eine Klasse von "schweren" Problemen vor. Sudoku. Tetris. Routenplanung. Stundenplan-Erstellung. Sie alle wirken unterschiedlich. Aber sie haben ein schmutziges Geheimnis: Sie sind alle gleich. Wenn du einen schnellen Algorithmus für eines dieser Probleme findest (in Polynomialzeit), hast du automatisch alle gelöst. Diese Probleme nennt man NP-Complete. Sie sind die "Master Keys" der Komplexität. Sie sind die härtesten Probleme in NP. (Schwerer oder gleich schwer wie alle anderen).
Merksatz: Eine Komplexitätsklasse von Problemen, die sowohl in NP liegen als auch NP-hard sind; das bedeutet, jedes Problem in NP kann effizient (in Polynomialzeit) auf sie reduziert werden.
Wenn dein Chef sagt: "Schreib mir ein Programm, das die perfekte Route für unsere 500 LKWs findet." Du analysierst das Problem. Du merkst: "Das ist das Traveling Salesman Problem. Das ist NP-Complete." Du sagst dem Chef: "Ich kann die perfekte Route nicht in akzeptabler Zeit finden (außer wir haben Millionen Jahre). Aber ich kann eine sehr gute Route finden (Approximation)." NP-Complete zu erkennen, bewahrt dich davor, Zeit zu verschwenden.
1. Cook-Levin Theorem
Stephen Cook bewies 1971: SAT (Satisfiability) ist NP-Complete. Das war der Urknall. Seitdem hat Richard Karp gezeigt, dass 21 weitere Probleme (Knapsack, Graph Coloring...) auch NP-Complete sind (durch Reduktion auf SAT). Heute kennen wir tausende.
2. Pseudo-Polynomial Time
Manche NP-Probleme (wie Knapsack) kann man schnell lösen, wenn die Zahlen klein sind (Dynamic Programming). Sie nennt man "Weakly NP-Complete". Andere (wie 3-Partition) bleiben schwer, auch mit kleinen Zahlen ("Strongly NP-Complete").
1. FPT (Fixed-Parameter Tractability)
Nur weil ein Problem NP-Complete ist, heißt das nicht, dass wir aufgeben müssen. FPT ist die Kunst, die Komplexität in einen Teil des Inputs zu "verbannen", der klein bleibt. Beispiel: Das Problem ist $O(2^k \cdot n^2)$. Wenn $k$ (z.B. die Anzahl der LKWs) klein ist (z.B. $k=5$), ist das Problem für riesige $n$ (z.B. $n=1.000 .000$ Kunden) blitzschnell lösbar. In der Produktion ist es die wichtigste Aufgabe des Algorithmen-Designers, solche Parameter zu finden, um NP-Vollständigkeit in der Praxis zu "umgehen".
2. ETH (Exponential Time Hypothesis)
Warum glauben wir so fest an $P \neq NP$? Die ETH ist eine stärkere Vermutung als $P \neq NP$. Sie besagt, dass SAT mindestens $O(2^{c \cdot n})$ Zeit braucht. Wenn die ETH wahr ist, dann gibt es für viele Probleme (wie Traveling Salesman) keine Hoffnung auf signifikant schnellere Algorithmen. Das begrenzt mathematisch, was wir jemals mit Computern berechnen können, und zeigt uns die harten Grenzen des Universums auf.
3. Ladner's Theorem & NP-Intermediate
Gibt es etwas zwischen P und NP-Complete? Ladner's Theorem beweist: Wenn $P \neq NP$, dann gibt es Probleme, die weder einfach zu lösen (P) noch so schwer wie SAT (NP-Complete) sind. Diese nennt man NP-Intermediate. Lange Zeit dachte man, dass Primzahl-Tests oder Graphen-Isomorphie solche Probleme sind. (Spoiler: Primzahl-Tests sind mittlerweile in P). Die Suche nach diesen "mysteriösen" Problemen zwischen den Stühlen ist einer der spannendsten Bereiche der Komplexitätstheorie.
Quick-Check
Sind sie unlösbar?
Nein! Sie sind nur langsam zu lösen (Exponentielle Zeit). Für $N=20$ ist es kein Problem. Für $N=1000$ explodiert das Universum.Zukunft?
Wenn P=NP, dann sind NP-Complete Probleme plötzlich einfach (P).Beispiel aus Games?
Super Mario Bros Level zu lösen (kürzester Weg) ist NP-Complete. Minesweeper Konsistenz-Prüfung ist NP-Complete. Candy Crush ist NP-Hard.