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
(C) 2003 – 2008 by Kazimierz Jakubczyk

2 Literatura Banachowski L., Diks K., Rytter W.: Algorytmy i struktury danych, WNT, Warszawa 2003 (wyd. 4, pseudo Pascal) Cormen T.H., Leiserson Ch.E., Rivest R.L.: Wprowadzenie do algorytmów, WNT, Warszawa (wyd. 3, pseudo Pascal) Wirth N.: Algorytmy + struktury danych = programy, WNT, Warszawa 2002 (wyd. 6, język Pascal)

3 Literatura - cd. Knuth D.E.: Sztuka programowania , WNT, Warszawa (3 tomy – Algorytmy podstawowe , Sortowanie i wyszukiwanie , Algorytmy seminumeryczne , asembler) Aho A. V., Hopcroft J. E., Ullman J. D.: Algorytmy i struktury danych, Helion, Gliwice 2003 (język Pascal) Aho A.V., Hopcroft J.E., Ullman J.D.: Projektowanie i analiza algorytmów , Helion, Gliwice (pseudo Pascal)

4 Literatura - cd. Drozdek A.: C++. Algorytmy i struktury danych, Helion, Gliwice 2004 Neapolitan R., Naimipour K.: Podstawy algorytmów z przykładami w C++, Helion, Gliwice 2004 Wróblewski P.: Algorytmy, struktury danych i techniki programowania, Helion, Gliwice (wyd. 3, język C++)

5 Literatura - cd. Harel D., Feldman Y.: Rzecz o istocie informatyki. Algorytmika, WNT, Warszawa 2008 (wyd. 4) Sysło M.M.: Algorytmy, WSiP, Warszawa (wyd. 3, opisy w postaci listy kroków, niekiedy Pascal) Jakubczyk K.: Wprowadzenie do algorytmów i struktur danych, Wydawnictwo Politechniki Radomskiej, Radom 2005, 2007 (pseudo Pascal, Delphi)

6 Definicje algorytmu Ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych „produkuje” żądane dane wyjściowe zwane wynikiem działania algorytmu Ciąg kroków obliczeniowych prowadzących do przekształcenia danych wejściowych w wyjściowe Sposób rozwiązania konkretnego problemu obliczeniowego Przepis opisujący krok po kroku postępowanie prowadzące do rozwiązania postawionego problemu

7 Cechy algorytmu Skończoność – algorytm powinien się zawsze zatrzymać po skończonej liczbie kroków Dobre zdefiniowanie – każdy krok algorytmu powinien być opisany precyzyjnie Dane wejściowe – algorytm ma zero lub więcej danych wejściowych (dane) Dane wyjściowe – algorytm generuje jedną lub więcej danych wyjściowych (wynik) Efektywne zdefiniowanie – operacje zawarte w algorytmie powinny być na tyle proste, aby można je było wykonać dokładnie i w skończonym czasie

8 Poprawność algorytmu Algorytm jest poprawny, gdy dla każdego egzemplarza problemu zatrzymuje się i daje dobry wynik, czyli gdy wykonuje postawione przed nim zadanie Algorytm niepoprawny może się nigdy nie zatrzymać albo po zatrzymaniu dać zły wynik Algorytmy numeryczne – problem poprawności numerycznej rozwiązania (błędy zaokrągleń działań na liczbach rzeczywistych)

9 Metody zapisu algorytmów
Opis słowny Lista kroków Tablica decyzyjna Schemat blokowy (sieć działań) Pseudojęzyk Program komputerowy

10 Przykład tablicy decyzyjnej
Możliwe Istniejące Pada deszcz T T N N Warunki Jest zimno T N T N Weź parasol x x Operacje x x Włóż płaszcz Wyjdź z domu x x x x

11 Przykład schematu blokowego
Pada deszcz T Weź parasol N Jest zimno T Włóż płaszcz N Wyjdź z domu

12 Analiza algorytmów Czy dany problem może być rozwiązany na komputerze w dostępnym czasie i pamięci? Który ze znanych algorytmów należy zastosować w danych okolicznościach? Czy istnieje lepszy algorytm od rozważa-nego? A może jest on optymalny? Jak uzasadnić, że stosując dany algorytm, rozwiąże się zamierzone zadanie?

13 Złożoność obliczeniowa
Złożoność obliczeniowa algorytmu – ilość zasobów komputerowych potrzebnych do jego wykonania Zasoby komputerowe – czas wykonania i wielkość zajmowanej pamięci, zależne od rozmiaru danych n Złożoność czasowa Złożoność pamięciowa

14 Rodaje złożoności Złożoność pesymistycna – wielkość zasobów komputerowych przy „najgorszych” danych wejściowych (worst case) Złożoność oczekiwana (średnia) – wielkość zasobów komputerowych przy „typowych” danych wejściowych (avarage case) Operacje dominujące – charakterystyczne dla danego algorytmu operacje (zwykle wykonywane wielokrotnie w zależności od rozmiaru danych wejściowych n) takie, że całość pracy wykonanej przez ten algorytm jest w przybliżeniu proporcjonalna do liczby wykonań tych operacji

15 Notacja asymptotyczna O
c g(n) f(n) n n0 f(n) = O(g(n))

16 Notacja asymptotyczna 
c g(n) f(n) n n0 f(n) =  (g(n))

17 Notacja asymptotyczna 
c2 g(n) c1 g(n) f(n) n n0 f(n) = (g(n))

18 Typowe złożoności czasowe
log n – logarytmiczna n – liniowa n log n – liniowo-logarytmiczna n2 – kwadratowa (wielomianowa stopnia 2) n3 – sześcienna (wielomianowa stopnia 3) 2n – wykładnicza 2n n! – wykładnicza n!

19 No to do analizy algorytmów!


Pobierz ppt "Algorytmy i struktury danych"

Podobne prezentacje


Reklamy Google