NPRG062 Algoritmizace
školní rok 2024/2025
12 přednášek
1. 10. 2024 - Algoritmy a jejich efektivita
Úvodní informace o obsahu přednášky a studijních materiálech.
Algoritmus - vlastnosti, důkaz správnosti, porovnávání kvality algoritmů.
Příklady: Eukleidův algoritmus, problém stabilních manželství.
8. 10. 2024 – Asymptotická složitost, základní algoritmy s čísly
Časová a prostorová složitost algoritmů.
Asymptotická složitost, notace „velké O, Omega, Theta“.
Složitost algoritmu v nejhorším, nejlepším a průměrném případě.
Složitost problému.
Dělitelnost, rozklad čísla na cifry, ciferný součet.
Prvočísla – test prvočíselnosti, Eratosthenovo síto.
„Dlouhá čísla“ – uložení, operace.
Polynomy – vyhodnocení (Hornerovo schéma), operace.
15. 10. 2024 – Číselné soustavy, vyhledávání a řazení dat
Převody mezi číselnými soustavami.
Rychlé umocňování.
Vyhledávání v poli – sekvenční, pomocí zarážky, binární vyhledávání (půlení intervalů).
Řazení dat v poli – přímé metody (SelectSort, InsertSort, BubbleSort).
Rychlejší třídění – iterativní implementace třídění sléváním (MergeSort).
22. 10. 2024 – Třídicí algoritmy, reprezentace dat
Složitost problému vnitřního třídění.
Třídění s lineární složitostí (CountingSort, BucketSort, RadixSort).
Vnější třídění.
Reprezentace dat v paměti, pole a seznamy.
29. 10. 2024 - Základní datové struktury
Lineární spojový seznam jako alternativa k poli a seznamu.
Slovník a jeho implementace pomocí hešování. Hešovací tabulky, řešení kolizí.
Abstraktní datové typy: zásobník, fronta, halda.
Haldové operace, implementace haldy v poli.
Haldové třídění (HeapSort).
Konstrukce haldy v lineárním čase.
5. 11. 2024 – Děkanský den MFF UK
výuka na fakultě je zrušena
12. 11. 2024 – Rekurze, rekurzivní generování
Další abstraktní datové struktury – prioritní fronta.
Rekurze – princip, příklady, efektivita (kešování mezivýsledků - memoizace).
Rekurzivní generování – algoritmy založené na zkoušení všech možností.
19. 11. 2024 – Binární stromy
Rekurzivní generování – další příklady.
Binární strom – způsoby reprezentace, procházení do hloubky a do šířky.
Binární vyhledávací strom – reprezentace, operace.
Princip vyvažování, dokonale vyvážený strom a výškově vyvážený strom.
26. 11. 2024 - Prohledávání stavového prostoru do hloubky a do šířky
Prohledávání stavového prostoru do hloubky – princip, příklady použití, realizace.
Zrychlení pomocí ořezávání a heuristik.
Prohledávání stavového prostoru do šířky – princip, příklady použití, realizace.
3. 12. 2024 - Algoritmus minimaxu, metoda Rozděl a panuj
Hra s úplnou informací, strom hry, algoritmus minimaxu, alfa-beta prořezávání.
Metoda Rozděl a panuj – princip, příklady použití.
Vyhodnocení aritmetického výrazu.
10. 12. 2024 – QuickSort, QuickSelect, aritmetické výrazy
MergeSort (rekurzivní implementace).
QuickSort, efektivita, možnosti volby pivota, náhrada rekurze.
K-tý nejmenší prvek, QuickSelect.
Reprezentace aritmetického výrazu binárním stromem.
Notace aritmetického výrazu (infix, prefix, postfix) – vyhodnocení výrazu.
17. 12. 2024 - Grafy, prohledávání grafu, grafové algoritmy
Vyhodnocení a převody aritmetických notací (dokončení z minulé přednášky).
Reprezentace grafu v programu.
Prohledávání grafu do hloubky a do šířky.
Základní grafové algoritmy založené na prohledávání grafu.
24. 12. 2024 a 31. 12. 2024 – vánoční prázdniny
7. 1. 2025 – Faktorové množiny, obecný strom, další metody návrhu algoritmů
Faktorové množiny a jejich použití při řešení grafových problémů.
Obecný strom – reprezentace, průchod, použití (trie, vícecestné vyhledávací stromy).
Zrychlení algoritmu pomocí předvýpočtu.
Hladové algoritmy.