Ein NP-hartes Problem ist ein Ja/Nein-Problem, bei dem es mindestens genauso schwer ist, eine Lösung dafür zu finden wie für das schwierigste Problem, dessen Lösung schnell als wahr überprüft werden kann. Einige NP-harte Probleme sind solche, bei denen eine funktionierende Lösung schnell überprüft werden kann (NP-Probleme), und einige sind es nicht. NP-harte Probleme, die auch NP-Probleme sind, passen in eine Kategorie namens NP-vollständig.

Ein Beispiel für ein Problem, das mindestens genauso schwer zu lösen ist wie jedes andere Problem, für das wir Lösungen schnell überprüfen können, und das auch schnell überprüfbar ist (es ist sowohl NP-hart als auch NP):

Ein Handelsreisender möchte 100 Städte besuchen, indem er mit dem Auto fährt und seine Reise zu Hause beginnt und beendet. Er hat einen begrenzten Vorrat an Benzin, so dass er insgesamt nur 10.000 Kilometer fahren kann. Er möchte wissen, ob er alle Städte besuchen kann, ohne dass ihm das Benzin ausgeht.

Man weiß nicht, wie man dieses Problem schneller lösen kann, als jede mögliche Antwort zu testen, aber wenn eine Lösung gefunden wird, die es dem Verkäufer erlaubt, dies zu tun, können wir mit einem Algorithmus prüfen, ob sie wahr ist. Dieses Problem wird auch als Problem des fahrenden Verkäufers bezeichnet.

Ein Beispiel für ein Problem, das mindestens genauso schwer zu lösen ist wie jedes andere Problem, für das wir schnell Lösungen finden können, das aber nicht schnell überprüft werden kann (es ist NP-hart, aber es ist nicht NP):

wenn jemand ein Programm startet, das einfach geht,

while(true){ weiter; }

und es nie aufhält, wird es ewig laufen?

Es gibt keinen bekannten Weg, für alle Probleme dieser Art eine Lösung zu finden, und dies kann auch nicht überprüft werden.