ALGORYTMY I STRUKTURY DANYCH wykład 1 wprowadzenie, struktury sterujace, projektowanie algorytmów dr hab. inż. Andrzej Obuchowicz, prof. UZ Instytut Sterowania i Systemów Informatycznych UZ p. 425 A2 tel. 322373 e-mail: A.Obuchowicz@issi.uz.zgora.pl http:/www.issi.uz.zgora.pl
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 1/20 Plan wykładu wprowadzenie, struktury sterujace, projektowanie algorytmów; elementarne struktury danych; sortowanie wewnętrzne; sortowanie zewnętrzne; tablice z haszowaniem, wyszukiwanie wzorca w tekście; rekurencja, zbiory, relacje, grafy;
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 2/20 Plan wykładu, c.d. drzewa przeszukiwań binarnych i czerwono-czarne; kopce, B-drzewa; algorytmy teorio-liczbowe; algorytmy teorio-grafowe; geometria obliczeniowa; wybrane algorytmy numeryczne.
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 3/20 Literatura Adamski T., Ogrodzki J. Algorytmy komputerowe i struktury danych, Warszawa : Oficyna Wydawnicza Politechniki Warszawskiej, 2005; Aho A.V., Hopcroft J.E., Ullman J.D. Algorytmy i struktury danych, Gliwice : Helion 2003; Banachowski L., Diks K., Rytter W. Algorytmy i struktury danych, Warszawa: WNT 1996; Cormen T.H., Leiserson C.E., Rivest R.L. Wprowadzenie do algorytmów, Warszawa: WNT 1997; Harris S., Ross J. Od podstaw algorytmy, Gliwice: Helion 2006;
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 4/20 Kotowski P. Algorytmy + struktury danych = abstrakcyjne typy danych, Warszawa : Wyd. BTC 2006; Neapolitan R., Naimipour K. Podstawy algorytmów z przykładami w C++, Gliwice: Helion 2004; Stephens R. Algorytmy i struktury danych stosowane w Delphi 3, 4 i 5 z przykładami w Delphi, Gliwice : Helion, 2000; Wirth N. Algorytmy + struktury danych = programy, Warszawa : WNT 2002; Wróblewski P. Algorytmy, struktury danych i języki programowania, Gliwice: Helion 1997.
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 5/20 Problem algorytmiczny Opis wszystkich poprawnych danych wejœciowych Opis oczekiwanych wyników jako funkcji danych wejœciowych
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 6/20 Przykłady sformułowania problemów problem sortowania Dane: tablica (a 1, a 2,...,a n ) o n elementach typu porzadkowego; Szukane: tablica o tych samych elementach ale uporzadkowana niemalejaco. problem komiwojażera TSP (ang. Travelling Salesman Problem) Dane: n miast, odległości pomiędzy miastami (d ij i, j = 1, 2,...,n); Szukane: trasa komiwojażera przez wszystkie miasta (ale tylko jedna wizyta w każdym mieście permutacja miast) o najmniejszej sumie odległości.
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 7/20 Algorytm Dowolne poprawne dane wejœciowe Algorytm - rozwi¹zanie problemu algorytmicznego Oczekiwane wyniki
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ /20 Własności algorytmu OPERACJE PODSTAWOWE KA DY KROK JEDNOZNACZNIE I PRECYZYJNIE ZDEFINIOWANY KA DY MO LIWY PRZYPADEK PRZEWIDZIANY ALGORYTM MO E KORZYSTAÆ Z DANYCH WEJŒCIOWYCH PROWADZI DO JEDNEGO LUB WIÊCEJ DANYCH WYJŒCIOWYCH ROZWI ZANIE ZAWSZE OSI GNIÊTE I TO W SKOÑCZONEJ LICZBIE KROKÓW WSKAZANA W ASNOŒÆ OGÓLNOŒCI
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 9/20 Przykład algorytmu sortowanie babelkowe 24 24 12 14 26 69 46 12 14 24 26 26 69 46 69 12 24 14 26 69 46 14 46 24 12 14 24 26 46 69 14 12 14 24 26 46 69 12 12 14 24 26 46 69 12 14 24 26 46 69 12 14 24 26 46 69 12 14 24 26 46 69
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 10/20 Struktury sterujace bezpośrednie następstwo; wybór warunkowy; iteracja ograniczona; iteracja warunkowa (nieograniczona); instrukcja skoku.
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 11/20 Bezpośrednie następstwo Instrukcja A Instrukcja B Wykonaj A, a potem B
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 12/20 Wybór warunkowy T W N T W N Instrukcja A Instrukcja A Instrukcja B Je eli spe³niony jest warunek W to wykonaj A Je eli spe³niony jest warunek W to wykonaj A, w przeciwnym wypadku wykonaj B
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 13/20 Iteracja ograniczona k=kmin k>kmax N Instrukcja A T Dla k od kmin do kmax wykonuj A k=inc(k)
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 14/20 Iteracja warunkowa (nieograniczona) W N Instrukcja A T Instrukcja A N W T Dopóki spe³niony jest warunek W wykonuj A (while W do A) Wykonuj A dopóki nie zostanie spe³niony warunek W (repeat A until W)
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 15/20 Algorytm sortowania babelkowego 1. wykonaj co następuje n 1 razy: (a) wskaż pierwszy element; (b) wykonaj co następuje n 1 razy: i. porównaj wskazany element z elementem następnym; ii. jeśli porównane elementy sa w niewłaściwej kolejności, zamień je miejscami; iii. wskaż następny element.
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 16/20 Schemat blokowy algorytmu babelkowego START n,(a[i] i=1,...,n) i=1 i>n-1 T n,(a[i] i=1,...,n) i=i+1 N j=i STOP T j>n-1 N a(j)> a(j+1) T x=a(j+1) a(j+1)=a(j) a(j)=x N j=j+1
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 17/20 Przykłady metod układania algorytmów metoda dziel i zwyciężaj : problem rozmiaru n dzielimy na podproblemy mniejszych rozmiarów, w taki sposób, że z ich rozwiazań wynika rozwiazanie zasadnicze; programowanie dynamiczne: poprawia powyższa metodę w sytuacjach, kiedy wymaga wielokrotnego liczenia rozwiazań tych samych problemów; metoda zachłanna: w przypadku poszukiwania najlepszego rozwiazania spośród znacznej liczby (wykładniczej) możliwych realizacji, staramy się uporzadkować proces poszukiwania tak, aby w sensownym czasie znaleść możliwie najlepsze rozwiazanie (niekoniecznie optymalne).
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 1/20 Przykład metody dziel i zwyciężaj : BS Acki Backi Cacki Dacki Ecki Fecki Gecki Hecki Icki Kicki Licki Micki Nicki Ecki=Ecki Ecki<Fecki Ecki>Dacki Ecki<Gecki
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 19/20 Przykład programowania dynamicznego: ( ) n k 5 4 3 2 0 3 1 2 2 4 3 1 1 0 1 1 2 1 0 1 2 2 2 1 1 3 2 1 0 1 2 3 3 3 2 2 1 1 1 n k = n 1 k + n 1 k 1, n 0 = 1, n n = 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 1 1 1 1 1 2 3 4 5 2 2 2 2 3 4 5 3 3 3
AiSD wykład 1 dr hab. inż. A. Obuchowicz, prof. UZ 20/20 Przykład metody zachlannej: problem plecakowy Problem: Dany jest zbiór n elementów S = (s i, c i, w i ) n i=1, gdzie każdy element s i posiada swoja wartość c i i wagę w i. Należy zapakować plecak o maksymalnej nośności W (tzn. powyżej tej wagi podrze się) elementami ze zbioru S, tak aby wartość zawartości plecaka była jak największa. Możliwe strategie: przeglad wszystkich możliwych realizacji (jest ich 2 n ); najpierw najwartościowsze; najpierw najlżejsze; najpierw o najwyższym stosunku c i w i.