Přednášky:
- Úvod. Algoritmy a algoritmické problémy. Výpočetní modely (např. stroje RAM, Turingovy stroje, ...). Churchova-Turingova teze.
- Algoritmicky nerozhodnutelné problémy.
- Výpočetní složitost algoritmů. Asymptotická notace. Příklady technik používaných při analýze výpočetní složitosti algoritmů.
Analýza výpočetní složitosti rekurzivních algoritmů.
- Třídy složitosti. Nedeterministické algoritmy. Třídy P a NP. Redukce mezi problémy. NP-úplnost.
- Příklady některých klasických problémů z oblasti kombinatorické optimalizace. Příklady toho, kdy některé z těchto problémů jsou v P a některé NP-úplné.
- Další třídy složitosti (PSPACE, EXPTIME, EXPSPACE, L, NL, ...). Příklady úplných problémů pro jednotlivé třídy.
- Příklady technik návrhu efektivních algoritmů. Příklady použití těchto technik pro řešení kombinatorických problémů.
Greedy algoritmy a jejich souvislost s matroidy. Metoda větvení a mezí (branch and bound).
- Složitost algoritmů v průměrném případě. Amortizovaná složitost. Příklady některých pokročilejších datových struktur a analýzy složitosti operací na těchto strukturách.
- Randomizované algoritmy.
- Aproximační algoritmy. Špatně aproximovatelné problémy.
- Paralelní algoritmy: výpočetní modely pro paralelní algoritmy (PRAM), výpočetní složitost paralelních algoritmů.
- Distribuované algoritmy: výpočetní modely pro distribuované algoritmy, komunikační složitost.
Cvičení:
- Algoritmy a algoritmické problémy. Výpočetní modely (např. stroje RAM, Turingovy stroje, ...). Churchova-Turingova teze.
- Algoritmicky nerozhodnutelné problémy.
- Výpočetní složitost algoritmů. Asymptotická notace. Příklady technik používaných při analýze výpočetní složitosti algoritmů.
Analýza výpočetní složitosti rekurzivních algoritmů.
- Třídy složitosti. Nedeterministické algoritmy. Třídy P a NP. Redukce mezi problémy. NP-úplnost.
- Příklady některých klasických problémů z oblasti kombinatorické optimalizace. Příklady toho, kdy některé z těchto problémů jsou v P a některé NP-úplné.
- Další třídy složitosti (PSPACE, EXPTIME, EXPSPACE, L, NL, ...). Příklady úplných problémů pro jednotlivé třídy.
- Příklady technik návrhu efektivních algoritmů. Příklady použití těchto technik pro řešení kombinatorických problémů.
Greedy algoritmy a jejich souvislost s matroidy. Metoda větvení a mezí (branch and bound).
- Složitost algoritmů v průměrném případě. Amortizovaná složitost. Příklady některých pokročilejších datových struktur a analýzy složitosti operací na těchto strukturách.
- Randomizované algoritmy.
- Aproximační algoritmy. Špatně aproximovatelné problémy.
- Paralelní algoritmy: výpočetní modely pro paralelní algoritmy (PRAM), výpočetní složitost paralelních algoritmů.
- Distribuované algoritmy: výpočetní modely pro distribuované algoritmy, komunikační složitost.