Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "ALGORYTMY I STRUKTURY DANYCH WYKŁAD 01 Wprowadzenie Grażyna Mirkowska PJWSTK, 2003."— Zapis prezentacji:

1

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

3 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie2 Plan wykładu 4 Organizacja wykładu i ćwiczeń z ASD. 4 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.

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

5 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie4 Od problemu do jego rozwiązania Sformułowanie zadania. Rozwiązanie problemu. Przykład: Dany jest ciąg liczb. Znaleźć największą z nich. 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.

6 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie5 Co to jest algorytm? Algorytm to metoda postępowania, która prowadzi do rozwiązania jakiegoś problemu. Algorytm, to skończony ciąg etapów, które pozwalają przekształcić dane informacje wejściowe w informacje wyjściowe. Al-Khowârizmî (Persja, 8-9w.n.e.) Włącz gaz; Zagotuj wodę; Wsyp do szklanki kawę rozpuszczalną; Zalej kawę wrzącą wodą; Dosyp cukru, jeśli lubisz; Poczekaj kilka minut; (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

7 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie6 Algorytm - metoda postępowania Funkcje rekurencyjne, Algorytmy Markova, Maszyny Turinga, Automaty, Wyrażenia regularne Dane Algorytm Wyniki 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 stan pamięci przed wykonaniem algorytmu stan pamięci po wykonaniu algorytmu

8 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie7 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.

9 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie8 Jak porównywać algorytmy? prostota czytelność długość kodu poprawność czas realizacji zajętość pamięci 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.

10 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie9 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.

11 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie10 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) 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. Czasami daje wynik! Zawsze daje daje wynik!

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

13 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie12 Całkowita poprawność algorytmu Powiemy, że algorytm Alg działający w strukturze danych S jest całkowicie poprawny ze względu na specyfikację 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}

14 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie13 Przykład 2 { i:= 1; k := 1; x:=0; while (i n){ x := x + k; k := k + 2; i := i + 1; } return x } Problem: Obliczyć kwadrat liczby naturalnej n. 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

15 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie14 Niezmiennik {i := 1; k := 1; x :=0; while (i n){ x := x + k; k := k + 2; i := i + 1; } return x } k=2i-1, x = j=1..i-1 (2j-1) k= 2i+1 i n+1, k = 2i-1, x = j=1..i-1 (2j-1) x = j=1..i (2j-1) x = j=1..i-1 (2j-1), k=2i-1, i n+1 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.

16 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie15 Przykład 3 P: while abs(b-a)>eps { x := (a+b)/2; if (f(a)*f(x) 0 ) then b := x else a := x fi; } ab x x := (a+b)/2 a := x b := x abs(b-a)>eps f(a)*f(x) 0 START STOP f(a)*f(b) 0, a

17 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie16 Czy algorytm P zatrzymuje się? 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 }} x := (a+b)/2 a := x b := x abs(b-a)>eps f(a)*f(x) 0 START i:=0; STOP TAKNIE b-a= w/2 i > eps b-x = x-a = w/2 i+1 x - a = w/2 i+1 b- x = w/2 i+1 b - a = w/2 i+1 b-a= w/2 i TAK NIE i:= i+1 ab x Dla i = lg (w/eps) mamy b-a eps.

18 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie17 Koszt algorytmu 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.

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

20 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie19 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. Niech D n będzie zbiorem danych rozmiaru n dla pewnego problemu P oraz A algorytmem rozwiązującym problem P. W(Alg,n) = sup {t(Alg,d) : d D n } A(Alg,n) = { p(d) * t(Alg,d) : d D n } Uwaga1.Faktyczny czas wykonania algorytmu jest proporcjonalny do złożoności czasowej. Uwaga2 Czas wykonania algorytmu jest bardziej interesujący dla dużych n niż dla małych.

21 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie20 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). Powiemy, że g jest co najmniej rzędu f wttw ( c>0)( no N)( n>no) c * f(n) g(n). Powiemy, że rzędy funkcji f i g są takie same, wttw g= O(f) i f = O(g).

22 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie21 Porównywanie rzędów funkcji Przykład 1 Niech f(n)=100n, g(n)= 2n+100, h(n) = 0.1 n 2 +n. Mamy f = O(n) f = (n) g= O(n 2 ) g = (n) h = O(n 2 ) = O(n 3 ) h O(n) h = (n) 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). Przykład 2 f(n) = 0.3 n n g(n)= n 3 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).

23 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie22 Porównanie szybkości wzrostu funkcji Powiemy, że algorytm Alg ma złożoność czasową wielomianowąwttw T(Alg,n)= (n ) N wykładnicząwttwT(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) lg n! = i=1..n lg i n lg n lg n

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

25 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie24 Złożoność a rozmiar i czas Jaki jest maksymalny rozmiar problemu, który można rozwiązać w ustalonym czasie, znając złożoność algorytmu? Ile czasu potrzeba na rozwiązanie zadania o ustalonym rozmiarze i złożoności? 1s 1H n3n3 lg nnn lg nn2n2 2n2n * * * * * T(A,n) czas n=10 2 n= 10 4 n3n3 lg nnn lg nn2n2 2n2n 1s 1 dni 6.6 s 13.3 s 0.6ms0.1ms10ms10 6 lat 10ms0.1s100s l T(A,n) wymiar

26 3 marzec 2003G. Mirkowska, ASD_01 Wprowadzenie25 Komputer 1 Komputer 2 n3n3 lg nnn2n2 2n2n s4 2*s4 s1 s1 10 s2s3s5 10*s2 10*s3 ? Czy szybkość może pokonać złożoność? Mamy 5 algorytmów A1, A2, A3, A4, A5 rozwiązujących ten sam problem. Niech s i oznacza maksymalny rozmiar problemu, który można rozwiązać na komputerze 1 przy pomocy algorytmu A i 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? 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+lg10. Czyli x = 3.2 +s5.


Pobierz ppt "ALGORYTMY I STRUKTURY DANYCH WYKŁAD 01 Wprowadzenie Grażyna Mirkowska PJWSTK, 2003."

Podobne prezentacje


Reklamy Google