Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Algorytmy i struktury danych (C) 2003 – 2008 by Kazimierz Jakubczyk.

Podobne prezentacje


Prezentacja na temat: "Algorytmy i struktury danych (C) 2003 – 2008 by Kazimierz Jakubczyk."— Zapis prezentacji:

1

2 Algorytmy i struktury danych (C) 2003 – 2008 by Kazimierz Jakubczyk

3 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 2000 (wyd. 3, pseudo Pascal) Wirth N.: Algorytmy + struktury danych = programy, WNT, Warszawa 2002 (wyd. 6, język Pascal)

4 Literatura - cd. Knuth D.E.: Sztuka programowania, WNT, Warszawa 2002 (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 2003 (pseudo Pascal)

5 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 2003 (wyd. 3, język C++)

6 Literatura - cd. Harel D., Feldman Y.: Rzecz o istocie informatyki. Algorytmika, WNT, Warszawa 2008 (wyd. 4) Sysło M.M.: Algorytmy, WSiP, Warszawa 2002 (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)

7 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

8 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

9 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)

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

11 Przykład tablicy decyzyjnej Pada deszcz Jest zimno Weź parasol Włóż płaszcz Wyjdź z domu T T TT NN NN x x x x xxxx Warunki Operacje MożliweIstniejące

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

13 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?

14 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

15 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

16 Notacja asymptotyczna O c g(n) f(n) n n0n0 f(n) = O(g(n))

17 Notacja asymptotyczna f(n) = (g(n)) c g(n) f(n) n n0n0

18 Notacja asymptotyczna c 2 g(n) c1 g(n)c1 g(n) f(n) n n0n0 f(n) = (g(n))

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

20 No to do analizy algorytmów!


Pobierz ppt "Algorytmy i struktury danych (C) 2003 – 2008 by Kazimierz Jakubczyk."

Podobne prezentacje


Reklamy Google