Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ALGORYTMY I STRUKTURY DANYCH

Podobne prezentacje


Prezentacja na temat: "ALGORYTMY I STRUKTURY DANYCH"— Zapis prezentacji:

1 ALGORYTMY I STRUKTURY DANYCH
WYKŁAD 01 Wprowadzenie Grażyna Mirkowska PJWSTK, 2003

2 G. Mirkowska, ASD_01 Wprowadzenie
Plan wykładu Organizacja wykładu i ćwiczeń z ASD. Cel wykładu. Zapoznanie studentów z podstawowym zestawem algorytmów realizujących zadania typu wyszukiwanie, sortowanie, oraz z najczęściej wykorzystywanymi strukturami danych: stosami, kolejkami, słownikami, kolejkami priorytetowymi i drzewami. Przedstawione zostaną również zasadnicze problemy algorytmiki związane z analizą poprawności i kosztu algorytmów. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

3 O czym będzie mowa w tym wykładzie?
Jak formułować (specyfikować) zadania i algorytmy? Jak porównywać algorytmy? Co to jest struktura danych? Jak weryfikować algorytm (program)? Czy zawsze można znaleźć lepsze rozwiązanie? Czy zawsze istnieje algorytm rozwiązujący dany problem? 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

4 Od problemu do jego rozwiązania
Specyfikacja problemu Niech max ma wartość równą pierwszemu elementowi ciągu. Porównaj max z kolejnymi elementami ciągu i jeśli spotkasz wartość większą, przyjmij ją jako nową wartość max. Sformułowanie zadania. ALGORYTM Przykład: Dany jest ciąg liczb. Znaleźć największą z nich. Rozwiązanie problemu. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

5 G. Mirkowska, ASD_01 Wprowadzenie
Co to jest algorytm? Al-Khowârizmî (Persja, 8-9w.n.e.) (Euklides) Dopóki x różne od y wykonuj: Jeżeli x>y, to odejmij y od x i wynik podstaw na x; W przeciwnym przypadku od y odejmij x i wynik podstaw na y; koniec dopóki wynikiem jest y Algorytm to metoda postępowania, która prowadzi do rozwiązania jakiegoś problemu. Włącz gaz; Zagotuj wodę; Wsyp do szklanki kawę rozpuszczalną; Zalej kawę wrzącą wodą; Dosyp cukru, jeśli lubisz; Poczekaj kilka minut; Algorytm, to skończony ciąg etapów, które pozwalają przekształcić dane informacje wejściowe w informacje wyjściowe. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

6 Algorytm - metoda postępowania
Funkcje rekurencyjne, Algorytmy Markova, Maszyny Turinga, Automaty, Wyrażenia regularne stan pamięci po wykonaniu algorytmu stan pamięci przed wykonaniem algorytmu Dane Algorytm Wyniki Opowiedz trochę o idei związanej z funkcjami rekurencyjnymi algorytmami Markova itd.. Teza Churcha Wszystkie pojęcia algorytmu są sobie równoważne. Przykład dla algorytmu Euklidesa Dane x =21, y =12. (x,y) (21,12) (9,12) (9,3) (6,3) (3,3) Wynik 3 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

7 Jak zapisywać algorytmy?
Najczęściej formułujemy zadania i problemy w języku naturalnym, ale język naturalny nie jest dostatecznie precyzyjny. Konstrukcje programotwórcze: if test then {Instrukcje} else{Instrukcje} fi while test do{Instrukcje}od begin {Instrukcja1}; ...{Instrukcja n-ta;} end x := wyrażenie algebraiczne; Instrukcja warunkowa Instrukcja pętli. Instrukcja złożona. Instrukcja przypisania. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

8 Jak porównywać algorytmy?
Kryteria Idealny algorytm to taki, który ma prosty kod, jest napisany w ogólnie dostępnym języku programowania, łatwo go zrozumieć, liczy szybko, nie wymaga dużo miejsca w pamięci i zawsze daje poprawne wyniki. prostota czytelność długość kodu poprawność czas realizacji zajętość pamięci 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

9 Co to jest struktura danych?
Sformułowanie problemu algorytmicznego wymaga zwykle określenia środowiska, którego problem dotyczy. Problem „ Znaleźć największy element w danym ciągu” wymaga określenia czym są elementy (np.. Liczbami, zbiorami, dokumentami) i jak się je porównuje. Algorytm, który ma realizować pewną metodę rozwiązania problemu musi znać to środowisko i móc się nim posługiwać. Strukturą danych będziemy nazywali system relacyjny, którego uniwersum określa wartości zmiennych i a operacje i relacje dostarczają narzędzi do realizacji algorytmu. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

10 G. Mirkowska, ASD_01 Wprowadzenie
Przykład1 while (x y) { if x >y then x := x – y else y := y – x fi } return x Jeśli rozważymy ten algorytm w strukturze liczb całkowitych podając jako początkowe wartości x=a i y=b, to algorytm zwróci jako wynik nwd(a,b) Zawsze daje daje wynik! Uwaga Czasami daje wynik! Jeśli rozważymy ten algorytm w strukturze, której uniwersum składa się z odcinków na prostej, relacja > pozwala porównać długości odcinków, natomiast operacja – daje w wyniku różnicę odcinków, to algorytm zwraca jako wynik najdłuższy odcinek, który mieści się całkowitą ilość razy w danych początkowo odcinkach. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

11 G. Mirkowska, ASD_01 Wprowadzenie
Poprawność algorytmu Intuicyjnie, poprawność = zgodność z zamierzeniami. Specyfikacją algorytmu nazywać będziemy parę warunków (własności) Specyfikacja < wp , wk > Warunek początkowy Warunek końcowy {wp} Alg {wk} Może wspomnieć tez o notacji algorytmicznej Algorytm Alg działający w strukturze danych S jest częściowo poprawny ze względu na specyfikację <wp, wk> wttw dla wszystkich danych spełniających warunek początkowy, jeżeli algorytm zatrzyma się, to uzyskane wyniki spełniają warunek końcowy. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

12 Całkowita poprawność algorytmu
wp wk Alg Powiemy, że algorytm Alg działający w strukturze danych S jest całkowicie poprawny ze względu na specyfikację <wp,wk> wttw dla wszystkich danych w strukturze S spełniających warunek początkowy wp, algorytm zatrzymuje się i daje wyniki spełniające warunek końcowy wk. S |= {wp}  Alg{wk} 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

13 G. Mirkowska, ASD_01 Wprowadzenie
Przykład 2 Problem: Obliczyć kwadrat liczby naturalnej n. { i:= 1; k := 1; x:=0; while (i n){ x := x + k; k := k + 2; i := i + 1; } return x } Specyfikacja: warunek początkowy: nN, n>0 warunek końcowy: x jest kwadratem liczby n. Algorytm jest całkowicie poprawny w strukturze liczb naturalnych Twierdzenie 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

14 G. Mirkowska, ASD_01 Wprowadzenie
Niezmiennik {i := 1; k := 1; x :=0; while (i n){ x := x + k; k := k + 2; i := i + 1; } return x } Niezmiennikiem pętli nazywać będziemy własność (formułę), która jeśli jest prawdziwa na początku wykonania pętli, to jest również prawdziwa po wykonaniu treści pętli. k=2i-1, x = S j=1..i-1 (2j-1) x = S j=1..i (2j-1) k= 2i+1 x = S j=1..i-1 (2j-1), k=2i-1, i  n+1 niezmiennik i  n+1, k = 2i-1, x = S j=1..i-1 (2j-1) 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

15 G. Mirkowska, ASD_01 Wprowadzenie
Przykład 3 f(a)*f(b)< 0, eps>0 , a<b START f(a)*f(b)  0 abs(b-a)>eps P: while abs(b-a)>eps { x := (a+b)/2; if (f(a)*f(x)  0 ) then b := x else a := x fi; } NIE TAK Niezmiennik :f(a)*f(b) 0, x := (a+b)/2 STOP f(a)*f(b)  0, b-x = x-a f(a)*f(x)  0 NIE TAK f(a)*f(x)  0 f(x)*f(b)  0 a b x b := x a := x f(a)*f(b)  0 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

16 Czy algorytm P zatrzymuje się?
START i:=0; P:{ i:= 0; while abs(b-a)>eps { x := (a+b)/2; if f(a)*f(x)  0 then b := x else a := x fi; i := i+1 }} b-a= w/2i abs(b-a)>eps TAK NIE b-a= w/2i > eps STOP i:= i+1 x := (a+b)/2 b-x = x-a = w/2 i+1 f(a)*f(x)  0 NIE TAK x - a = w/2 i+1 b- x = w/2 i+1 Dla i = lg (w/eps) mamy b-a  eps. b := x a := x x b - a = w/2 i+1 a b 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

17 G. Mirkowska, ASD_01 Wprowadzenie
Koszt algorytmu pamięć i czas Miary kosztu: Liczba instrukcji liczba operacji arytmetycznych liczba wywołań procedury Liczba zmiennych ilość miejsca potrzebna dla danych Ogólnie: wybór miary zależy od typu problemu, rodzaju rozwiązania. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

18 G. Mirkowska, ASD_01 Wprowadzenie
Przykłady Problem Operacja dominująca Mnożenie macierzy Operacje + , * Wyszukiwanie elementu w tablicy porównywanie Sortowanie Mając dany algorytm, konkretne środowisko i konkretne dane możemy policzyć liczbę operacji dominujących. t (Alg, d) Koszt algorytmu dla danych d: algorytm dane 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

19 Złożoność czasowa algorytmu
Definicja Złożoność czasowa to liczba operacji dominujących (podstawowych) wykonanych przez algorytm w czasie jego realizacji, wyrażona jako funkcja rozmiaru danych. T(Alg,n) Niech Dn będzie zbiorem danych rozmiaru n dla pewnego problemu P oraz A algorytmem rozwiązującym problem P. Uwaga1.Faktyczny czas wykonania algorytmu jest proporcjonalny do złożoności czasowej. W(Alg,n) = sup {t(Alg,d) : d Dn} złożoność pesymistyczna Uwaga2 Czas wykonania algorytmu jest bardziej interesujący dla dużych n niż dla małych. A(Alg,n) = S{ p(d) * t(Alg,d) : d Dn} złożoność średnia 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

20 Notacja asymptotyczna
Niech f , g : N  R+. Powiemy, że g jest co najwyżej rzędu f wttw (c>0)(noN)(n>no) g(n)  c f(n). g = O (f ) g =  (f ) Powiemy, że g jest co najmniej rzędu f wttw (c>0)(noN)(n>no) c*f(n)  g(n). g =  (f ) Powiemy, że rzędy funkcji f i g są takie same, wttw g= O(f) i f = O(g). 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

21 Porównywanie rzędów funkcji
Przykład 1 Niech f(n)=100n, g(n)= 2n+100, h(n) = 0.1 n2 +n. Mamy f = O(n) f = (n) g= O(n2) g = (n) h = O(n2) = O(n3 ) h O(n) h =  (n) Przykład 2 f(n) = 0.3 n3 + 10n g(n)= n3 h(n) = log n lim n f(n)/g(n)= 0.3 Czyli f = (g) lim f(n)/h(n) = +  Czyli h = O(f), h  (f). Lemat (O porównywaniu rzędów funkcji) Niech lim n f(n)/g(n) = c. Wtedy 1. Jeżeli c  0 to f i g są tego samego rzędu. 2. Jeżeli c= 0, to f = O(g) oraz f   (g). 3. Jeżeli c = + , to f ma rząd większy niż g, g = O(f) i g  (f). 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

22 Porównanie szybkości wzrostu funkcji
Powiemy, że algorytm Alg ma złożoność czasową wielomianową wttw T(Alg,n)= (n a) a N wykładniczą wttw T(Alg,n) = (a n) a  R+ liniową wttw T(Alg,n)= (n) kwadratową wttw T(Alg,n)= (n 2) logarytmiczną wttw T(Alg,n)= (lg n) A co to za funkcja lg n!? lg n lg n! = S i=1..n lg i  n lg n 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

23 G. Mirkowska, ASD_01 Wprowadzenie
f(n) =0.25 n2 f(n) = 2n f(n)=n f(n)= log n Porównanie szybkości wzrostu funkcji 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

24 Złożoność a rozmiar i czas
Ile czasu potrzeba na rozwiązanie zadania o ustalonym rozmiarze i złożoności? n=102 n= 104 n3 lg n n n lg n n2 2n 1s 11dni 6.6ms 13.3 ms 0.6ms 0.1ms 10ms 106lat 0.1s 100s 10100 l T(A,n) wymiar Jaki jest maksymalny rozmiar problemu, który można rozwiązać w ustalonym czasie, znając złożoność algorytmu? 1s 1H n3 lg n n n lg n n2 2n 102 15* 102 63*103 106 103 19 36*108 13* 107 60* 103 31 T(A,n) czas 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie

25 Czy szybkość może pokonać złożoność?
Mamy 5 algorytmów A1, A2, A3, A4, A5 rozwiązujących ten sam problem. Niech si oznacza maksymalny rozmiar problemu, który można rozwiązać na komputerze 1 przy pomocy algorytmu Ai w ustalonym czasie t. Jaki jest maksymalny rozmiar problemu, który można rozwiązać w tym samym czasie t na komputerze 10 razy szybszym? Komputer 1 Komputer 2 n3 lg n n n2 2n s4 2*s4 s1 s1 10 s2 s3 s5 10*s2 10*s3 ? Przykład A5. Dla komputera 1: T(A5,s5)=2 s5 = t Dla komputera 2 : T(A5,s5)= 2 s5 = t /10. Szukamy takiego x, że T(A5,x)= t. Mamy więc 2 x = 10* 2 s5 = 2 s5+lg Czyli x = 3.2 +s5. 3 marzec 2003 G. Mirkowska, ASD_01 Wprowadzenie


Pobierz ppt "ALGORYTMY I STRUKTURY DANYCH"

Podobne prezentacje


Reklamy Google