asd14

advertisement
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
Download