Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Podobne dokumenty
EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Algorytmy i struktury danych.

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

KARTA MODUŁU KSZTAŁCENIA

PRZEWODNIK PO PRZEDMIOCIE

Kierunek: Informatyka. Przedmiot:

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

Sortowanie - wybrane algorytmy

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Podstawy Informatyki. Sprawność algorytmów

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Temat: Algorytmy zachłanne

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Algorytmy i Struktury Danych.

Programowanie dynamiczne cz. 2

ALGORYTMY I STRUKTURY DANYCH

Zaawansowane algorytmy i struktury danych

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Wstęp do programowania

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Matematyczne Podstawy Informatyki

Wykład 10 Grafy, algorytmy grafowe

Sprawozdanie do zadania numer 2

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11.

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Algorytmika i pseudoprogramowanie

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010.

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Złożoność obliczeniowa klasycznych problemów grafowych

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

1. Analiza algorytmów przypomnienie

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Matematyczne Podstawy Informatyki

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Algorytmy i Struktury Danych

Złożoność algorytmów. Wstęp do Informatyki

Programowanie dynamiczne i algorytmy zachłanne

Algorytmy i Struktury Danych.

Algorytmy zachłanne. dr inż. Urszula Gałązka

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Teoria obliczeń i złożoność obliczeniowa

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2

Listy, kolejki, stosy

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Algorytmiczna teoria grafów

Programowanie w VB Proste algorytmy sortowania

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Heurystyki. Strategie poszukiwań

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Struktury danych: stos, kolejka, lista, drzewo

IZ2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki niestacjonarne

Wstęp do Programowania potok funkcyjny

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

dr inż. Jarosław Forenc

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk Warszawa, ul. Newelska 6, tel.

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Algorytmy i struktury danych IS/IO, WIMiIP

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Informatyka 1. Złożoność obliczeniowa

Opis efektów kształcenia dla modułu zajęć

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Rozwiązywanie problemów metodą przeszukiwania

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Instytut Ekonomiczny 9 kierunek studiów

ID2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki stacjonarne

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Wstęp do programowania

Podejście zachłanne, a programowanie dynamiczne

Sortowanie topologiczne skierowanych grafów acyklicznych

Heurystyczne metody przeszukiwania

Wykład 8. Drzewo rozpinające (minimum spanning tree)

S Y L A B U S. język polski. Forma zaliczenia laboratorium 10 ZO 2 4 wykład 6 ZO Razem 16 2

Algorytmy i struktury danych Metody programowania Języki i paradygmaty programowania Nazwa jednostki prowadzącej przedmiot Instytut Matematyki

Wstęp do programowania

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)


Drzewa poszukiwań binarnych

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Grafy i sieci w informatyce - opis przedmiotu

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Rozdział 4. Algorytmy sortowania 73 Rozdział 5. Typy i struktury danych 89 Rozdział 6. Derekursywacja i optymalizacja algorytmów 147

INFORMATYKA SORTOWANIE DANYCH.

Transkrypt:

Temat: Powtórzenie wiadomości z PODSTAW INFORMATYKI I: Pojęcia: złożoność czasowa algorytmu, rząd funkcji kosztu. Algorytmy. Metody programistyczne. Struktury danych. Literatura. A. V. Aho, J.E. Hopcroft, J. D. Ullman - Projektowanie i analiza algorytmów komputerowych. L. Banachowski, K. Diks, W. Rytter Algorytmy i struktury danych 3. (!)T. H. Cormen, C. E. Leiserson, R. L. Rivest Wprowadzenie do algorytmów. (!)A. Drozdek, D. L. Simon Struktury danych w języku C 5. D. Harel Rzecz o istocie informatyki. Algorytmika 6. (!)R. Neapolitan, K. Naimipour, Podstawy algorytmów z przykładami w C++ 7. (!)V. V. Vazirani, Algorytmy aproksymacyjne ) Pojęcia: złożoność czasowa, rząd funkcji Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy: określić WP (warunek początkowy) i WK (warunek końcowy) problemu WP warunek początkowy formuła logiczna definiująca dane wejściowe problemu WK warunek końcowy formuła logiczna definiująca dane wyjściowe (wyniki rozwiązania problemu) uzyskane dla danych wejściowych spełniających WP ustalić rozmiar zadania Rozmiar zadania (problemu) to rozmiar tych danych wejściowych, których ilość wpływa na czas wykonania algorytmu, tzn. im większa jest ilość tych danych, tym dłużej realizuje się algorytm. Rozmiar zadania może zależeć od kilku parametrów wybrać operację elementarną

Operacja elementarna (inaczej operacja dominująca) to operacja charakterystyczna dla danego algorytmu. To taka operacja, której łączna liczba wykonań jest proporcjonalna do rozmiaru zadania, tzn. im większy jest rozmiar zadania, tym więcej razy realizuje się operacja elementarna. ustalić przypadek pesymistyczny Przypadek pesymistyczny to taki przypadek danych spełniających warunek WP, dla którego liczba wykonanych przez algorytm operacji elementarnych jest największa, przy ustalonym rozmiarze zadania wyznaczyć funkcję kosztu pesymistycznego T ( n) = max { t( d ): d } max D n D n zbiór zestawów możliwych danych wejściowych rozmiaru n t(d) liczba operacji elementarnych wykonanych dla danych wejściowych d Przy porównaniu efektywności czasowej dwóch algorytmów rozwiązujących ten sam problem uwzględnia się rzędy funkcji kosztu. Lemat o porównywaniu rzędów funkcji f(n), g(n) funkcje, których rzędy mamy porównać f ( n ) E = lim n g ( n ) Jeśli E=+, to funkcja g(n) ma niższy rząd niż funkcja f(n), co zapisujemy g(n)=o(f(n)) Jeśli E=c>0, to obie funkcje mają ten sam rząd, co zapisujemy g(n)= Θ (f(n)), Jeśli E=0, to funkcja f(n) ma niższy rząd niż funkcja g(n), co zapisujemy f(n)=o(g(n))

Przykład Problem wyszukiwania ustalonej liczby w ciągu nieuporządkowanym WP: A: a 0, a,..., a n- - ciąg liczb całkowitych (n > 0). Liczby w ciągu są różne. x szukana wartość. x jest liczbą całkowitą. WK: zmienna logiczna jest ustawia się wartości, gdy x występuje w ciągu albo przyjmuje wartość zero, gdy liczba x nie należy do ciągu. Algorytm i = 0; while (i<n && a i!=x) i++; jest=i<n; Rozmiar zadania: n - długość ciągu Operacja elementarna: porównania między elementami ciągu A a liczbą x. Przypadek pesymistyczny: ciąg, w którym x nie występuje albo występuje w indeksie n- Złożoność czasowa pesymistyczna: T ( n) = max { t( d ): d D } n max n = Złożoność czasowa algorytmu nie zależy od: języka programowania, szybkości procesora. ) Algorytmy Jakie problemy algorytmiczne były omówione w ramach wykładu z Podstaw Informatyki I? problem wyszukiwania w ciągu nieuporządkowanym - algorytm wyszukiwania liniowego o koszcie Θ(n), problem wyszukiwania w ciągu uporządkowanym - algorytm wyszukiwania binarnego o koszcie Θ (logn), problem sortowania 3

- dane w strukturze indeksowej (tablica) sortowanie szybkie, przez kopcowanie, przez połówkowe wstawianie koszt Θ(nlogn); - dane w strukturze liniowej bez dostępu indeksowego (lista) sortowanie bąbelkowe, sortowanie przez proste wstawienia, sortowanie przez proste wybieranie koszt Θ (n ) ), - dane z niewielkiego zakresu całkowitoliczbowego sortowanie przez zliczanie, sortowanie pozycyjne, sortowanie kubełkowe koszt Θ (n) 3) Metody programistyczne dziel i zwyciężaj Strategia typu dziel i zwyciężaj polega na dekompozycji problemu na pewną skończoną ilość podproblemów tego samego typu (faza dziel ), a następnie połączeniu w pewien sposób otrzymanych częściowych rozwiązań w celu odnalezienia rozwiązania globalnego (faza zwyciężaj ). Zastosowanie metody dziel i zwyciężaj często zmniejsza koszt czasowy algorytmu. Przykłady zastosowania strategii dziel i zwyciężaj : - wyszukiwanie binarne, - sprawdzanie, czy punkt należy do wielokąta wypukłego. technika zachłanna Algorytm zachłanny ( ang. greedy algorithm) wykonuje zawsze działanie, które wydaje się w danej chwili najkorzystniejsze. Wybiera zatem lokalnie optymalną możliwość w nadziei, że doprowadzi ona do globalnie optymalnego rozwiązania. Przykłady zastosowania strategii zachłannej: - problem kasjera, - problem wyboru zajęć, - ciągły problem plecakowy programowanie dynamiczne Użycie strategii programowania dynamicznego polega na zapamiętaniu w odpowiedniej strukturze (najczęściej tablicy) wyników rozwiązania podproblemów, na które został podzielony problem zasadniczy, unikając w ten sposób wielokrotnych obliczeń dla tego samego podproblemu. Programowanie dynamiczne prowadzi do całkowitej bądź częściowej eliminacji rekurencji.

Przykłady zastosowania programowania dynamicznego: - iteracyjna wersja funkcji wyznaczającej n-ty wyraz ciągu Fibbonaciego, - problem optymalnego nawiasowania w iloczynie macierzowym, - dyskretny problem plecakowy strategia powrotów Strategia powrotów ogranicza liczbę przypadków, które muszą być sprawdzone w trakcie poszukiwania optymalnego rozwiązania danego problemu trudno rozwiązalnego. Aby rozwiązać taki problem, musimy przeszukać przestrzeń stanów, przechodząc z jednego stanu w drugi, aż znajdziemy się w stanie określającym rozwiązanie problemu. Ponieważ dla każdego stanu może istnieć wiele dopuszczalnych ruchów, czyli wiele stanów, do których można dojść, możemy wybrać złe posunięcie. Jeżeli wykonamy zły ruch i znajdziemy się w sytuacji bez wyjścia (nie osiągając poprawnego rozwiązania i nie mając więcej dopuszczalnych posunięć do wykonania), musimy cofnąć ostatni ruch i spróbować zrobić inny. Jeżeli cofnięcie ostatniego ruchu w dalszym ciągu nie prowadzi do rozwiązania, to cofamy ruch przedostatni i próbujemy dalej. Ta metoda nosi nazwę metody powrotów. Metoda powrotów wymaga zapamiętania wszystkich wykonanych ruchów czy też wszystkich odwiedzonych stanów, aby możliwe było cofanie przesunięć. Naturalną techniką kodowania algorytmów opartych na strategii powrotów jest rekurencja. Przykłady zastosowania techniki powrotów: - problem znalezienia cyklu Hamiltona w grafie, - problem ustawienia hetmanów na szachownicy. ) Struktury danych a) Struktury indeksowe Struktury indeksowe to struktury, w których dane dostępne są za pośrednictwem indeksu, tzn. każdej danej przydzielony jest numer. Przykłady prostych struktur indeksowych: - tablica struktura indeksowa w pamięci wewnętrznej (operacyjnej), - plik binarny struktura indeksowa w pamięci zewnętrznej (dyskowej) 5

Struktury indeksowe to poindeksowane bloki pamięci o z góry określonej wielkości. Usunięcie danych ze struktury indeksowej nie powoduje zwolnienia (dealokacji) pamięci. b) Dynamiczne struktury liniowe Dynamiczne struktury liniowe to struktury, w których przydział pamięci dla danych odbywa się podczas realizacji operacji wstawiania danych do struktury. Usunięcie danych z tego typu struktury powoduje zwolnienie (dealokację) pamięci. Dodatkowo, w dynamicznych strukturach liniowych z danego elementu dostępny jest tylko jeden inny element struktury. Przykłady dynamicznych struktur liniowych: - stos operacje: push, pop, top, empty (LIFO last in, first out) - kolejka operacje: in, out, firt, empty (FIFO first in, first out), - lista operacje: insert, delete, search c) Struktury drzewiaste - drzewa BST, - drzewa AVL Przykład Załóżmy, że do początkowo pustej struktury zostały wstawione po kolei wstawione następujące liczby:,, 6,,, 0, 3, 30. Jak będą wyglądały poszczególne struktury: Tablica nieuporządkowana 6 0 3 30 0 3 5 6 7 Tablica uporządkowana 6 0 3 30 6

0 3 5 6 7 stos kolejka lista uporządkowana 30 wierzchołek stosu początek kolejki początek listy 3 0 6 6 6 0 0 3 3 30 30 NULL NULL NULL drzewo BST drzewo AVL 6 3 0 0 30 3 30 Zestawienie pesymistycznego kosztu czasowego operacji słownikowych w poznanych strukturach danych tablica tablica stos kolejka lista drzewo drzewo 7

nieuporząd- uprządko- BST AVL kowana wana search insert delete Zestawienie średniego kosztu czasowego operacji słownikowych w poznanych strukturach danych tablica nieuporządkowana search ( n) insert ( n) delete ( n) tablica uprządkowana stos kolejka lista drzewo BST drzewo AVL Θ Θ Θ d) Struktury do reprezentacji grafów - tablica sąsiedztwa, - tablica list incydencji, - tablica wag Przykład 3 Grafy bez wag Tablica sąsiedztwa dla grafu nieskierowanego 3 5 0 0 0 3 0 0 0 0 5 0 0 Tablica sąsiedztwa dla grafu skierowanego 3 5 0 0 0 0 0

3 0 0 0 0 5 0 0 0 Przykład dla grafu nieskierowanego, T tablica list incydencji T[]:, 3, 5 T[]:, 3, T[3]:,, T[]:, 3, 5 T[5]:, 5 3 Przykład grafu skierowanego T[]:, 3, 5 T[]: 3, T[3]: T[]: 3 T[5]: 5 3 Grafy z wagami Tablica wag 3 5 5 3 3-6.5 3 0 6 5.3 Poznane algorytmy grafowe dla grafów bez wag: - przeglądanie grafu metodą w głąb, - przeglądanie grafu metodą wszerz Poznane algorytmy grafowe dla grafów z wagami: - najkrótsze ścieżki w grafie z ustalonym źródłem: 9

- metoda Forda Bellmana dla grafów z nieujemnymi cyklami, - metoda Dijkstry dla grafów z nieujemnymi wagami, - najkrótsze ścieżki w grafie między każdą parą: - metoda Floyda dla grafów z nieujemnymi cyklami 0