• Nie Znaleziono Wyników

ALGORYTMY I STRUKTURY DANYCH

N/A
N/A
Protected

Academic year: 2021

Share "ALGORYTMY I STRUKTURY DANYCH"

Copied!
17
0
0

Pełen tekst

(1)

ALGORYTMY I STRUKTURY DANYCH

WYKŁAD 14 Problemy trudne informatyki Grażyna Mirkowska

PJWSTK ITN, semestr letni 2002

(2)

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

(3)

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.

(4)

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

(5)

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

(6)

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!

4321

Koszt rzędu n!

(7)

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!)

(8)

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?

(9)

Klasyfikacja problemów decyzyjnych

P P -

klasa problemów decyzyjnych rozwiązywalnych w czasie wielomianowym

NP NP

= klasa problemów decyzyjnych, dla których dowód, że podane rozwiązanie (algorytm) jest poprawne można

zweryfikować w czasie wielomianowym.

NP

P

Tzn. rozwiązywalnych przez algorytm niedeterministyczny w czasie

wielomianowym.

(10)

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!)

(11)

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

(12)

Ś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

(13)

P = NP ?

Klasa NPC

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.

Gdyby udowodniono wykładnicze dolne ograniczenie dla jakiegoś problemu klasy NPC, to żądnego z problemów

NPC nie możnaby rozwiązać wielomianowo.

(14)

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.

(15)

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

(16)

Nierozstrzygalność problemu „Stopu”

W

Program

wejś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ść

(17)

Ś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

Cytaty

Powiązane dokumenty

WYKŁAD 08 Drzewa binarnych poszukiwań Grażyna Mirkowska.. PJWSTK, semestr

Zadanie Do zbioru reprezentowanego przez drzewo D dołączyć element e, o ile nie należy on jeszcze do etykiet drzewa D.... Zastosowanie: wyszukiwanie

(3) Jeżeli tak otrzymane drzewo nie jest częściowo uporządkowane, to przechodząc wzdłuż drogi od liścia x do korzenia, poprawić etykiety zamieniając etykietę ojca z

Jeśli element e należy do kolejki q, to po skończonej liczbie usunięć kolejnych elementów minimalnych.. dotrę do tego

takie drzewo &lt;V, T&gt; rozpinające grafu G, że suma kosztów jego krawędzi  eT c (e) jest najmniejsza.. Mirkowska, ASD_12 Algorytmy na

Niech będzie tekst 100000 znakowy, w którym występują tylko litery a,b,c,d,e,f i a-45tys razy, b-13tys., c-12tys.,.. d-16tys., e -

Dowód przez indukcję ze względu na liczbę wywołań rekurencyjnych funkcji min_max.. Dla jednego tylko wywołania

Problem Dany jest ciąg rosnący e[1],..,e[n] oraz element x pewnej przestrzeni liniowo uporządkowanej &lt;E, &gt;. Następnie porównujemy x z kolejnymi elementami ciągu