1 / 19

Algorytmy i struktury danych

Algorytmy i struktury danych. (C) 2003 – 2008 by Kazimierz Jakubczyk. Literatura. Banachowski L., Diks K., Rytter W.: Algorytmy i struktury danych , WNT, Warszawa 2003 (wyd. 4, pseudo Pascal)

tova
Download Presentation

Algorytmy i struktury danych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 2000 (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 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)

  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 2003 (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 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)

  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 T Pada deszcz 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. T N T N Przykład schematu blokowego Pada deszcz Weź parasol Jest zimno Włóż płaszcz 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. cg(n) f(n) n n0 Notacja asymptotyczna O f(n) = O(g(n))

  16. f(n) cg(n) n n0 Notacja asymptotyczna  f(n) =  (g(n))

  17. c2g(n) f(n) c1g(n) n n0 Notacja asymptotyczna  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!

More Related