IB002 Algoritmy a datové struktury I (jaro 2018)
Informace o předmětu
Sylabus přednášky
- Základy analýzy algoritmů
- Korektnost algoritmu, vstupní a výstupní podmínky, parciální korektnost, konvergence, verifikace
- Délka výpočtu, složitost algoritmu, složitost problému. Asymptotická analýza časové a prostorové složitosti, růst funkcí
- Techniky návrhů algoritmů
- Iterativní algoritmy
- Rekurzivní algoritmy (rozděl a panuj)
- Řadící algoritmy
- Řazení rozdělováním
- Řazení slučováním
- Řazení haldou
- Dolní odhad složitosti
- Fundamentální datové struktury
- Seznamy, fronty
- Binární halda
- Binární vyhledávací stromy, vyvážené stromy
- Červeno-černé stromy
- B-stromy
- Modifikace datových struktur
- Hašování
- Základní grafové algoritmy
- Reprezentace grafů
- Procházení grafu do hloubky, zúplnění uspořádání, silně souvislé komponenty
- Procházení grafu do šířky
- Nejkratší cesty v grafu, Dijkstrův algoritmus, Bellmanův - Fordův algoritmus
Literatura
- Povinná
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to Algorithms (Third Edition). The MIT Press, 2009.
- Doporučená
- J. Bentley. Programming Pearls (Second Edition). ACM Press 2000.
- G. Brassard, and P. Bratley. Fundamentals of Algorithmics. Prentice Hall, 1996.
- T.H. Cormen. Algorithms Unlocked. The MIT Press, 2013.
- A. Levitin, Introduction to the Design and Analysis of Algorithms. Addison-Wesley, 2003.
- S. Dasgupta, Ch. Papadimitriou, U. Vazirani: Algorithms. McGraw Hill, 2007.
- Doplňková
- J. Kleinberg, and E. Tardos: Algorithm Design. Addison-Wesley, 2006.
- Sbírka příkladů pro cvičení
- Slajdy z přednášek (slajdy využívejte jako podklad k vlastním poznámkám z přednášek, nejsou samostatnou studijní literaturou)
Pro představu také zveřejňujeme vzorová zadání implementační části a znalostní části zkoušky.
Prerekvizity
IB001 Úvod do prog. skrze C || IB111 Úvod do prog. (Python) || IB999 Vstupní test z programování
Předpokládá se, že posluchači mají znalosti v rozsahu předmětů IB001 Úvod do programování skrze C anebo IB111 Úvod do programování skrze Python a v rozsahu předmětu IB000 Matematické základy informatiky. Studenti by měli být schopni používat základní programátorské konstrukce (např. podmínky, cykly, funkce, základní datové typy) a znát několik základních algoritmů. Kromě toho se předpokládá znalost základních matematických konstruktů v rozsahu IB000. Součástí hodnocení předmětu je závěrečný praktický test realizovaný v jazyce Python.