You are on page 1of 19

Podstawy analizy algorytmw

Podstawy analizy algorytmw

Wprowadzenie do teorii NP-zupenoci


1. Problemy wielomianowe: Mnoenie macierzy O(n2.367) Sortowanie (nlogn) Badanie planarnoci grafw (n) Badanie spjnoci grafw (m+n)

2. Problemy niewielomianowe: Generowanie permutacji (n!) Ukadanie krkw w wieach z Hanoi (2n)

3. Problemy przypuszczalnie niewielomianowe: Faktoryzacja Kolorowanie grafw Problem komiwojaera

Podstawy analizy algorytmw

Problem NP (niedeterministycznie wielomianowy) naley do klasy problemw decyzyjnych, rozwizywanych w czasie wielomianowym. Rwnowana definicja mwi, e problem jest w klasie NP, jeli moe by rozwizany w wielomianowym czasie na niedeterministycznej maszynie Turinga, lub e problem moe by rozwizany w czasie wielomianowym lecz za pomoc algorytmu wykorzystujcego ide wyroczni. Problem P to problem decyzyjny, dla ktrego rozwizanie mona znale w czasie wielomianowym. Rnica pomidzy problemami P i NP polega na tym, e w przypadku P znalezienie rozwizania ma mie zoono wielomianow, podczas gdy dla NP sprawdzenie podanego z zewntrz rozwizania ma mie tak zoono.

Podstawy analizy algorytmw

Jak wida, pojcie wielomianu odegrao istotn rol w zdefiniowaniu problemw klasy P i NP. Dlaczego akurat wielomiany wybrano jako podstaw tej klasyfikacji?? 1. Jeli problem nie naley do klasy P, to jest bardzo trudno rozwiza go efektywnie w praktyce. Zatem kady problem nie bdcy w P jest praktycznie niewielomianowy. 2. Wielomiany posiadaj do przyjemne wasnoci, np. algorytm rozwizujcy zoony problem moe by kombinacj pewnych procedur wielomianowych. Zoono takiego skomplikowanego algorytmu moe by podyktowana sum lub iloczynem zoonoci jego podprogramw. Wielomiany maj wasno domknicia, tzn. jeli p1(n) i p2(n) s wielomianami, to ich suma jest wielomianem, iloczyn jest wielomianem oraz p1(p2(n)) te jest wielomianem. Zatem dowolny algorytm zbudowany z procedur wielomianowych jest rwnie wielomianowy.

Podstawy analizy algorytmw

3. Taka definicja klasy P jest niezalena od formalnego modelu oblicze. We wszystkich realistycznych modelach oblicze, jeli problem jest wielomianowo ograniczony w jednym modelu, to jest rwnie ograniczony wielomianowo we wszystkich pozostaych modelach.

Podstawy analizy algorytmw

Algorytm niedeterministyczny
Jeli dopucimy do tego, e wyjcie pewnych operacji nie jest jednoznacznie okrelone, lecz naley do pewnego zbioru moliwoci, to otrzymamy pojcie algorytmu niedeterministycznego. Bardziej formalnie, definiujemy 3 nowe operacje: choice(S) wybiera jeden z elementw zbioru S failure koczy wtek i wysya sygna fiaska success koczy wszystkie wtki i wysya sygna sukcesu Kada z tych operacji wykonuje si w czasie O(1).

Podstawy analizy algorytmw

Podstawy analizy algorytmw

Przykad problemu NP Czy jakikolwiek podzbir zadanego zbioru (np. {-2,6,-3,72,10,-11}) sumuje si do zera ? ? ? Trudno znale rozwizanie tego zagadnienia w czasie wielomianowym. Nasuwajcy si algorytm sprawdzenia wszystkich moliwych podzbiorw ma zoono wykadnicz O(2n) ze wzgldu na liczebno zbioru n. Nie wiadomo zatem, czy problem ten jest klasy P. Na pewno natomiast uzyskawszy z zewntrz kandydata na rozwizanie (np. {-2,6,-3,10,-11}) moemy w liniowym (a zatem wielomianowym) czasie sprawdzi, czy sumuje si do zera. Jest to zatem problem z klasy NP.

Podstawy analizy algorytmw

W szczeglnoci wszystkie problemy klasy P s w NP, poniewa mona je sprawdzi w czasie wielomianowym. Innymi sowy, klasa P zawiera si nieostro w NP (P NP). Nie wiadomo natomiast, czy istnieje problem w NP, ktry nie jest w klasie P (czyli, czy P rni si od NP, lub inaczej P NP albo P NP). Innymi sowy powstaje pytanie czy

? P = NP
Jest to jedno z wielkich nierozwizanych zagadnie wspczesnej informatyki.

Podstawy analizy algorytmw

Podstawy analizy algorytmw

Problem NP NP-zupeny czyli problem zupeny w klasie NP ze wzgldu na redukcje wielomianowe, to problem, ktry naley do klasy NP oraz dowolny inny problem nalecy do NP moe by do niego zredukowany w czasie wielomianowym.

Podstawy analizy algorytmw

Przypumy, e chcemy rozwiza problem 1, ale mamy gotowy algorytm dla problemu 2. Przypumy te, e znamy funkcj T, ktra bierze na wejciu dane x dla 1 i zwraca T(x), wejcie dla 2 takie, e odpowied dla 1 dla x jest TAK, wtedy i tylko wtedy, gdy odpowied dla 2 na T(x) jest rwnie TAK. Wtedy poprzez kombinacj T i algorytmu dla 2 otrzymujemy algorytm dla 1.

Redukcja problemu 1 do problemu 2.

Podstawy analizy algorytmw

Redukcja - przykad Niech problemem 1 bdzie: Dane s dwie liczby cakowite (j, k), 1 < j < k; czy j jest dzielnikiem k?. Niech 2 bdzie: Dany jest cig 2 liczb; czy ten cig jest rosncy? Niech T(x) = (l1, l2), gdzie l2 = 1 i l1 = 0, jeli j|k i l1 > 1 w przeciwnym przypadku. Oczywicie algorytm do rozwizania 2, kiedy zastosujemy dla (l1, l2), rozwizuje 1 dla (j, k). Dany jest nastpujcy algorytm do obliczenia funkcji T: begin read(j, k); l1 := k mod j; l2 := 1; print(l1, l2) end;

Podstawy analizy algorytmw

Problem 1 jest wielomianowo redukowalny lub redukowalny do 2, jeli istnieje wielomianowa transformacja z 1 do 2. Notacja 1 2 jest wykorzystywana do wskazania, e 1 jest redukowalny do 2. Istotne jest, e 2 jest przynajmniej tak samo trudny do rozwizania jak 1.

Jeli 1 2 i 2 P, to 1 jest w klasie P

Podstawy analizy algorytmw

Problem jest NP-zupeny, jeli jest w klasie NP i dla kadego innego problemu 1 w klasie NP mamy 1 .

Jeli jakikolwiek problem NP-zupeny jest w klasie P, to P = NP.

Podstawy analizy algorytmw

Koniunkcyjna posta normalna dowolnej formuy logicznej to rwnowana jej formua zapisana w postaci koniunkcji alternatyw (iloczynu sum).

Q = ( x1 + x 2 + x3 )( x 2 + x3 )( x1 + x 2 + x3 )

Podstawy analizy algorytmw

SPENIALNO jest nastpujcym problemem decyzyjnym: Czy istnieje takie przypisanie wartoci ze zbioru {0,1} do poszczeglnych zmiennych logicznych, e cao wyraenia przyjmuje warto 1? SPENIALNO CNF jest problemem SPENIALNOCI dla formu CNF. Problem spenialnoci formu zdaniowych (problem SAT) by pierwszym problemem, ktrego NP-zupeno wykazano. Udowodni to w 1971 roku Stephen Cook.

Podstawy analizy algorytmw

procedure SAT; begin for i := 1 to n do xi := choice(true, false); if CNF jest true then success else failure end;

} O(n) } O(n)

KONIEC

You might also like