Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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!
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.