Přednáška 9. 5. 2023
Dokončíme algoritmy na nejkratší cesty v grafu a začneme algoritmy na minimální kostru.
Studijní materiály k přednáškám.
Cvičení 3. 5. 2023
Cvičení jsme věnovali obhajobám úloh a úloze 27-Z4-2 --
repl.
Cvičení 26. 4. 2023
Cvičení jsme věnovali obhajobám úloh.
Přednáška 25. 4. 2023
Co nás zajímá na algoritmech - návod na teoretickou úlohu a na vyzkoušení z odpřednášené teorie.
Nejkratší cesta v grafu
popis problému.
Pseudokód v průvodci, kapitola o nejkratších cestách, strany 147, 150.
Dijkstrův algoritmus repl.
Analýza Bellman-Fordova algoritmu, správnost, časová složitost:
BFS,
Bellman-Ford.
Datová struktura halda (binární):
halda před videem,
video o haldě,
halda po videu.
Cvičení 19. 4. 2023
Probírali jsme úlohy ze studentských obhajob.
Repl - přelévání nádob, ukázka práce s třídami.
repl - 35-Z2-3, Mince.
Přednáška 11. 4. 2023
Věnovali jsme se algoritmům na hledání nejkratší cesty v grafu, probrali jsme Bellman-Fordův.
Cvičení 5. 4. 2023
Pracovali jsme na úloze 28-Z1-4,
repl:
Použili jsme a vysvětlili datovou strukturu slovník (dictionary), zopakovali jsme DFS a BFS.
K implementaci fronty jsme použili strukturu deque z balíku collections.
Cvičení 29. 3. 2023
Procvičili jsme prohledávání grafu (DFS, BFS) na úlohách:
V úloze s šachovnicí jsme použili jen BFS.
Délky nejkratších cest koněm ze zadaného pole
repl,
cesta koněm mezi zadanými poli
repl.
Vyřešili jsme úlohu 28-Z1-4 pomocí DFS (prohledávání do hloubky)
repl.
Přednáška 28. 3. 2023
Úlohu 31-Z3-3 z minulého cvičení jsme použili jako modelovou úlohu na prohledávání grafu
repl.
Stručně jsme na kódu vysvětlili, co jsou třídy, metody, jak se používají.
Probrali jsme BFS (prohledávání grafu do šířky), DFS (prohledávání grafu do hloubky), jak souvisí s použitím fronty, zásobníku, pustili instrukt86n9 video z youtube.
Cvičení 22. 3. 2023
Cvičení před odevzdáním prvních úloh na zápočet, probrali jsme organizaci online obhajob.
Věnovali jsme se grafové úloze
31-Z3-3,
repl.
Cvičení 15. 3. 2023
Dokončili jsme úlohu 34-Z3-2,
repl b.
Ukázali jsme, jak zpracovat vstup grafové úlohy. Na vstupu jsou hrany, my chceme vytvořit ke každému vrcholu list jeho sousedů.
repl
Přednáška 14. 3. 2023
Stručně se seznámíme s webovým portálem code.org,
konkrétně ze sekce Učte se doma, hodina kódu s kurzem
klasické bludiště.
Portál doporučíme k nastudování základů programování.
Studenti dostanou za úkol rozmyslet si odpovědi na otázky v dotazníku a budu ráda, když mně je pošlou emailem.
Vrátíme se k úloze vyhledávání ve slovníku 35-Z1-1, ukážeme algoritmus navržený v minulých hodinách jedním ze studentů, budeme diskutovat jeho výhody a nevýhody
a na této úloze přiblížíme cíl předmětu algoritmy a datové struktury,
repl.
Dokončíme řadící algoritmy,
repl.
Vysvětlíme
základní pojmy teorie grafů
(co je graf, cesta v grafu, kružnice, jaký graf nazýváme stromem)
a řekneme, jakými algoritmy se budeme zabývat.
Cvičení 8. 3. 2023
Dokončili jsme úlohu 35-Z1-1,
repl b,
otestovali ji na cvičišti.
Zabývali jsme se úlohou 34-Z3-2,
repl a.
Stihli jsme zpracování vstupu, pokud něco není jasné, připravte si dotazy.
Po jejich zodpovězení budeme pokračovat samotným algoritmem (řádek 36 až 47 v replu).
Cvičení 1. 3. 2023
Seznámíme se s podmínkami absolvování předmětu a
s korespondenčním seminářem z programování (ksp).
Budeme se zabývat úlohami z ksp, začneme s úlohou 35-Z1-1,
repl a.
Přednáška 28. 2. 2022
Následující plán je na první dvě přednášky:
Zahrajeme si hru: myslím si číslo od jedné do sta, dávejte otázky, na které odpovím ano/ne, na kolik otázek číslo zjistíte?
Jak upravíte strategii na číslo do tisíce a do miliónu? Kolik otázek budete potřebovat?
Probereme řadící algoritmy vkládáním (InsertSort), výběrem (SelectSort).
Ukážeme, že na seřazení dat o velikosti n prvků je potřeba řádově n^2 operací, vysvětlíme symbol O, napíšeme jeho definici.
Řekneme, co rozumíme pod pojmem časová a paměťová složitost (výše uvedené algoritmy mají časovou složitost O(n^2), paměťovou O(n)).
Budeme se věnovat rychlejším algoritmům na řazení (QuickSort, MergeSort), vysvětlíme princip metody rozděl a panuj a
ukážeme, že časová složitost algoritmů MergeSort, QuickSort je O(n log(n)), paměťová je O(n).
Algoritmy budeme demonstrovat pomocí kódu v replu:
řadící algoritmy,
algoritmy na vyhledávání prvku.