Algorytmy i struktury danych

Slides:



Advertisements
Podobne prezentacje
Wstęp do Informatyki, część 1
Advertisements

Sortowanie przez scalanie
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Wstęp do Informatyki, WSZ, część 1
Zaawansowane techniki algorytmiczne
METODY ANALIZY PROGRAMÓW
Algorytmika w szkole podstawowej
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
Teoretyczne podstawy informatyki
Złożoność obliczeniowa
Materiały pochodzą z Platformy Edukacyjnej Portalu
ZŁOŻONOŚĆ OBLICZENIOWA
Opracowała: Elżbieta Fedko
Praktyka Programowania Semestr I: –wykład - 1 godz. –laboratorium - 1 godz. –projekt - 1 godz.
Metody numeryczne w chemii
Matura z informatyki Arkusz I.
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
JAKO CZĘŚĆ NASZEGO ŻYCIA
Wstęp do interpretacji algorytmów
Algorytmy Marek Pudełko
Algorytmy i algorytmika Opracowanie: Maciej Karanowski
PODSTAWY PROGRAMOWANIA
ALGORYTMY Opracowała: ELŻBIETA SARKOWICZ
ALGORYTMY.
Algorytmy Opracowanie: Maria Skalska na podstawie „Informatyka 2000” wydawnictwa Czarny Kruk.
M. Muraszkiewicz Instytut Informatyki, Politechnika Warszawska
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
Zbiór do posortowania mieści się w pamięci
PORZĄDEK WŚRÓD INFORMACJI KLUCZEM DO SZYBKIEGO WYSZUKIWANIA
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
Prowadzący: Dr inż. Jerzy Szczygieł
Ocena przydatności algorytmu – czas działania (złożoność czasowa)
Algorytmy i struktury danych
Równania rekurencyjne
ALGORYTMY OPTYMALIZACJI
GIMNAZJUM nr 1 W BIERUNIU
ALGORYTMY.
ALGORYTM. SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE
METODY NUMERYCZNE I OPTYMALIZACJA
Programowanie strukturalne i obiektowe
Algorytmy.
A. Jędryczkowski – 2007 r.. Algorytmem nazwiemy ścisły przepis postępowania, którego wykonanie gwarantuje otrzymanie danych wynikowych z dostarczonych.
Lekcja organizacyjna Klasa III.
Algorytmika.
Wprowadzenie do programowania
Wprowadzenie do algorytmiki
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Podstawowa wiedza o algorytmach
Algorytmy- Wprowadzenie do programowania
opracowała: Anna Mikuć
ALGORYTMY-WPROWADZENIE. ALGORYTMY W ŻYCIU CODZIENNYM
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Złożoność obliczeniowa algorytmów
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 4
INFORMATYKA SORTOWANIE DANYCH
Wstęp do programowania Wykład 1
Algorytmy i Struktury Danych Algorithms and Data Structures dr inż. Lech Jamroż Wydział Fizyki, Matematyki I Informatyki.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Co to jest algorytm? Uporządkowany i uściślony sposób rozwiązania danego problemu, zawierzający szczegółowy opis wykonywanych czynności w skończonej.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Efektywność algorytmów
Algorytmy i Struktury Danych Wprowadzenie
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

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

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)

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

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)

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

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

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)

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

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

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

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?

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

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

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

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

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

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!

No to do analizy algorytmów!