Problem NP (ang. nondeterministic polynomial, niedeterministycznie wielomianowy) – problem decyzyjny, dla którego rozwiązanie można zweryfikować w czasie wielomianowym. Równoważna definicja mówi, że problem jest w klasie NP, jeśli może być rozwiązany w wielomianowym czasie na niedeterministycznej maszynie Turinga.
Różnica pomiędzy problemami P i NP polega na tym, że w przypadku P znalezienie rozwiązania ma mieć złożoność wielomianową, podczas gdy dla NP sprawdzenie podanego z zewnątrz rozwiązania ma mieć taką złożoność.
Przykładowy problem:
Czy jakikolwiek niepusty podzbiór zadanego zbioru (np.
{
−
2
,
6
,
−
3
,
72
,
10
,
−
11
}
{\displaystyle \{-2,6,-3,72,10,-11\}}
) sumuje się do zera?
Trudno znaleźć rozwiązanie tego zagadnienia w czasie wielomianowym. Nasuwający się algorytm sprawdzenia wszystkich możliwych podzbiorów ma złożoność wykładniczą ze względu na liczebność zbioru. Nie wiadomo zatem, czy problem ten jest klasy P. Na pewno natomiast uzyskawszy z zewnątrz kandydata na rozwiązanie (np.
{
−
2
,
6
,
−
3
,
10
,
−
11
}
{\displaystyle \{-2,6,-3,10,-11\}}
) możemy w liniowym (a zatem wielomianowym) czasie sprawdzić, czy sumuje się do zera. Jest to zatem problem NP.
W szczególności wszystkie problemy klasy P są NP, ponieważ można je sprawdzić w czasie wielomianowym. Innymi słowy, klasa P zawiera się nieostro w NP
(
P
⊆
N
P
)
.
{\displaystyle (P\subseteq NP).}
Nie wiadomo natomiast, czy istnieje problem NP, który nie jest w klasie P (czyli, czy P różni się od NP lub inaczej
P
≠
N
P
{\displaystyle P\neq NP}
albo
P
⊂
N
P
{\displaystyle P\subset NP}
). Jest to jeden z problemów milenijnych.
View More On Wikipedia.org