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 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 2 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. Wyszukiwanie Sortowanie w tablicy Sortowanie z użyciem struktur drzewiastych Kompresja danych Najdłuższy wspólny podciąg 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. Najkrótsze ścieżki 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 3 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. A 19 czerwca 2002 B G. Mirkowska, ASD_14 Problemy trudne C 4 Algorytm Procedure przenies(n, A,B, C); {przenieś n krążków z A na B wykorzystując C} begin Koszt if (n<>0) then wykładniczy 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 Rozwiązanie : T(n) = 2 n -1 19 czerwca 2002 Koszt T(1) = 1 T(n) = T(n-1) +1 +T(n-1) T(64) = 0.5 miliona lat G. Mirkowska, ASD_14 Problemy trudne 5 Permutacje Dla danej liczby naturalnej n wygenerować wszystkie permutacje liczb {1,2,...,n}. Wywołanie:generuj(0) Procedure generuj(k : integer); z now =-1 i tab[i]=0 var t : integer; dla i=1..n daje begin now := now +1; tab[k] := now; 1234 if now =n then wypisz(tab);fi; 2134 1243 for t:= 1 to n do 2143 2314 1324 if tab[t] = 0 then generuj(t); 3124 2413 2341 1423 od; 4123 3214 2431 1342 now := now-1; tab[k] := 0; 3142 4213 3241 1432 end; 4132 3412 4231 4312 3421 Koszt rzędu n! 4321 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 6 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 Koszt (n!) kształtem i kolorem? 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. 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 7 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 19 czerwca 2002 Kompresja danych Algorytmy wyszukiwania G. Mirkowska, ASD_14 Problemy trudne 8 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. P Tzn. rozwiązywalnych przez algorytm niedeterministyczny w czasie wielomianowym. 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 9 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. 6 3 9 8 4 3 5 Koszt=28 7 4 7 10 Algorytm naiwny : wygenerować wszystkie możliwe cykle. Koszt (n!) 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. 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 10 Problem spełnialności Język ((p q) r) Problem v: p q r 1 0 1 ((p q) r) (v) = 1 Czy dla danej formuły istnieje wartościowanie, które spełnia tę formułę? Rozwiązanie Metoda zero-jedynkowa 19 czerwca 2002 Spełnialność Semantyka Koszt : 2 n dla formuły o długości n G. Mirkowska, ASD_14 Problemy trudne 11 Ś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 Algorytm naiwny : sprawdzić wszystkie ścieżki. 19 czerwca 2002 Istnieje ścieżka Hamiltona Koszt (n!) G. Mirkowska, ASD_14 Problemy trudne Euler 12 P = NP ? Klasa NPC = problemy NP-zupełne Gdyby udowodniono wykładnicze dolne ograniczenie dla jakiegoś problemu klasy NPC, to żądnego z problemów NPC nie możnaby rozwiązać wielomianowo. 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. 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 13 Wszystko albo nic Problem p redukcja f Dane do problemu p wielomianowo Odpowiedzią dla danych x jest TAK wttw Problem p’ Dane do problemu p’ Odpowiedzią dla danych f(x) jest TAK 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. 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 14 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. Dany jest dowolny algorytm i dane do tego algorytmu. Pytamy, czy ten algorytm kończy obliczenia dla tych danych czy nie? W przeciwnym przypadku problem Twierdzenie jest nierozstrzygalny Problem stopu jest nierozstrzygalny (halting 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. 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 15 Nierozstrzygalność problemu „Stopu” S W Program S S W Program wejściowy S 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 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne 16 Ś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. Koszt O(m), Nie istnieje ścieżka Eulera. Istnieje ścieżka Eulera. 1. Zbadać czy graf jest spójny 2. Zbadać, czy graf wszystkie, z wyjątkiem co najwyżej dwóch wierzchołków, mają rząd parzysty. 19 czerwca 2002 G. Mirkowska, ASD_14 Problemy trudne gdzie m jest liczbą krawędzi grafu 17