Pokročilá algoritmizace
9 kreditů
Bakalářské
Česky | Anglicky
David Hartman
Cílem předmětu je poskytnout studentům komplexní přehled a vysvětlení metodik řešení složitějších programovacích úloh. V rámci kurzu budou probírány jednak problematiky základních algoritmů databázového typu, jako jsou vyhledávání a řazení, jednak metodiky deterministického řešení rozhodovacích a rozvrhovacích úloh prezentovaných platformou grafových algoritmů a bude také podán jemný úvod do přístupů nedeterministických.
Studijní okruhy
Obecně algoritmický blok
Předmět má dva tematické algoritmické bloky - obecný a grafově
orientovaný. Na obecném bloku se popisují principy, které se posléze
předvádí na příkladu grafových algoritmů
Algoritmická složitostPopis problematiky algoritmické složitosti jednak časové, tak i prostorové, metody jejího vyjádření a efektivní porovnání algoritmů pomocí těchto metrik, ukázky složitosti na základních grafových operacích.
Pokročilejší metodiky programováníPopis pokročilejších metodik programování jako jsou rekurze či dynamické programování, využití pro prohledávání grafů.
Pokročilé metody třídění a vyhledáváníPopis pokročilých metod pro problematiku třídění a vyhledávání (např. merge sort, quicksort, BB(α) strom, B-strom, vyhledávání v textu Boyer-Mooreovým algoritmem, apod.)
Standardní datové algoritmyPopis různých metod standardních algoritmů na řazení a vyhledávání včetně odpovídajících vlastností algoritmů, snížení složitosti zacházení s grafy zavedením efektivnějších metod správy dat.
Heuristické řešení problémůHladové algoritmy a zavedení heuristik, představení jednoduchosti hladových algoritmů na jednoduchém případě minimální kostry grafu.
Třídy složitostiZavedení tříd složitosti P a NP, jejich rozdíl a potenciální vztah, NP-úplné problémy, předvedení problému barvení jako NP-úplného problému.
Aproximační a přibližné algoritmyUvedení do problematiky přibližných a aproximačních algoritmů, ukázka metod řešení problému barevnosti polynomiálními algoritmy.
Grafově algoritmický blok
Graf a jeho uložení v počítačiProblematika reprezentace reálných problémů grafem a jeho efektivní uložení v počítači s uvážením řešeného problému, orientované grafy, využití obecných definic algoritmické složitosti
Průchody grafemZákladní metody průchodu grafem do hloubky a šířky a jejich využití pro charakterizaci grafu a realizaci reálných úloh, využití prohledávání pro algoritmus nejkratší cesty. Využití pokročilých metodik algoritmů jako rekurze či dynamické programování.
StromyCharakterizace stromů, jejich kódování a tím umožněné efektivní uložení v paměti, související problém isomorfismu stromů.
Problém minimální kostryProblém hledání kostry a její minimalizace, složitost celého přístupu a jednoduchý hladový algoritmus na řešení, využívá znalostí z obecných heuristických metod.
Problém barveníProblém barvení grafu, využití pro plánovací algoritmy, složitost tohoto problému a jeho NP-úplnost, souvislost s obecnou definicí tříd složitosti.
Přibližné algoritmy na barvení grafůAlgoritmy na přibližné barvení grafů, přístupy na řešení složitých algoritmů polynomiálně s určitou mírou nepřesnosti, souvisí s obecnou definicí aproximačních a přibližných algoritmů.