In der Komplexitätstheorie werden Probleme nach dem Aufwand klassifiziert, der zu ihrer Lösung nötig ist:
Klar ist: P ⊆ NP (jedes effizient lösbare Problem ist auch effizient verifizierbar). Die große Frage: Gilt auch P = NP?
Der Kern des Unterschieds:
Beispiel Sudoku: Ein Sudoku zu lösen kann sehr aufwendig sein. Aber ein ausgefülltes Sudoku zu überprüfen (alle Regeln erfüllt?) geht schnell.
Ein Problem ist NP-vollständig, wenn:
NP-vollständige Probleme sind die „schwersten“ Probleme in NP. Wenn für eines davon ein Polynomialzeit-Algorithmus gefunden würde, wäre P = NP bewiesen.
Das erste als NP-vollständig bewiesene Problem: SAT (Erfüllbarkeitsproblem der Aussagenlogik) – Satz von Cook (1971).
Eines der berühmtesten NP-vollständigen Probleme:
„Gegeben n Städte und die Entfernungen zwischen ihnen: Finde die kürzeste Rundreise, die jede Stadt genau einmal besucht und zum Ausgangspunkt zurückkehrt.“
Bei n Städten gibt es (n−1)!/2 mögliche Routen. Bei 20 Städten sind das über 60 Billionen Routen! Es gibt keinen bekannten Polynomialzeit-Algorithmus.
In der Praxis werden Heuristiken (z. B. Nearest-Neighbour, genetische Algorithmen) eingesetzt, die gute, aber nicht garantiert optimale Lösungen liefern.
Die Frage „P = NP?“ ist eines der sieben Millennium-Probleme des Clay Mathematics Institute (2000). Für die Lösung sind 1 Million US-Dollar Preisgeld ausgesetzt.
Die meisten Informatiker vermuten P ≠ NP, d. h. es gibt Probleme, die effizient verifizierbar, aber nicht effizient lösbar sind. Ein Beweis steht jedoch noch aus.
Auswirkungen, falls P = NP: Kryptographie wäre gebrochen (RSA basiert auf der Schwierigkeit der Faktorisierung). Viele Optimierungsprobleme wären effizient lösbar.
Abitur-Tipp: Im Abitur wird typischerweise gefragt: Was ist der Unterschied zwischen P und NP? Was bedeutet NP-Vollständigkeit? Erkläre am Beispiel des TSP. Präge dir ein: NP bedeutet nicht „nicht polynomiell“, sondern „nichtdeterministisch polynomiell“ (Lösung verifizierbar in Polynomialzeit). Das Sudoku-Beispiel eignet sich gut zur Veranschaulichung.