Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze |
teaching:bits:ads_zapoctaky [2020/04/11 09:52] – Martin Koutecky | teaching:bits:ads_zapoctaky [2021/05/11 12:43] (aktuální) – Martin Koutecky |
---|
==== Nápady na zápočťáky ==== | ==== Nápady na zápočťáky ==== |
| |
* Implementovat R-B-stromy a (2,4)-stromy a graficky ukazovat jejich [[https://en.wikipedia.org/wiki/Red%E2%80%93black_tree#Analogy_to_B-trees_of_order_4|korespondenci]]. Za prostou implementaci datové struktury dám **30b**, pokud vytvoříte interaktivní aplikaci, ve které bude uživatel zadávat operace na stromech a aplikace bude zobrazovat změny datových struktur a jejich korespondenci, dám **40b**. Zcela ideální platformou by byl (kvůli přístupnosti) Javascript nebo cokoliv webového; přijmu to ale i v jakémkoliv jiném (výše zmíněném) jazyce. **[[https://github.com/petrmanek/TreeDemo/|Řešení Petra Mánka.]]** | * <del>Implementovat R-B-stromy a (2,4)-stromy a graficky ukazovat jejich [[https://en.wikipedia.org/wiki/Red%E2%80%93black_tree#Analogy_to_B-trees_of_order_4|korespondenci]]. Za prostou implementaci datové struktury dám **30b**, pokud vytvoříte interaktivní aplikaci, ve které bude uživatel zadávat operace na stromech a aplikace bude zobrazovat změny datových struktur a jejich korespondenci, dám **40b**. Zcela ideální platformou by byl (kvůli přístupnosti) Javascript nebo cokoliv webového; přijmu to ale i v jakémkoliv jiném (výše zmíněném) jazyce. **[[https://github.com/petrmanek/TreeDemo/|Řešení Petra Mánka.]]** **[[https://github.com/Muph0/rb-24-tree-correspondence|Řešení Honzy Kytky.]]**</del> |
* Nedávno se objevil článek [[https://arxiv.org/abs/2004.04344|A Pedagogically Sound yet Efficient Deletion algorithm for Red-Black Trees: The Parity-Seeking Delete Algorithm]], který tvrdí, že popisuje variantu RB stromů, která je k výuce vhodnější a v praxi efektivnější, než LLRB. Naimplementujte je a popište jejich funkci tak, aby to bylo srozumitelné i spolužákům. | * Nedávno se objevil článek [[https://arxiv.org/abs/2004.04344|A Pedagogically Sound yet Efficient Deletion algorithm for Red-Black Trees: The Parity-Seeking Delete Algorithm]], který tvrdí, že popisuje variantu RB stromů, která je k výuce vhodnější a v praxi efektivnější, než LLRB. Naimplementujte je a popište jejich funkci tak, aby to bylo srozumitelné i spolužákům. |
* [[https://en.wikipedia.org/wiki/Shellsort|Shellsort]] je velice zajímavý třídící algoritmus. Je v jistém smyslu zkřížením bubblesortu a insertsortu, ale může mít lepší časovou složitost. Možností, co byste s ním mohli dělat, je několik: | * [[https://en.wikipedia.org/wiki/Shellsort|Shellsort]] je velice zajímavý třídící algoritmus. Je v jistém smyslu zkřížením bubblesortu a insertsortu, ale může mít lepší časovou složitost. Možností, co byste s ním mohli dělat, je několik: |
* [[https://en.wikipedia.org/wiki/Splay_tree|Splay tree]] je velice zajímavá datová struktura. Jedná se o binární vyhledávací strom, který se přizpůsobuje dotazům, které na něj přichází -- pokud přichází mnoho dotazů na tytéž prvky, strom je vynese blízko ke kořeni, aby se k nim dalo přistupovat rychle. Samozřejmě má i svoje nevýhody. Implementujte ho a napište k němu několik generátorů posloupnosti operací, které budou demonstrovat, v čem je Splay strom lepší než jiné stromy (AVL, R-B, ...) a kde naopak selhává. (Generátorem posloupnosti operací myslím nějakou funkci, které řeknu, kolik operací INSERT/FIND/DELETE chci na stromu udělat [třeba za účelem testování] a on mi je vygeneruje.) | * [[https://en.wikipedia.org/wiki/Splay_tree|Splay tree]] je velice zajímavá datová struktura. Jedná se o binární vyhledávací strom, který se přizpůsobuje dotazům, které na něj přichází -- pokud přichází mnoho dotazů na tytéž prvky, strom je vynese blízko ke kořeni, aby se k nim dalo přistupovat rychle. Samozřejmě má i svoje nevýhody. Implementujte ho a napište k němu několik generátorů posloupnosti operací, které budou demonstrovat, v čem je Splay strom lepší než jiné stromy (AVL, R-B, ...) a kde naopak selhává. (Generátorem posloupnosti operací myslím nějakou funkci, které řeknu, kolik operací INSERT/FIND/DELETE chci na stromu udělat [třeba za účelem testování] a on mi je vygeneruje.) |
* Implementujte [[https://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_string_search_algorithm|Rabinův-Karpův algoritmus]] na vyhledávání podřetězce v řetězci pomocí hashování. | * Implementujte [[https://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_string_search_algorithm|Rabinův-Karpův algoritmus]] na vyhledávání podřetězce v řetězci pomocí hashování. |
* Implementujte kterýkoliv exponenciální algoritmus z [[http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/notes/04-fastexpo.pdf|přednáškových poznámek Jeffa Ericksona]] a pochopte důkaz správnosti a časové/prostorové složitosti dostatečně, abyste mi ho uměli vysvětlit na tabuli. | * Implementujte kterýkoliv exponenciální algoritmus z [[https://jeffe.cs.illinois.edu/teaching/algorithms/notes/B-fastexpo.pdf|přednáškových poznámek Jeffa Ericksona]] a pochopte důkaz správnosti a časové/prostorové složitosti dostatečně, abyste mi ho uměli vysvětlit na tabuli. |
* Implementujte algoritmus, který najde [[https://en.wikipedia.org/wiki/Modular_decomposition|modulární rozklad]] grafu v lineárním čase dle článku [[https://linkinghub.elsevier.com/retrieve/pii/S0166218X04002458|Linear-time modular decomposition of directed graphs]]. **Pokud úkol splníte, dám za něj 45b** (+5b za prezentaci); i pokud se vám to nepodaří úplně, nebude bodová odměna malá. (Potenciálně je to taky dobrý základ pro ročníkový projekt nebo bakalářskou práci do příštích let.) | * Implementujte algoritmus, který najde [[https://en.wikipedia.org/wiki/Modular_decomposition|modulární rozklad]] grafu v lineárním čase dle článku [[https://linkinghub.elsevier.com/retrieve/pii/S0166218X04002458|Linear-time modular decomposition of directed graphs]]. **Pokud úkol splníte, dám za něj 45b** (+5b za prezentaci); i pokud se vám to nepodaří úplně, nebude bodová odměna malá. (Potenciálně je to taky dobrý základ pro ročníkový projekt nebo bakalářskou práci do příštích let.) |
| |