NPRG062 Algoritmizace

 

školní rok 2023/2024

12 přednášek

 

3. 10. 2023 - 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í.

Časová a paměťová složitost algoritmů.

 

10. 10. 2023 – Asymptotická složitost, základní algoritmy s čísly

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.

 

17. 10. 2023 – Čí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í čísel v poli – přímé metody (SelectSort, InsertSort, BubbleSort).

Rychlejší třídění – iterativní implementace třídění sléváním (MergeSort).

 

24. 10. 2023 – 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.

 

31. 10. 2023 - Základní datové struktury

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.

Další abstraktní datové struktury – prioritní fronta.

 

7. 11. 2023 – Rekurze, rekurzivní generování

Rekurze – princip, příklady, efektivita (kešování mezivýsledků - memoizace).

Rekurzivní generování – algoritmy založené na zkoušení všech možností.

 

14. 11. 2023 – Binární stromy

Rekurzivní generování – další příklady.

Binární strom – různé reprezentace, procházení do hloubky a do šířky.

Binární vyhledávací strom – reprezentace, operace.

Princip vyvažování, dokonale vyvážený strom a hloubkově vyvážený strom.

 

21. 11. 2023 – Den otevřených dveří MFF UK

výuka v posluchárně N1 je zrušena

 

28. 11. 2023 - Prohledávání stavového prostoru do hloubky a do šířky

Prohledávání do hloubky – princip, příklady použití, realizace.

Zrychlení pomocí ořezávání a heuristik.

Prohledávání do šířky – princip, příklady použití, realizace.

 

5. 12. 2023 - Algoritmus minimaxu, metoda Rozděl a panuj

Strom hry, algoritmus minimaxu, alfa-beta prořezávání.

Metoda Rozděl a panuj – princip, příklady použití.

MergeSort (rekurzivní implementace).

QuickSort, možnosti implementace, efektivita, možnosti volby pivota, náhrada rekurze.

 

12. 12. 2023 – QuickSelect, aritmetické výrazy

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.

Převody aritmetických notací.

 

19. 12. 2023 - Grafy, prohledávání grafu, grafové algoritmy

Informace o zkouškách, zkušební termíny vypsány v SISu.

Reprezentace grafu v programu.

Prohledávání grafu do hloubky a do šířky.

Základní grafové algoritmy založené na prohledávání grafu.

 

26. 12. 2023 a 2. 1. 2024 – vánoční prázdniny

 

9. 1. 2024 – Obecný strom, hešování, 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).

Metody ukládání a vyhledávání dat – přehled.

Hešování – hešovací tabulky, hešovací funkce, řešení kolizí. Datová struktura slovník.

Zrychlení algoritmu pomocí předvýpočtu.

Hladové algoritmy.