Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałEgidiusz Drężek Został zmieniony 11 lat temu
1
Zadania obliczeniowe, algorytmy i złożoność obliczeniowa
Wstęp do Informatyki, część 2
2
Przeszukiwanie listy nieuporządkowanej
Zapisy (records), umieszczone w przypadkowej kolejności pole klucza 1 2 3 ... i N 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’ J. Mieścicki, Wstęp do Informatyki, część 2
3
Przeszukiwanie listy nieuporządkowanej
Dowolne liczby całkowite, umieszczone w przypadkowej kolejności, w kolejno ponumerowanych komórkach 1 31 2 15 3 ... i 7 N 25 ? zadana liczba (‘klucz’) 7 Zadanie: Czy jest wśród nich zadana liczba (np.‘7’), Jeśli tak – wypisz numer komórki, Jeśli nie – napisz ‘nie ma’ 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. 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) J. Mieścicki, Wstęp do Informatyki, część 2
6
Przeszukiwanie listy nieuporządkowanej
Czas wykonania Zależność czasu wykonania od rozmiaru danych (N) jest liniowa, Mówi się, że złożoność obliczeniowa (czasowa) jest O(N). | | | N J. Mieścicki, Wstęp do Informatyki, część 2
7
Przeszukiwanie listy nieuporządkowanej - ulepszenie
start start Dopisz K jako L(N+1) i := 0 i := 0 i := i+1 i := i+1 Pisz ‘nie ma’ i > N tak nie L(i)== K tak nie i > N stop tak Pisz ‘nie ma’ nie L(i)== K tak nie Pisz i Pisz i stop stop stop J. Mieścicki, Wstęp do Informatyki, część 2
8
Przeszukiwanie listy nieuporządkowanej
| | | 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). J. Mieścicki, Wstęp do Informatyki, część 2
9
Przeszukiwanie listy uporządkowanej
Liczby całkowite, umieszczone w kolejno ponumerowanych komórkach uporządkowane ‘narastająco’. 1 3 2 4 22 35 5 157 6 209 7 1489 N=8 2500 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’ J. Mieścicki, Wstęp do Informatyki, część 2
10
Przeszukiwanie listy uporządkowanej
1 3 2 4 22 35 5 157 6 209 7 1489 N=8 2500 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’. J. Mieścicki, Wstęp do Informatyki, część 2
11
Przeszukiwanie listy uporządkowanej
1 3 2 4 22 35 5 157 6 209 7 1489 N=8 2500 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. 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). Czas B O(N) O(log N) < O(N), ponieważ istnieje takie N*, że dla każdego N > N* czas wykonania TA < TB , ... choć dla pewnego zakresu N może być odwrotnie A O(log N) N* N J. Mieścicki, Wstęp do Informatyki, część 2
13
1 3 5 6 2 4 G1 G2 1 2 3 4 6 5 Porównywanie grafów
Czy G1 jest izomorficzny z G2 ? J. Mieścicki, Wstęp do Informatyki, część 2
14
1 3 5 6 2 4 G1 G2 1 4 3 2 6 5 Porównywanie grafów
Czy G1 jest izomorficzny z G2 ? J. Mieścicki, Wstęp do Informatyki, część 2
15
J. Mieścicki, Wstęp do Informatyki, część 2
Porównywanie grafów G1 do 1 2 3 4 5 6 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 ) J. Mieścicki, Wstęp do Informatyki, część 2
16
Problem komiwojażera (traveling salesman p.)
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. 383 343 W 647 P 303 279 524 R J. Mieścicki, Wstęp do Informatyki, część 2
17
J. Mieścicki, Wstęp do Informatyki, część 2
Problem komiwojażera W G P W R 343 303 383 647 279 524 G P R P R G R G P R P R G P G W 6 tras do porównania J. Mieścicki, Wstęp do Informatyki, część 2
18
J. Mieścicki, Wstęp do Informatyki, część 2
Problem komiwojażera Najkrótsza: WGPRW (lub WRPGW) ma 1529 km, Najdłuższa: WGRPW (lub WPRGW) ma 1817 km. G P W R 343 303 383 647 279 524 J. Mieścicki, Wstęp do Informatyki, część 2
19
Dla N = 4: Problem komiwojażera W G P R P R G R G P W W W W W W
4*3*2*1 = N ! = 24 trasy do porównania J. Mieścicki, Wstęp do Informatyki, część 2
20
J. Mieścicki, Wstęp do Informatyki, część 2
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 106 tras na sekundę. 1 doba = s, 1 rok = s, Przy tym założeniu: J. Mieścicki, Wstęp do Informatyki, część 2
21
J. Mieścicki, Wstęp do Informatyki, część 2
Problem komiwojażera N Czas 4 s 9 0.36 s 10 3.6 s 12 8 min 14 > 1 doba 15 > 2 tygodnie 17 ~ 11 lat 18 ~ 200 lat 20 lat Eksplozja wykładnicza J. Mieścicki, Wstęp do Informatyki, część 2
22
Program, ale czy algorytm ? (Problem Collatza)
begin 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; Wprowadź X tak X==1 end nie X parzyste nie tak X:=X/2 X:=3X+1 J. Mieścicki, Wstęp do Informatyki, część 2
23
‘Superprogram’ oceniający własność stopu ?
start Dowolny program P Wczytaj P ? Można udowodnić, że zadanie zbudowania programu określającego własność stopu dowolnego programu jest nierealizowalne. Stop 1 Stop2 Tak, P ma własność stopu Nie, P nie ma własności stopu J. Mieścicki, Wstęp do Informatyki, część 2
24
Klasy złożoności obliczeniowej (czasowej)
Nieobliczalne (nierozstrzygalne) Przeszukiwanie listy nieuporządkowanej O(N), Przeszukiwanie listy uporządkowanej O(log N), Sortowanie O(N log N), Porównywanie grafów O(N2) Wieże Hanoi O(2N), Problem komiwojażera O(N!), Problem budowy uniwersalnego programu badającego własność stopu – w ogóle nierozstrzygalny Złożoność wykładnicza O(kN) ‘trudne’ O(N k), złożoność wielomianowa lub lepsza obliczeniowo ‘łatwe’ J. Mieścicki, Wstęp do Informatyki, część 2
25
.... O(kNN ) ‘trudne’ ... O(N!) O(2N) ---------- O(N10) O(N2) O(N)
Luka algorytmiczna Dla pewnego problemu obliczeniowego: .... O(kNN ) ... O(N!) O(2N) O(N10) O(N2) O(N) O(logN) ‘trudne’ Znany algorytm ‘Odkrywanie’ nowych algorytmów Górne ograniczenie Luka algorytmiczna ‘łatwe’ Dolne ograniczenie Nowe dowody matematyczne Formalny dowód (że nie może być lepiej) 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) .... J. Mieścicki, Wstęp do Informatyki, część 2
27
Klasa problemów NP-zupełnych (NPC)
.... O(kNN ) ... O(N!) O(2N) O(N10) O(N2) O(N) O(logN) ‘trudne’ NPC Górne ograniczenie ‘łatwe’ Ogromna luka algorytmiczna ? Dolne ograniczenie – nie znane J. Mieścicki, Wstęp do Informatyki, część 2
28
J. Mieścicki, Wstęp do Informatyki, część 2
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ń, J. Mieścicki, Wstęp do Informatyki, część 2
29
J. Mieścicki, Wstęp do Informatyki, część 2
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 ? J. Mieścicki, Wstęp do Informatyki, część 2
30
Przykłady problemów NP: problem plecakowy
Plecak N rzeczy do zapakowania Zadanie: tak poukładać rzeczy w plecaku, żeby zostało w nim jak najwięcej wolnego (niewykorzystanego) miejsca. Problem jest NP. J. Mieścicki, Wstęp do Informatyki, część 2
31
Układanie rozkładu zajęć
Wykłady, laboratoria, ćwiczenia do ‘poukładania’ Plan tygodnia ... plus kryterium (kryteria) celu ... plus więzy (ograniczenia) J. Mieścicki, Wstęp do Informatyki, część 2
32
J. Mieścicki, Wstęp do Informatyki, część 2
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: 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(N2), Dla K = 4 rozwiązanie natychmiastowe (zawsze ‘tak’), Dla K = 3 problem jest NP. J. Mieścicki, Wstęp do Informatyki, część 2
34
Przykłady problemów NP: kolorowanie grafu
1 3 5 6 2 4 7 ? 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. J. Mieścicki, Wstęp do Informatyki, część 2
35
Przykłady problemów NP: kolorowanie grafu
... Udało się ! 1 2 3 4 5 6 7 Ż C Zi 1 2 3 4 7 6 5 I tak dalej, 37 = KN możliwości do przejrzenia J. Mieścicki, Wstęp do Informatyki, część 2
36
J. Mieścicki, Wstęp do Informatyki, część 2
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 ... 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 343 303 383 647 279 524 J. Mieścicki, Wstęp do Informatyki, część 2
38
Dekompozycja na pod-zadania (divide and conquer)
Zadanie A Top-down Pod-zadanie A1 Pod-zadanie A2 Pod-zadanie A1.1 Pod-zadanie A1.2 Bottom-up J. Mieścicki, Wstęp do Informatyki, część 2
39
Rozwiązywanie problemu komiwojażera metodą ‘top-down’
Żoliborz Grochów Centrum Gocławek Ochota Mokotów J. Mieścicki, Wstęp do Informatyki, część 2
40
Rozwiązywanie problemu komiwojażera metodą ‘top-down’
wyznaczenia trasy Wyznacz trasę między dzielnicami Wyznacz trasę wewnątrz Mokotowa Wyznacz trasę wewnątrz Gocławka .... J. Mieścicki, Wstęp do Informatyki, część 2
41
Możliwe heurystyczne rozwiązanie problemu komiwojażera
G Znane rozwiązanie dla 4 miast, Dochodzi piąte (B) Podejście ‘konserwatywne’: ‘jak najmniej zmian’ B 383 343 W 647 303 P 279 524 R 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: G i M=merge(G, D) M j D k J. Mieścicki, Wstęp do Informatyki, część 2
43
Rekurencja: sortowanie ze scalaniem (merge sort)
Function m = sort (lista); 1 Oblicz d = długość lista; nie tak d == 1 Podziel lista na listaD, listaG; 2 D = sort (listaD); G = sort (listaG); Zwróć m = lista; 5 3 Zwróć m = merge(D, G); 4 J. Mieścicki, Wstęp do Informatyki, część 2
44
Rekurencyjne wykonanie sortowania ze scalaniem
3, 1, 7, 5 3 d=1 ... sort(3) sort(1) merge 3, 1 3 1 d=1 ... sort(3,1) sort(7,5) merge 1 1, 3 7, 5 5 d=1 ... sort(5) sort(7) merge 5, 7 5 7 1, 3, 5, 7 d=1 7 J. Mieścicki, Wstęp do Informatyki, część 2
45
Rekurencyjne wykonanie sortowania ze scalaniem
1 4 2 3 1 4 1 4 2 3 2 3 1 5 1 5 1 5 1 5 J. Mieścicki, Wstęp do Informatyki, część 2
46
Zasada rekurencyjnego wykonania procedury (funkcji)
J. Mieścicki, Wstęp do Informatyki, część 2
47
J. Mieścicki, Wstęp do Informatyki, część 2
Wieże Hanoi A B C N krążków 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. J. Mieścicki, Wstęp do Informatyki, część 2
48
A B C akt pom doc Wieże Hanoi
Przenieś N=2 krążki, akt = A, doc = C, pom = B; A B C akt pom doc J. Mieścicki, Wstęp do Informatyki, część 2
49
Rekurencyjne rozwiązanie problemu wież Hanoi
Końcowa zawartość prętów A, B, C Początkowa zawartość prętów A, B, C Liczba krążków do przeniesienia Procedure [A, B, C] = hanoi([A, B, C], n, akt, pom, doc); 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]’ 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); [A, B, C] = hanoi([A, B, C], n-1, pom, akt, doc); end; J. Mieścicki, Wstęp do Informatyki, część 2
51
J. Mieścicki, Wstęp do Informatyki, część 2
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(2N). J. Mieścicki, Wstęp do Informatyki, część 2
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.