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
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 Najkrótsze ścieżki
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.
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 B C
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 Koszt
T(1) = 1
T(n) = T(n-1) +1 +T(n-1)
Rozwiązanie Rozwiązanie :
T(n) = 2
n-1 T(64) = 0.5 miliona lat
Koszt Koszt
wykładniczy
wykładniczy
Permutacje
Dla danej liczby naturalnej n wygenerować wszystkie permutacje liczb {1,2,...,n}.
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;
Wywołanie:generuj(0) z now =-1 i tab[i]=0 dla i=1..n daje
1234 1243 1324 1423 1342 1432
2134 2143 3124 4123 3142 4132
2314 2413 3214 4213 3412 4312
2341 2431 3241 4231 3421
Koszt rzędu n!
4321Koszt rzędu n!
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?
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.
Koszt Koszt (n!) (n!)
Pierwsza klasyfikacja
Algorytmy rozsądne
Algorytmy wymagające nierozsądnie dużo czasu
Algorytmy
sortowania Algorytmy
wyszukiwania Kompresja
danych
„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?
Klasyfikacja problemów decyzyjnych
P P -
klasa problemów decyzyjnych rozwiązywalnych w czasie wielomianowymNP NP
= klasa problemów decyzyjnych, dla których dowód, że podane rozwiązanie (algorytm) jest poprawne możnazweryfikować w czasie wielomianowym.
NP
P
Tzn. rozwiązywalnych przez algorytm niedeterministyczny w czasie
wielomianowym.
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.
W wersji decyzyjnej
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.6
4
7 9 8
3
4 3
5 7
10
Koszt=28
Algorytm naiwny :
wygenerować wszystkie możliwe cykle.
Koszt (n!)
Problem spełnialności
Rozwiązanie Rozwiązanie
Metoda zero-jedynkowa
Problem
Problem Czy dla danej formuły istnieje wartościowanie, które spełnia tę formułę?
Język Semantyka Spełnialność
((p q) r) p q r
1 0 1
v: ((p q) r) (v) = 1
Koszt : 2 n
dla formuły o długości n
Ś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 Algorytm naiwny :
sprawdzić wszystkie ścieżki.
Koszt
(n!) Euler
P = NP ?
Klasa NPC
Klasa NPC
= problemy NP-zupełneProblem 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.
Gdyby udowodniono wykładnicze dolne ograniczenie dla jakiegoś problemu klasy NPC, to żądnego z problemów
NPC nie możnaby rozwiązać wielomianowo.
Wszystko albo nic
Twierdzenie.
Twierdzenie.
Gdyby jakiś NP-zupełny problem należał do klasy P, to P = NP.Problem p
redukcja
Problem p’wielomianowo
f
Odpowiedzią dla
danych x jest TAK wttw Odpowiedzią dla danych f(x) jest TAK Dane do
problemu p
Dane do problemu p’
Problem ścieżek Hamiltona redukuje się do problemu komiwojażera.
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
Twierdzenie Twierdzenie
Problem stopu jest nierozstrzygalny (halting problem).
Dany jest dowolny
algorytm i dane do tego algorytmu. Pytamy, czy ten algorytm kończy
obliczenia dla tych danych czy nie?
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
Nierozstrzygalność problemu „Stopu”
W
Programwejściowy
W W
Q
TAK (stop)
NIE (pętla)
Hipotetyczny program Q dla problemy stopu Odpowiada Tak, gdy program dany
zatrzymuje się i Nie jeśli program ma nieskończoną pętlę
wyjście
Program S S
S S
Sprzeczność
Sprzeczność
Ś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.
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.
Koszt Koszt O(m), O(m),
gdzie m jest liczbą krawędzi grafu