Algoritmy a datové struktury 1 – cvičení

Tohle je stránka neaktuálního cvičení.

Cvičil Martin Koreček k přednášce Martina Mareše.

Letní semestr 2022/23, středa 14:00, učebna N3.

Podmínky pro získání zápočtu

Na každém cviku zpravidla zadám jeden domácí úkol. Čas na vypracování bude 14 dní. Občas můžu zadat bonusový úkol.

Na zápočet je třeba získat alespoň dvě třetiny počtu bodů ze standardních úloh (bonusové se počítají jen do vašeho skóre).

Co jsme dělali

15. 2.: Opakování \(\mathcal{O}\) notace, programování na RAMu. Úlohy (PDF)

22. 2.: Dokončení úloh z minulého týdne. Prohledávání grafů. Úlohy (PDF)

1. 3.: DFS, klasifikace hran, mosty a artikulace. Úlohy (PDF)

8. 3.: Topologická indukce, komponenty silné souvislosti, Dijkstra. Úlohy (PDF)

15. 3.: Pokračování Dijkstry, Bellman-Ford. Úlohy (PDF)

Pro zajímavost: někdejší matfyzáci vytvořili pěkná videa o technikách A* a Meet in the Middle. Obě techniky jsou podrobněji popsány také v Průvodci (od 2. vydání).

IDA* bohužel v Průvodci nenajdete, ale můžete si o něm přečíst např. na Wikipedii.

22. 3.: Minimální kostry. Úlohy (PDF)

29. 3.: Binární vyhledávací stromy. Úlohy (PDF)

5. 4.: Vyvažované stromy. Úlohy (PDF)

12. 4.: Intervalové dotazy, trie, hešování. Úlohy (PDF)

Fun fact: v čichovém ústrojí much bylo objeveno něco velmi podobného Bloomovu filtru, sloužícího k detekci dosud neznámých zápachů.

19. 4.: Cvičení nebylo.

26. 4.: Rozděl a panuj. Úlohy (PDF)

3. 5.: Různé úlohy (nenavazujeme na přednášku). Úlohy (PDF)

10. 5.: Cvičení nebylo (Rektorský den).

17. 5.: QuickSelect, LinearSelect. Úlohy (PDF)

Domácí úkoly

Odevzdávejte buď na papíře před začátkem cvičení, nebo v TXT/PDF na e-mail mk-hw@seznam.cz.

Cílem úkolů není, abyste napsali program v nějakém programovacím jazyce (s výjimkou první úlohy), proto neodevzdávejte zdrojové kódy. Jak řešení má vypadat dost dobře vystihují pravidla řešení teoretických úloh Korespondenčního semináře z programování.

Bodové výsledky: Tabulka bodů

Užitečné odkazy

Stránka přednášky.

Knížka Průvodce labyrintem algoritmů, která pokrývá (nejen) celý sylabus předmětu.

Archiv úloh Korespondenčního semináře z programování.

Soutěžní programování: Codeforces, Spoj, HackerRank, CodeChef.

Zábavné kódící úlohy: Project Euler.