You are on page 1of 2

Problem NP-trudny

Klasy problemów NP
Cała klasa problemów o złożoności czasowej wielomianowej lub większej, uznawana jest za ciekawy
obszar do prowadzenia wszelkich badań naukowych. Dla wspomnianych problemów postanowiono więc
utworzyć kolejne zagadnienia, które umożliwiłyby precyzyjniejsze określanie poziomu trudności danego
problemu.
1. Problemami klasy NP nazywamy problemy decyzyjne, w których sprawdzenie poprawności
określonego rozwiązania wymaga złożoności obliczeniowej wielomianowej. Z powyższego stwierdzenia
wynika więc, że znalezienie rozwiązania dla problemów NP wymaga złożoności co najmniej
wielomianowej.
* problem jest w klasie NP, jeśli może być rozwiązany w wielomianowym czasie na niedeterministycznej
maszynie Turinga.
- w klasie problemów NP zawierają się problemy P oraz problemy NP zupełne.
Przykłady: spełnialność dla formuł zdaniowych, problem 3-spełnialności dla formuł zdaniowych (postać
3-CNF), istnienie k-kliki w grafe niezorientowanym, istnienie pokrycia wierzchołkowego, istnienie cyklu
Hamiltona w grafe niezor, k-kolorowanie dla grafu niezor, istnienie cyklicznego pokrycia
wierzchołkowego, istnienie cyklicznnego pokrycia krawędziowego, istnienie cyklu Hamiltona w grafe
zorientowanym
2. Problemami klasy P nazywamy problemy decyzyjne, w których znalezienie rozwiązania wymaga
złożoności obliczeniowej wielomianowej. Problemy P należą do zbioru problemów NP. Z tego wynika, że:
· sprawdzenie poprawności rozwiązania danego problemu jest możliwe w czasie wielomianowym;
· znalezienie rozwiązania danego problemu jest możliwe również w czasie wielomianowym.
Przykłady: podstawowe operacje obliczeniowe, sortowanie zbioru elementów
3. Problemami NP-zupełnymi nazywamy problemy decyzyjne, w których znalezienie rozwiązania nie jest
możliwe w czasie wielomianowym. Problemy NP-zupełne należą do zbioru problemów NP jak również do
zbioru problemów NP-trudnych. Z tego wynika, że:
· sprawdzenie poprawności rozwiązania danego problemu jest możliwe w czasie wielomianowym;
· znalezienie rozwiązania danego problemu nie jest możliwe w czasie wielomianowym.
Przykład: kolorowanie grafu, problem plecakowy, znajdowanie najmniejszego pokrycia wierzchołkowego
4. Problemami klasy NP-trudnej nazywamy problemy obliczeniowe, dla których znalezienie rozwiązania
problemu nie jest możliwe ze złożonością wielomianową oraz sprawdzenie rozwiązania problemu jest co
najmniej tak trudne jak każdego innego problemu NP. Problemy NP-Trudne obejmują zarówno problemy
decyzyjne jak również problemy przeszukiwania czy też problemy optymalizacyjne. Problemy zaliczane są
do NP-Trudnych, jeżeli sprawdzenie poprawności rozwiązania wymaga złożoności obliczeniowej co
najmniej wielomianowej i jednocześnie spełniony jest co najmniej jeden z poniższych warunków:
· rozważany problem NP jest problemem NP-Zupełnym
· rozważany jest problem przeszukiwania
· rozważany jest problem optymalizacyjny
· znalezienie rozwiązania problemu nie jest możliwe ze złożonością wielomianową
Klasa problemu Klasa złożoności czasowej
NP Sprawdzenie rozwiązania Znalezienie rozwiązania
Problem P Złożoność wielomianowa: x
NP = O(n )
x
Złożoność Złożoność wielomianowa NP = O(n )
Problem NP x
wielomianowa: P = O(n ) lub wykładnicza: n
NEXPTIME = O(X )
Problem NP-
zupełny
Złożoność x Złożoność wykładnicza: n
Problem NP- P = O(n ) NEXPTIME = O(X )
wielomianowa lub
trudny n
wykładnicza: EXPTIME = O(X )
Problem NP-trudny (NPH, ang. NP-Hard) – problem obliczeniowy, którego rozwiązanie jest co najmniej
tak trudne, jak rozwiązanie każdego problemu z klasy NP (całej klasy NP).
Formalna definicja problemu NP-trudnego jest następująca:
Problem π2 jest NP-trudny, jeżeli pewien problem NP-zupełny π1 jest do niego redukowalny
wielomianową transformacją Turinga.
Innymi słowy, problem NP-zupełny π1 można rozwiązać w wielomianowym czasie algorytmem
rozwiązującym problem NP-trudny π2 , przez wykorzystanie hipotetycznej procedury H sprowadzającej
problem NP-zupełny π1 do problemu NP-trudnego π2 , jeżeli tylko H daje się wykonać w wielomianowym
czasie. NP-trudność można zdefiniować także w kategorii języków formalnych (a nie problemów). Do
klasy problemów NP-trudnych mogą należeć problemy różnego typu: decyzyjne, przeszukiwania,
optymalizacyjne.
Wraz z definicjami klas problemów NP i NP-zupełnych ma to następujące konsekwencje:
- problem optymalizacyjny, którego wersja decyzyjna jest NP-zupełna, jest problemem NP-trudnym;
- NP-trudny problem π2 jest co najmniej tak trudny, jak problem π1
- ponieważ π1 jest problemem NP-zupełnym, toteż należy on do problemów najtrudniejszych w klasie NP,
dlatego NP-trudny problem π2 jest co najmniej tak trudny, jak cała klasa NP;
- ponieważ wszystkie problemy NP-zupełne transformują się wzajemnie do siebie (zwykłą) transformacją
wielomianową (nie Turinga), to również wszystkie problemy NP-zupełne można rozwiązać przez redukcję
do NP-trudnego problemu π 2
- jeśli P ≠ N P, to problemy NP-trudne nie mają rozwiązań w czasie wielomianowym, natomiast
rozstrzygnięcie P = NP nie przesądza o wielomianowej rozwiązywalności wszystkich problemów NP-
trudnych
- jeżeli problem π2 należy do klasy NP, to π2 jest też problemem NP-zupełnym (gdyż wraz z istniejącą
transformacją Turinga spełnia definicję problemu NP-zupełnego).
np. problem komiwojażera, szukanie optymalego drzewa
Pojęcia itp.
* problem decyzyjny – jeśli odpowiedź na pytanie to tak lub nie
* Problem jest trudno rozwiązywalny, jeśli każdy algorytm rozwiązujący ten problem ma złożoność co
najmniej wykładniczą
* Problem jest rozstrzygalny w czasie wielomianowym, jeśli istnieje algorytm A i wielomian f , że A
rozstrzyga L w czasie f
* złożoność - liczbę zasobów niezbędnych do wykonania algorytmu
* złożoność czasowa - liczba operacji podstawowych w zależności od rozmiaru wejścia np. Podstawienie,
porównanie, prosta operacja arytmetyczna.
* złożoność pamięciowa - miarą ilości wykorzystanej pamięci

You might also like