180 likes | 380 Views
ALGORYTMY I STRUKTURY DANYCH. WYKŁAD 14 Problemy trudne informatyki Grażyna Mirkowska PJWSTK ITN, semestr letni 2002. Plan wykładu. Wieże Hanoi Generowanie permutacji Problem komiwojażera Scieżki Hamiltona (ścieżki Eulera) Problem P= NP.? Problemy NP.-zupełne Rozstrzygalność
E N D
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 14 Problemy trudne informatyki Grażyna Mirkowska PJWSTK ITN, semestr letni 2002
Plan wykładu • Wieże Hanoi • Generowanie permutacji • Problem komiwojażera • Scieżki Hamiltona (ścieżki Eulera) • Problem P= NP.? • Problemy NP.-zupełne • Rozstrzygalność • Nierozstrzygalność Problemu stopu G. Mirkowska, ASD_14 Problemy trudne
Przypomnienie Powiemy, że problem jest wielomianowy, tzn. jest rozwiązywalny w czasie wielomianowym, jeżeli istnieje algorytm rozwiązujący ten problem dla danych rozmiaru n w czasie O(n k), dla pewnego ustalonego k. Powiemy, że problem jest wykładniczy, jeśli każdy algorytm rozwiązujący ten problem dla danych rozmiaru n, ma koszt rzędu k n , dla pewnej stałej k. Wyszukiwanie Sortowanie w tablicySortowanie z użyciem struktur drzewiastych Kompresja danychNajdłuższy wspólny podciąg Najkrótsze ścieżki Przykłady G. Mirkowska, ASD_14 Problemy trudne
A B C Wieże Hanoi Danych jest n krążków, umieszczonych w porządku rosnących średnic, na drążku A. Zadanie polega na przeniesieniu wszystkich krążków na drążek B z wykorzystaniem pomocniczego drążka C (oba drążki B i C są początkowo puste), ale mniejszy krążek musi zawsze leżeć na większym. Problem G. Mirkowska, ASD_14 Problemy trudne
Algorytm Procedure przenies(n, A,B, C);{przenieś n krążków z A na B wykorzystując C}begin if (n<>0) then przenies(n-1, A,C,B); przeloz (A,B); {przełóż jeden krążek z A na B} przenieś(n-1, C, B, A) fi end Koszt wykładniczy KosztT(1) = 1T(n) = T(n-1) +1 +T(n-1) Rozwiązanie : T(n) = 2 n -1 T(64) = 0.5 miliona lat G. Mirkowska, ASD_14 Problemy trudne
Permutacje Dla danej liczby naturalnej n wygenerować wszystkie permutacje liczb {1,2,...,n}. Problem Wywołanie:generuj(0) z now =-1 i tab[i]=0 dla i=1..n daje Procedure generuj(k : integer);var t : integer;begin now := now +1; tab[k] := now; if now =n then wypisz(tab);fi; for t:= 1 to n do if tab[t] = 0 then generuj(t); od; now := now-1; tab[k] := 0;end; 123412431324142313421432 213421433124412331424132 231424133214421334124312 234124313241423134214321 Koszt rzędu n! G. Mirkowska, ASD_14 Problemy trudne
Problemy decyzyjne Problem, którego rozwiązanie ma dawać odpowiedź binarną tak lub nie nazywać będziemy problemem decyzyjnym. Danych jest n kart, na których wydrukowane są kolorowe obrazki. Czy można z nich ułożyć kwadrat tak, by wszystkie obrazki pasowały do siebie kształtem i kolorem? Koszt (n!) Przykład Algorytm naiwny: przeglądamy wszystkie możliwe ułożenia. Odpowiadamy TAK, jeśli jakieś ułożenie jest poprawne, odpowiadamy NIE gdy żadne ułożenie nie było poprawne. G. Mirkowska, ASD_14 Problemy trudne
Pierwsza klasyfikacja Algorytmy wymagające nierozsądnie dużo czasu „Małpia układanka” Ale ... Który z dwóch algorytmów o koszcie (n 100) i (2 n) dla małych n, jest lepszy? Algorytmy rozsądne Algorytmy sortowania Algorytmy wyszukiwania Kompresja danych G. Mirkowska, ASD_14 Problemy trudne
NP P Klasyfikacja problemów decyzyjnych P - klasa problemów decyzyjnych rozwiązywalnych w czasie wielomianowym NP = klasa problemów decyzyjnych, dla których dowód, że podane rozwiązanie (algorytm) jest poprawne można zweryfikować w czasie wielomianowym. Tzn. rozwiązywalnych przez algorytm niedeterministyczny w czasie wielomianowym. G. Mirkowska, ASD_14 Problemy trudne
6 3 8 4 9 10 4 3 5 7 7 Problem komiwojażera Zadanie komiwojażera polega na odwiedzeniu wszystkich miast z danego zbioru i powrót do punktu wyjścia, tak by pokonana droga była najkrótsza. Algorytm naiwny :wygenerować wszystkie możliwe cykle. Problem NP Koszt (n!) Koszt=28 W wersji decyzyjnej Czy dla danego k istnieje cykl przechodzący przez wszystkie wierzchołki danego grafu taki, że suma kosztów jego krawędzi nie przekracza k. G. Mirkowska, ASD_14 Problemy trudne
p q r 1 0 1 v: Problem spełnialności Spełnialność Język Semantyka ((p q) r) ((p q) r) (v) = 1 Problem Czy dla danej formuły istnieje wartościowanie, które spełnia tę formułę? Koszt : 2 n dla formuły o długości n RozwiązanieMetoda zero-jedynkowa Ale ... G. Mirkowska, ASD_14 Problemy trudne
Ścieżki Hamiltona Czy w danym niezorientowanym grafie istnieje ścieżka przechodząca przez każdy wierzchołek dokładnie raz? Nie ma ścieżki Hamiltona Istnieje ścieżka Hamiltona Euler Algorytm naiwny : sprawdzić wszystkie ścieżki. Koszt (n!) G. Mirkowska, ASD_14 Problemy trudne
P = NP ? Gdyby udowodniono wykładnicze dolne ograniczenie dla jakiegoś problemu klasy NPC, to żądnego z problemów NPC nie możnaby rozwiązać wielomianowo. Klasa NPC = problemy NP-zupełne Problem p jest NP-zupełny, jeśli 1. należy do klasy NP i 2. każdy inny problem z tej klasy jest wielomianowo redukowalny do p. Gdyby istniało wielomianowe rozwiązanie dla jakiegokolwiek problemu z klasy NPC, to istniałby wielomianowy algorytm dla wszystkich innych problemów tej klasy. G. Mirkowska, ASD_14 Problemy trudne
f wielomianowo Wszystko albo nic redukcja Problem p Problem p’ Dane do problemu p Dane do problemu p’ Odpowiedzią dla danych x jest TAK Odpowiedzią dla danych f(x) jest TAK wttw Problem ścieżek Hamiltona redukuje się do problemu komiwojażera. Twierdzenie. Gdyby jakiś NP-zupełny problem należał do klasy P, to P = NP. G. Mirkowska, ASD_14 Problemy trudne
Rozstrzygalność i nierozstrzygalność Powiemy, że problem jest rozstrzygalny, jeśli istnieje algorytm, który dla dowolnych danych x po skończonej liczbie kroków daje rozwiązanie problemu. W przeciwnym przypadku problem jest nierozstrzygalny Dany jest dowolny algorytm i dane do tego algorytmu. Pytamy, czy ten algorytm kończy obliczenia dla tych danych czy nie? TwierdzenieProblem stopu jest nierozstrzygalny (halting problem). Problem Czy istnieje algorytm Q, który dla dowolnego algorytmu A napisanego w pewnym ustalonym języku programowania i dla ustalonych danych x, po skończonej liczbie kroków odpowiada na pytanie czy A zapętla się dla danych x czy nie. G. Mirkowska, ASD_14 Problemy trudne
Nierozstrzygalność problemu „Stopu” W S Program wejściowy Program S S S W W Hipotetyczny program Q dla problemy stopu Odpowiada Tak, gdy program dany zatrzymuje się i Nie jeśli program ma nieskończoną pętlę Q Sprzeczność TAK(stop) NIE (pętla) Sprzeczność wyjście G. Mirkowska, ASD_14 Problemy trudne
Ścieżki Eulera Dla danego grafu niezorientowanego zbadać czy istnieje ścieżka Eulera, tzn. Droga lub cykl w grafie przechodzący przez każdą krawędź i to tylko raz. KosztO(m), gdzie m jest liczbą krawędzi grafu Nie istnieje ścieżka Eulera. Istnieje ścieżka Eulera. Algorytm 1. Zbadać czy graf jest spójny2. Zbadać, czy graf wszystkie, z wyjątkiem co najwyżej dwóch wierzchołków, mają rząd parzysty. G. Mirkowska, ASD_14 Problemy trudne