Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Dr inż. Jerzy Mieścicki Instytut Informatyki PW Wstęp do Informatyki, część 2 Zadania obliczeniowe, algorytmy i złożoność obliczeniowa.

Podobne prezentacje


Prezentacja na temat: "Dr inż. Jerzy Mieścicki Instytut Informatyki PW Wstęp do Informatyki, część 2 Zadania obliczeniowe, algorytmy i złożoność obliczeniowa."— Zapis prezentacji:

1 Dr inż. Jerzy Mieścicki Instytut Informatyki PW Wstęp do Informatyki, część 2 Zadania obliczeniowe, algorytmy i złożoność obliczeniowa

2 J. Mieścicki, Wstęp do Informatyki, część 2 2 Przeszukiwanie listy nieuporządkowanej i N Zapisy (records), umieszczone w przypadkowej kolejności pole klucza zadany klucz Zadanie: Czy wśród N rekordów jest taki R(i), w którym zawartość wskazanego pola jest zgodna z zadanym kluczem, Jeśli tak – odczytaj ten R(i), Jeśli nie – napisz nie ma

3 J. Mieścicki, Wstęp do Informatyki, część 2 3 Przeszukiwanie listy nieuporządkowanej i 7 N 25 Dowolne liczby całkowite, umieszczone w przypadkowej kolejności, w kolejno ponumerowanych komórkach Zadanie: Czy jest wśród nich zadana liczba (np.7), Jeśli tak – wypisz numer komórki, Jeśli nie – napisz nie ma zadana liczba (klucz) 7 ?

4 J. Mieścicki, Wstęp do Informatyki, część 2 4 Przeszukiwanie listy nieuporządkowanej start i := 0 i := i+1 i > N L(i)== K Pisz nie ma Pisz i stop tak nie Dane: L[1:N] – wektor liczb całkowitych, L(i) – liczba na i-tej pozycji, N, K, i - liczby całkowite, K – klucz, i – indeks przeszukiwania.

5 J. Mieścicki, Wstęp do Informatyki, część 2 5 Przeszukiwanie listy nieuporządkowanej start i := 0 i := i+1 i > N L(i)== K Pisz nie ma Pisz i stop tak nie Czynności jednorazowe (inicjalizacja, edycja wyników itp.) Czynności wykonywane wielokrotnie, (w najgorszym przypadku N razy)

6 J. Mieścicki, Wstęp do Informatyki, część 2 6 Przeszukiwanie listy nieuporządkowanej N | | | Czas wykonania Zależność czasu wykonania od rozmiaru danych (N) jest liniowa, Mówi się, że złożoność obliczeniowa (czasowa) jest O(N).

7 J. Mieścicki, Wstęp do Informatyki, część 2 7 Przeszukiwanie listy nieuporządkowanej - ulepszenie start i := 0 i := i+1 i > N L(i)== K Pisz i stop tak nie Pisz nie ma stop start i := 0 Dopisz K jako L(N+1) L(i)== K i := i+1 i > N Pisz nie ma stop Pisz i stop tak nie

8 J. Mieścicki, Wstęp do Informatyki, część 2 8 Przeszukiwanie listy nieuporządkowanej N | | | Czas wykonania Alg. 1 Alg. 1a W obu przypadkach zależność czasu wykonania od rozmiaru danych (N) jest liniowa, Oba algorytmy mają taką samą złożoność obliczeniową: O(N).

9 J. Mieścicki, Wstęp do Informatyki, część 2 9 Przeszukiwanie listy uporządkowanej N= Liczby całkowite, umieszczone w kolejno ponumerowanych komórkach uporządkowane narastająco. Zadanie to samo: Czy jest wśród nich zadana liczba (np.7), Jeśli tak – wypisz numer komórki, Jeśli nie – napisz nie ma

10 J. Mieścicki, Wstęp do Informatyki, część 2 10 Przeszukiwanie listy uporządkowanej N= Oba algorytmy przeszukiwania listy nieuporządkowanej działałyby również w tym przypadku, Ale tu można zastosować lepszy pomysł: dzielenia na połowy.

11 J. Mieścicki, Wstęp do Informatyki, część 2 11 Przeszukiwanie listy uporządkowanej N= Niech np. zadana liczba K = 7 przygraniczna L(5) = 157 > K, więc nie ma czego szukać w dolnej połowie, Powtórzmy całe rozumowanie dla górnej połowy.

12 J. Mieścicki, Wstęp do Informatyki, część 2 12 Przeszukiwanie listy uporządkowanej Dwukrotne zwiększenie N (np. z 8 do 16, z 16 do 32 itd.) dodaje jeden krok do algorytmu dzielenia na połowy, Algorytm ten ma więc złożoność O(log N). 0 1 N Czas O(N)O(N) O(log N) N* O(log N) N* czas wykonania T A < T B,... choć dla pewnego zakresu N może być odwrotnie A B

13 J. Mieścicki, Wstęp do Informatyki, część 2 13 Porównywanie grafów G1G G2G2 Czy G 1 jest izomorficzny z G 2 ?

14 J. Mieścicki, Wstęp do Informatyki, część 2 14 Porównywanie grafów G1G G2G2 Czy G 1 jest izomorficzny z G 2 ?

15 J. Mieścicki, Wstęp do Informatyki, część 2 15 Porównywanie grafów G1G1 do od Potrzebne jest porównanie dwóch takich tabel, Gdy N jest liczbą węzłów, liczba porównań jest proporcjonalna do N 2, Zatem złożoność O(N 2 )

16 J. Mieścicki, Wstęp do Informatyki, część 2 16 Problem komiwojażera (traveling salesman p.) G P W R Problem: znaleźć najkrótszą trasę od W z powrotem do W, odwiedzającą (jednokrotnie) wszystkie N=3 miasta. Inaczej: znaleźć najkrótszy cykl w zadanym grafie.

17 J. Mieścicki, Wstęp do Informatyki, część 2 17 Problem komiwojażera G P W R WWWWWW W G GG P PP R R R 6 tras do porównania RR PP GG

18 J. Mieścicki, Wstęp do Informatyki, część 2 18 Problem komiwojażera G P W R Najkrótsza: WGPRW (lub WRPGW) ma 1529 km, Najdłuższa: WGRPW (lub WPRGW) ma 1817 km.

19 J. Mieścicki, Wstęp do Informatyki, część 2 19 Problem komiwojażera W G GG P PP R R R Dla N = 4: WWWWWW 4*3*2*1 = N ! = 24 trasy do porównania

20 J. Mieścicki, Wstęp do Informatyki, część 2 20 Problem komiwojażera Złożoność obliczeniowa O(N!), Ogromna liczba stosunkowo prostych obliczeń, Załóżmy dla wsparcia wyobraźni, że pewien komputer wylicza i porównuje 10 6 tras na sekundę. 1 doba = s, 1 rok = s, Przy tym założeniu:

21 J. Mieścicki, Wstęp do Informatyki, część 2 21 Problem komiwojażera NCzas s s s 128 min 14> 1 doba 15> 2 tygodnie 17~ 11 lat 18~ 200 lat lat Eksplozja wykładnicza

22 J. Mieścicki, Wstęp do Informatyki, część 2 22 Program, ale czy algorytm ? (Problem Collatza) X – liczba całkowita większa od zera; begin; while ~ (X = = 1); if X parzyste then X := X/2 elseif X nieparzyste then X:= 3*X+1; endif; endwhile; end; begin Wprowadź X X==1 X parzyste X:=X/2X:=3X+1 end tak nie

23 J. Mieścicki, Wstęp do Informatyki, część 2 23 Superprogram oceniający własność stopu ? Dowolny program P Dowolny program P start Stop 1Stop2 ? ? Wczytaj P Tak, P ma własność stopu Nie, P nie ma własności stopu Można udowodnić, że zadanie zbudowania programu określającego własność stopu dowolnego programu jest nierealizowalne.

24 J. Mieścicki, Wstęp do Informatyki, część 2 24 Klasy złożoności obliczeniowej (czasowej) Przeszukiwanie listy nieuporządkowanej O(N), Przeszukiwanie listy uporządkowanej O(log N), Sortowanie O(N log N), Porównywanie grafów O(N 2 ) Wieże Hanoi O(2 N ), Problem komiwojażera O(N!), Problem budowy uniwersalnego programu badającego własność stopu – w ogóle nierozstrzygalny obliczeniowo łatwe trudne Nieobliczalne (nierozstrzygalne) O(N k ), złożoność wielomianowa lub lepsza Złożoność wykładnicza O(k N )

25 J. Mieścicki, Wstęp do Informatyki, część 2 25 Luka algorytmiczna.... O(k N N )... O(N!) O(2 N ) O(N 10 ).... O(N 2 ) O(N) O(logN).... łatwe trudne Górne ograniczenie Dla pewnego problemu obliczeniowego: Formalny dowód (że nie może być lepiej) Znany algorytm Dolne ograniczenie Luka algorytmiczna Odkrywanie nowych algorytmów Nowe dowody matematyczne

26 J. Mieścicki, Wstęp do Informatyki, część 2 26 Problemy algorytmicznie zamknięte Jeśli luka algorytmiczna nie istnieje – problem jest algorytmicznie zamknięty. Algorytmicznie zamknięte są na przykład: Przeszukiwanie listy nieuporządkowanej: udowodniono, że złożoność nie może być lepsza, niż O(N), znany jest algorytm o złożoności O(N). Sortowanie, O(N logN)....

27 J. Mieścicki, Wstęp do Informatyki, część 2 27 Klasa problemów NP-zupełnych (NPC) trudne łatwe.... O(k N N )... O(N!) O(2 N ) O(N 10 ).... O(N 2 ) O(N) O(logN).... NPC Górne ograniczenie Dolne ograniczenie – nie znane ? Ogromna luka algorytmiczna

28 J. Mieścicki, Wstęp do Informatyki, część 2 28 Klasa problemów NPC NPC – od Nondeterministically Polynomial Complete, Każdy problem jest (jako całość) obliczeniowo trudny, Rozwiązanie polega z zasady na wykonaniu ogromnej liczby łatwych obliczeń, każde o wielomianowej (polynomial) złożoności O(N k ), Kolejność ich wykonywania nie jest określona (t.zn. jest niedeterministyczna); W zależności od przypadku (lub szczęścia) rezultat można otrzymać równie dobrze już w pierwszym, jak dopiero w ostatnim kroku obliczeń,

29 J. Mieścicki, Wstęp do Informatyki, część 2 29 Klasa problemów NPC Klasa NPC jest zupełna (complete) w tym sensie, że należące do niej problemy są wzajemnie powiązane za pomocą redukcji, znalezienie rozwiązania wielomianowego dla choćby jednego z problemów oznaczałoby wciągnięcie wszystkich problemów NP do klasy problemów łatwych (wielomianowych, P), i odwrotnie, udowodnienie dla choćby jednego problemu istnienia dolnej granicy powyżej złożoności wielomianowej oznaczałoby wciągnięcie wszystkich problemów NP do klasy problemów trudnych, Czy NP = P ?

30 J. Mieścicki, Wstęp do Informatyki, część 2 30 Przykłady problemów NP: problem plecakowy Zadanie: tak poukładać rzeczy w plecaku, żeby zostało w nim jak najwięcej wolnego (niewykorzystanego) miejsca. Problem jest NP. Plecak N rzeczy do zapakowania

31 J. Mieścicki, Wstęp do Informatyki, część 2 31 Układanie rozkładu zajęć Plan tygodnia Wykłady, laboratoria, ćwiczenia do poukładania... plus kryterium (kryteria) celu... plus więzy (ograniczenia)

32 J. Mieścicki, Wstęp do Informatyki, część 2 32 Pojęcie redukcji Układanie rozkładu zajęć sprowadza się (redukuje się) do problemu plecakowego, Istnieje redukcja przekształcająca problem układania rozkładu zajęć w problem plecakowy. Algorytm o złożoności O(N k ) przeliczający dane A na dane B cel A na cel B Problem B Problem A Redukcja A do B:

33 J. Mieścicki, Wstęp do Informatyki, część 2 33 Przykłady problemów NP: kolorowanie mapy Dana jest mapa N państw oraz K kolorów, N > 1, K < N, Zadanie polega na stwierdzeniu (tak – nie), czy daną mapę można pokolorować K kolorami w taki sposób, by sąsiadujące państwa się zawsze różniły kolorem. Dla K = 1 rozwiązanie natychmiastowe (nie), Dla K = 2: Tak – jedynie gdy w każdym węźle zbiega się parzysta liczba krawędzi, Zatem złożoność O(N 2 ), Dla K = 4 rozwiązanie natychmiastowe (zawsze tak), Dla K = 3 problem jest NP.

34 J. Mieścicki, Wstęp do Informatyki, część 2 34 Przykłady problemów NP: kolorowanie grafu Dany jest graf o N wierzchołkach oraz K kolorów (K < N), Zadanie: rozstrzygnąć (tak- nie), czy da się pokolorować wierzchołki danego grafu tak, by żadne dwa wierzchołki połączone krawędzią nie były tego samego koloru, Dla 2 < K < N problem jest NP ?

35 J. Mieścicki, Wstęp do Informatyki, część 2 35 Przykłady problemów NP: kolorowanie grafu Udało się ! ŻŻŻŻŻŻŻ ŻŻŻŻŻŻC ŻŻŻŻŻŻZi I tak dalej, 3 7 = K N możliwości do przejrzenia

36 J. Mieścicki, Wstęp do Informatyki, część 2 36 Metody algorytmiczne Algorytmy zachłanne (greedy) Podział na pod-zadania (divide and conquer) Rozwiązywanie metodą top-down i bottom-up Algorytmy rekurencyjne Algorytmy iteracyjne Programowanie dynamiczne.... Algorytmy heurystyczne Algorytmy probabilistyczne Algorytmy ewolucyjne i genetyczne Sieci neuronowe...

37 J. Mieścicki, Wstęp do Informatyki, część 2 37 Algorytmy zachłanne (greedy) Zachłanne rozwiązanie problemu komiwojażera: Dla początku w W, rozwiązanie zachłanne jest takie samo, jak optymalne (1529 km) Dla początku w P, otrzymana (zachłanna) trasa ma 1642 km (a najdłuższa trasa ma 1817 km) G P W R

38 J. Mieścicki, Wstęp do Informatyki, część 2 38 Dekompozycja na pod-zadania (divide and conquer) Zadanie A Pod-zadanie A1 Pod-zadanie A1 Pod-zadanie A2 Pod-zadanie A2 Pod-zadanie A1.1 Pod-zadanie A1.1 Pod-zadanie A1.2 Pod-zadanie A1.2 Top-down Bottom-up

39 J. Mieścicki, Wstęp do Informatyki, część 2 39 Rozwiązywanie problemu komiwojażera metodą top-down Żoliborz Centrum Ochota Mokotów Grochów Gocławek

40 J. Mieścicki, Wstęp do Informatyki, część 2 40 Rozwiązywanie problemu komiwojażera metodą top-down Problem wyznaczenia trasy Problem wyznaczenia trasy Wyznacz trasę między dzielnicami Wyznacz trasę między dzielnicami Wyznacz trasę wewnątrz Mokotowa Wyznacz trasę wewnątrz Mokotowa Wyznacz trasę wewnątrz Gocławka Wyznacz trasę wewnątrz Gocławka....

41 J. Mieścicki, Wstęp do Informatyki, część 2 41 Możliwe heurystyczne rozwiązanie problemu komiwojażera G P W R B Znane rozwiązanie dla 4 miast, Dochodzi piąte (B) Podejście konserwatywne: jak najmniej zmian

42 J. Mieścicki, Wstęp do Informatyki, część 2 42 Rekurencja: sortowanie ze scalaniem (merge sort) Sortowanie: porządkowanie listy nieuporządkowanej, Najpierw: operacja scalania (merging) dwóch list uporządkowanych: M G D M=merge(G, D) i j k

43 J. Mieścicki, Wstęp do Informatyki, część 2 43 Rekurencja: sortowanie ze scalaniem (merge sort) Function m = sort (lista); Oblicz d = długość lista; d == 1 Podziel lista na listaD, listaG; Podziel lista na listaD, listaG; D = sort (listaD); G = sort (listaG); D = sort (listaD); G = sort (listaG); Zwróć m = merge(D, G); Zwróć m = merge(D, G); Zwróć m = lista; tak nie

44 J. Mieścicki, Wstęp do Informatyki, część 2 44 Rekurencyjne wykonanie sortowania ze scalaniem 3, 1, 7, 5... sort(3,1) sort(7,5) merge... sort(3,1) sort(7,5) merge... sort(3) sort(1) merge... sort(3) sort(1) merge d= sort(5) sort(7) merge... sort(5) sort(7) merge d= , 5 3, 1 1, 3, 5, 7 5, 7 1, 3

45 J. Mieścicki, Wstęp do Informatyki, część 2 45 Rekurencyjne wykonanie sortowania ze scalaniem

46 J. Mieścicki, Wstęp do Informatyki, część 2 46 Zasada rekurencyjnego wykonania procedury (funkcji)

47 J. Mieścicki, Wstęp do Informatyki, część 2 47 Wieże Hanoi Zadanie: Przełożyć wszystkie krążki z patyka A na C (korzystając przy tym z pomocniczego B), Wolno brać jeden krążek na raz, Nie wolno kłaść większego krążka na mniejszym. N krążków A B C

48 J. Mieścicki, Wstęp do Informatyki, część 2 48 Wieże Hanoi Przenieś N=2 krążki, akt = A, doc = C, pom = B; aktpomdoc A B C

49 J. Mieścicki, Wstęp do Informatyki, część 2 49 Rekurencyjne rozwiązanie problemu wież Hanoi Procedure [A, B, C] = hanoi([A, B, C], n, akt, pom, doc); Początkowa zawartość prętów A, B, C Końcowa zawartość prętów A, B, C Liczba krążków do przeniesienia Nazwa pręta aktualnego Nazwa pręta pomocniczego Nazwa pręta docelowego Np. [A, B, C] = hanoi([A, B, C], 5, A, B, C); oznacza: w zadanym zbiorze prętów [A, B, C] przenieś 5 górnych krążków z A na C, korzystając pomocniczo z B i zwróć nową zawartość [A, B, C]

50 J. Mieścicki, Wstęp do Informatyki, część 2 50 Rekurencyjne rozwiązanie problemu wież Hanoi Procedure [A, B, C] = hanoi([A, B, C], n, akt, pom, doc); If n==2 then Przenieś górny krążek z akt na pom; Przenieś górny krążek z akt na doc; Przenieś górny krążęk z pom na doc; elseif n>2; [A, B, C] = hanoi([A, B, C], n-1, akt, doc, pom); Przenieś górny krążek z akt na doc; [A, B, C] = hanoi([A, B, C], n-1, pom, akt, doc); end;

51 J. Mieścicki, Wstęp do Informatyki, część 2 51 Wieże Hanoi Zadanie to jest często używane jako przykład obrazujący zasadę rekurencyjnego wykonania procedury, Zaletą jest zwartość i estetyczne walory kodu programu, Jednak wykonanie zadania dla N krążków oznacza dwukrotne wykonanie tego samego zadania dla (N-1) krążków (plus coś jeszcze), Złożoność jest więc O(2 N ).


Pobierz ppt "Dr inż. Jerzy Mieścicki Instytut Informatyki PW Wstęp do Informatyki, część 2 Zadania obliczeniowe, algorytmy i złożoność obliczeniowa."

Podobne prezentacje


Reklamy Google