NP (třída složitosti)
NP (zkratka nedeterministicky polynomiální) je množina problémů, které lze řešit v polynomiálně omezeném čase na nedeterministickém Turingově stroji - na počítači, který umožňuje v každém kroku rozvětvit výpočet na n větví, v nichž se posléze řešení hledá současně. Ekvivalentně se hovoří o stroji, který na místě rozhodování uhodne správnou cestu výpočtu. Alternativně lze tyto problémy definovat tak, že je to množina problémů, u kterých lze pro dodaný výsledek v polynomiálním čase ověřit jeho správnost (ale obecně nikoliv nalézt řešení v polynomiálním čase).
Složitostní třída P je obsažena v NP, ale NP obsahuje velké množství důležitých problémů, zvaných NP-úplné, pro které není znám žádný polynomiální algoritmus. Pravděpodobně nejdůležitějším problémem současné informatiky (patří mezi Problémy milénia) je otázka, zda P = NP. Většina expertů[kdo?] ale věří, že P je vlastní podmnožinou NP.
Příklady problémů v NP
- Všechny problémy v P
- Faktorizace přirozených čísel – tj. hledání dělitelů čísla
- Faktorizace celých čísel
- Izomorfismus grafů – problém rozhodnutí, zda je možné dva grafy shodně nakreslit
- Problém obchodního cestujícího