Datové struktury I - cvičení

Tato stránka je věnována cvičení z datových struktur I (NTIN066) k přednášce Jiřího Finka.
Cvičení se koná každé úterý od 12:20 v S1 na Malé Straně.
Pokud máte nějaký dotaz nebo chcete něco konzultovat, napište mi e-mail na adresu chmel(zavinutá ryba)iuuk.mff.cuni.cz.
Účast na cvičení je dobrovolná. Budeme rozebírat řešení domácích úkolů z předchozího týdne, otázky k tématům z přednášky a pokud zbyde čas, budeme řešit teoretické úlohy pro lepší porozumění.

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

Body budou udělovány za řešení domácích úkolů.

Pro zápočet je potřeba získat alespoň 75 bodů, přičemž celkem bude možné získat alespoň 115 bodů.

Domácí úkoly

Pravidla jsou podobná jako vloni, s jedinou změnou, a to v počtu úkolů a bodování.

Po téměř každém cvičení bude zadán jeden domácí úkol, celkem garantujeme, že bude alespoň sedm programovacích (implementačních) úkolů po 10 bodech, a alespoň tři experimentální úlohy po 15 bodech. Na řešení každého úkolu budou dva týdny a všechny úkoly se odevzdávají výhradně přes ReCodEx. Zadání můžete nalézt na Gitlabu KAMu zde.

Co jsme dělali

DatumObsah
4. 10. 2022Úvod, opakování - regulární haldy, složitost. Úlohy na cvičení.

Po úvodu do cvičení jsme zadali první úlohu tree_successor s deadlinem 17. 10. 2022 ve 23:59. Potom jsme se věnovali úlohám na cvičení, první dvě úlohy jsme probrali detailně, třetí a čtvrtou jsem spíše naznačil.

11. 10. 2022Amortizace. Úlohy na cvičení. Řešení úloh ze cvik.

Nejprve jsme si ukázali nafukovací pole, a potom jsme se věnovali úlohám na cvičení. První dvě jsem stihnul ukázat na tabuli, pro ostatní máte řešení vedle zadání.

18. 10. 2022Úvod do splay stromů, BVS obecně. Úlohy na cvičení. Shrnutí splay stromů Ondry Mičky, vizualizace, řešení úloh ze cvik.

Nejprve jsme si ukázali splay stromy a zadali jsme úkol splay_operation s deadlinem 31. 10. 2022 ve 23:59. Pak jsme se věnovali dalším úlohám, hlavně splayování a konstrukci optimálního statického BVS. Řešení prvních tří příkladů jsou k dispozici, ostatní si necháme na příště.

25. 10. 2022Pokračování splay stromů. Úlohy na cvičení. Řešení úloh ze cvik.

Zadali jsme úkol splay_experiment s deadlinem 7. 11. 2022 ve 23:59. Jako zajímavé zdroje pro ilustraci toho, co přibližně čekáme, můžou sloužit ukázkové řešení "nultého" úkolu a povídání o domácích úkolech od cvičících pro minulou akreditaci. Na druhou stranu, ne všechno je nutně relevantní: protože měříme rotace, není třeba řešit konfiguraci vašeho počítače, a taky není potřeba řešit přesný odhad multiplikativních konstant. U povídání jsou asi nejzajímavější kapitolky Měření, Tvorba grafů a Popis výsledků (stránky 6-8).

Potom jsme řešili úlohy, na tabuli jsem ukázal řešení prvních pěti úloh (úlohy 4 a 5 spíše zběžně jen s popisem).

1. 11. 2022(a,b)-stromy. Úlohy na cvičení. Vizualizace (a,b)-stromů, řešení úloh ze cvik.

Zadali jsme úkol ab_tree s deadlinem 14. 11. 2022 ve 23:59, rychle jsem okomentoval řešení úlohy splay_operation a dále jsme zkoumali (a,b)-stromy.

8. 11. 2022Cache-oblivious a cache-aware algoritmy. Úlohy na cvičení. Řešení úloh ze cvik.

Zadali jsme úkol ab_experiment s deadlinem 21. 11. 2022 ve 23:59, řekli jsme si hlavní body k řešení úlohy splay_experiment a dále jsme se zabývali cache-oblivious a cache-aware algoritmy - stihli jsme vlastně první tři úlohy.

15. 11. 2022Cache-oblivious algoritmy, hlavně pro matice. Úlohy na cvičení.

Zadali jsme úkol matrix_transpose s deadlinem 28. 11. 2022 ve 23:59, projdeme úlohu ab_tree, a pak jsme zkoumali cache oblivious maticové algoritmy.

22. 11. 2022Úvod do hashování a opakování pravděpodobnosti. Úlohy na cvičení. Řešení úloh ze cvik.

Zadali jsme úkol matrix_experiment s deadlinem 5. 12. 2022 ve 23:59, řekli jsme si, co jsem očekával v řešení úlohy ab_experiment, a pak jsme začali s hashováním a opakováním pravděpodobnosti.

29. 11. 2022Výběr hashovací funkce a jejich vlastnosti. Úlohy na cvičení. Řešení úloh ze cvik.

Zadali jsme úkol cuckoo_hash s deadlinem 12. 12. 2022 ve 23:59, řekl jsem pár věcí k úloze matrix_transpose, a pak jsme se koukali na různé hashovací rodiny.

6. 12. 2022Další hashovací funkce. Úlohy na cvičení. Řešení úloh ze cvik.

Zadali jsme úkol find_duplicates s deadlinem 19. 12. 2022 ve 23:59, okomentoval jsem řešení úlohy matrix_experiment, a pak jsme zkoumali tabulační i jiné hashování.

13. 12. 2022Ještě víc hashování a FKS. Úlohy na cvičení. Řešení úloh ze cvik.

Tentokrát nebyl nový domácí úkol, řekli jsme si něco k úloze cuckoo_hash, a pak jsme dále trávili čas zkoumáním hashování.

20. 12. 2022Sufixové a LCP pole. Úlohy na cvičení. Řešení úloh ze cvik.

Zadali jsme úkol kgrams, lehce jsem okomentoval úlohu find_duplicates, a pak jsme se zabývali sufixovými a LCP poli.

3. 1. 2023Geometrické datové struktury. Úlohy na cvičení. Řešení úloh ze cvik.

Ještě jsem zopakoval sufixové a LCP pole, a potom jsme se dívali na geometrické datové struktury, hlavně na k-d stromy a vícerozměrné intervalové stromy.

Zajímavé odkazy