Algorytmy i struktury danych: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m →Moduły |
|||
(Nie pokazano 96 wersji utworzonych przez 8 użytkowników) | |||
Linia 1: | Linia 1: | ||
== Forma zajęć == | |||
Wykład (30 godzin) + laboratorium (30 godzin) | |||
== Opis == | == Opis == | ||
Projektowanie i analiza algorytmów. Przegląd podstawowych algorytmów i struktur danych. | Projektowanie i analiza algorytmów. Przegląd podstawowych algorytmów i struktur danych. | ||
== Sylabus == | == Sylabus == | ||
=== Autorzy === | === Autorzy === | ||
* Wojciech Rytter, | * Krzysztof Diks — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki | ||
* | * Adam Malinowski — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki | ||
* Wojciech Rytter — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki | |||
* Tomasz Waleń — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki | |||
=== Wymagania wstępne === | === Wymagania wstępne === | ||
Linia 14: | Linia 19: | ||
=== Zawartość === | === Zawartość === | ||
* Podstawowe zasady analizy algorytmów: | * Podstawowe zasady analizy algorytmów: | ||
** poprawność | ** poprawność | ||
** złożoność obliczeniowa (pesymistyczna, oczekiwana) | ** złożoność obliczeniowa algorytmu (pesymistyczna, oczekiwana) | ||
** | **koszt zamortyzowany: metoda potencjału | ||
* Podstawowe techniki i struktury: | |||
**metoda ''dziel i zwyciężaj'' | |||
**metoda zachłanna | |||
**pogramowanie dynamiczne | |||
**transformacyjna konstrukcja algorytmu | |||
**elementarne struktury danych: stosy, kolejki, listy | |||
* Sortowanie: | * Sortowanie: | ||
** sortowanie przez porównania (InsertionSort, QuickSort, MergeSort) | ** sortowanie przez porównania (InsertionSort, QuickSort, MergeSort) | ||
** | ** proste kolejki priorytetowe: kopce binarne | ||
** złożoność problemu sortowania | **HeapSort | ||
** sortowanie pozycyjne | |||
** złożoność problemu sortowania | |||
* Selekcja: | * Selekcja: | ||
** algorytm Hoare'a | |||
** algorytm Hoare'a | ** algorytm ''magicznych piątek'' | ||
** algorytm magicznych piątek | * Wyszukiwanie i proste słowniki: | ||
* Wyszukiwanie: | ** wyszukiwanie liniowe i binarne | ||
** liniowe | ** prosty słownik: drzewa poszukiwań binarnych | ||
** | ** haszowanie | ||
** drzewa | * Efektywne implementacje słownika: | ||
** | ** drzewa AVL | ||
** B-drzewa | ** drzewa typu ''splay'' | ||
** B-drzewa | |||
* Złożone struktury danych: | * Złożone struktury danych: | ||
** kolejki priorytetowe, | ** wzmocnione kolejki priorytetowe: kolejki dwumianowe, kopce Fibonacciego | ||
** | ** efektywne sumowanie zbiorów rozłącznych | ||
* Algorytmy grafowe: | * Algorytmy grafowe: | ||
** DFS i jego zastosowania | ** DFS i jego zastosowania | ||
** problemy ścieżkowe -- Algorytm Dijkstry | ** problemy ścieżkowe -- Algorytm Dijkstry | ||
** | ** minimalne drzewo rozpinające | ||
* | * Wyszukiwanie wzorca w tekstach: | ||
** | ** prefikso-sufiksy | ||
** algorytm Knutha-Morisa-Pratta | |||
*Tekstowe struktury danych: | |||
**tablice sufiksowe | |||
**drzewa sufiksowe | |||
* NP-zupełność: | |||
** klasa NP | |||
** problemy NP-trudne i NP-zupełne | |||
=== Moduły=== | |||
* [[Algorytmy i struktury danych/Wstęp: poprawność i złożoność algorytmu|Wstęp: poprawność i złożoność algorytmu]] ([[ASD Ćwiczenia 1|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/Wstęp: elementarne techniki algorytmiczne i struktury danych|Wstęp: elementarne techniki algorytmiczne i struktury danych]] ([[ASD Ćwiczenia 2|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/Sortowanie - BubbleSort, SelectionSort, InsertionSort| Sortowanie przez porównania: BubleSort, SelectionSort i InsertionSort]] ([[ASD Ćwiczenia 3|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/Sortowanie: MergeSort, HeapSort i QuickSort| Sortowanie przez porównania: MergeSort, HeapSort i QuickSort ]] ([[ASD Ćwiczenia 4|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/Sortowanie: dolna granica i sortowanie pozycyjne| Sortowanie: dolna granica, sortowanie pozycyjne]] ([[ASD Ćwiczenia 5|Ćwiczenia]]) | |||
* [[Algorytmy_i_struktury_danych/Selekcja| Selekcja]] ([[ASD Ćwiczenia 6|Ćwiczenia]]) | |||
* [[Algorytmy_i_struktury_danych/Wyszukiwanie| Wyszukiwanie]] ([[ASD Ćwiczenia 7|Ćwiczenia]]) | |||
* [[Algorytmy_i_struktury_danych/Słowniki| Słowniki]] ([[ASD Ćwiczenia 8|Ćwiczenia]]) | |||
* [[Algorytmy_i_struktury_danych/Kolejki priorytetowe| Kolejki priorytetowe]] ([[ASD Ćwiczenia 9|Ćwiczenia]]) | |||
* [[Algorytmy_i_struktury_danych/Find-Union| Find-Union]] ([[ASD Ćwiczenia 10|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/Algorytmy grafowe - najlżejsze ścieżki| Algorytmy grafowe - najlżejsze ścieżki]] ([[ASD Ćwiczenia 11|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/Przeszukiwanie grafów| Algorytmy grafowe - przeszukiwanie grafów]] ([[ASD Ćwiczenia 12|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/Algorytmy tekstowe I| Algorytmy tekstowe I]] ([[ASD Ćwiczenia 13|Ćwiczenia]]) | |||
* [[Algorytmy_i_struktury_danych/Algorytmy_tekstowe_II| Algorytmy tekstowe II]] ([[ASD Ćwiczenia 14|Ćwiczenia]]) | |||
* [[Algorytmy i struktury danych/NP-zupełność| NP-zupełność]] ([[ASD Ćwiczenia 15|Ćwiczenia]]) | |||
=== Literatura === | === Literatura === | ||
# ''Algorytmy i struktury danych'', L. Banachowski, K. Diks, W. Rytter, Wydawnictwa Naukowo - Techniczne, 2006. | |||
# ''Wprowadzenie do algorytmów'', Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Wydawnictwa Naukowo - Techniczne, 2004. |
Aktualna wersja na dzień 09:29, 2 sty 2007
Forma zajęć
Wykład (30 godzin) + laboratorium (30 godzin)
Opis
Projektowanie i analiza algorytmów. Przegląd podstawowych algorytmów i struktur danych.
Sylabus
Autorzy
- Krzysztof Diks — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki
- Adam Malinowski — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki
- Wojciech Rytter — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki
- Tomasz Waleń — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki
Wymagania wstępne
- Wstęp do programowania
- Metody programowania
- Matematyka dyskretna
- Logika i teoria mnogości
Zawartość
- Podstawowe zasady analizy algorytmów:
- poprawność
- złożoność obliczeniowa algorytmu (pesymistyczna, oczekiwana)
- koszt zamortyzowany: metoda potencjału
- Podstawowe techniki i struktury:
- metoda dziel i zwyciężaj
- metoda zachłanna
- pogramowanie dynamiczne
- transformacyjna konstrukcja algorytmu
- elementarne struktury danych: stosy, kolejki, listy
- Sortowanie:
- sortowanie przez porównania (InsertionSort, QuickSort, MergeSort)
- proste kolejki priorytetowe: kopce binarne
- HeapSort
- sortowanie pozycyjne
- złożoność problemu sortowania
- Selekcja:
- algorytm Hoare'a
- algorytm magicznych piątek
- Wyszukiwanie i proste słowniki:
- wyszukiwanie liniowe i binarne
- prosty słownik: drzewa poszukiwań binarnych
- haszowanie
- Efektywne implementacje słownika:
- drzewa AVL
- drzewa typu splay
- B-drzewa
- Złożone struktury danych:
- wzmocnione kolejki priorytetowe: kolejki dwumianowe, kopce Fibonacciego
- efektywne sumowanie zbiorów rozłącznych
- Algorytmy grafowe:
- DFS i jego zastosowania
- problemy ścieżkowe -- Algorytm Dijkstry
- minimalne drzewo rozpinające
- Wyszukiwanie wzorca w tekstach:
- prefikso-sufiksy
- algorytm Knutha-Morisa-Pratta
- Tekstowe struktury danych:
- tablice sufiksowe
- drzewa sufiksowe
- NP-zupełność:
- klasa NP
- problemy NP-trudne i NP-zupełne
Moduły
- Wstęp: poprawność i złożoność algorytmu (Ćwiczenia)
- Wstęp: elementarne techniki algorytmiczne i struktury danych (Ćwiczenia)
- Sortowanie przez porównania: BubleSort, SelectionSort i InsertionSort (Ćwiczenia)
- Sortowanie przez porównania: MergeSort, HeapSort i QuickSort (Ćwiczenia)
- Sortowanie: dolna granica, sortowanie pozycyjne (Ćwiczenia)
- Selekcja (Ćwiczenia)
- Wyszukiwanie (Ćwiczenia)
- Słowniki (Ćwiczenia)
- Kolejki priorytetowe (Ćwiczenia)
- Find-Union (Ćwiczenia)
- Algorytmy grafowe - najlżejsze ścieżki (Ćwiczenia)
- Algorytmy grafowe - przeszukiwanie grafów (Ćwiczenia)
- Algorytmy tekstowe I (Ćwiczenia)
- Algorytmy tekstowe II (Ćwiczenia)
- NP-zupełność (Ćwiczenia)
Literatura
- Algorytmy i struktury danych, L. Banachowski, K. Diks, W. Rytter, Wydawnictwa Naukowo - Techniczne, 2006.
- Wprowadzenie do algorytmów, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Wydawnictwa Naukowo - Techniczne, 2004.