Naimplementujte dvě varianty Splay stromů, standardní variantu z přednášky, kde se používají dvojité rotace, a naivní variantu, kde se místo dvojitých rotací použije při operaci Splay posloupnost jednoduchých rotací k přenesení zpracovávaného vrcholu do kořene.
![]() |
Jednoduchá rotace |
Prozkoumejte chování obou datových struktur na testovacích datech vygenerovaných níže popsaným programem. Každý test začíná vložením určitého počtu N prvků pomocí operace Insert a po nich následuje posloupnost operací Find. Posloupnost operací Find zavisí na typu testu:
Pro každý test změřte průměrnou délku cesty prošlé při operacích Find.
Pro vygenerování testovacích dat použijte už zkompilovaný generátor
/afs/ms.mff.cuni.cz/u/b/babkm5am/ds1/hw3/splaygen
dostupný v unixové laboratoři Rotunda.
Spusťte ho s následujícími parametry:
-s XX
, kde XX jsou poslední dvě číslice
vašeho studentského čísla;-t T
, kde T je velikost vyhledávané podmnožiny;-b
, pokud chcete vygenerovat data pro sekvenční test;
jinak se generuje podmnožinový rovnoměrný.Výstupem generátoru bude textový soubor, každý řádek popisuje jednu operaci na stromu:
# N
: začátek testu pro množinu velikosti N –
zrušte starý strom a založte nový (velikost množin se vám může hodit při kreslení grafů);I X
: vložení klíče X do stromu (pokud se klíč
ve stromu už vyskytuje, operaci ignorujte);F X
: vyhledání klíče X ve stromu.Na jedno spuštění generátor vytvoří sadu testů o velikostech cca 1000 až 1000000 prvků.
Pro každý typ testu nakreslete graf závislosti průměrné délky cesty Find na velikosti množiny N:
# 3 I 1 I 2 I 0 F 1 F 0 F 2 # 4 I 2 I 3 I 0 I 1 F 2 F 0 F 2 F 3
Pošlete e-mail s předmětem tvaru 'HW3-55973318' (t.j. HW3-studentské číslo) s těmito přílohami:
Tělo e-mailu nechť obsahuje údaje podle tohoto vzoru:
Jmeno: Jiří Fink
Pseudonym pro vysledky na webu: Tomáš Marný
Cviceni: pondeli-12:20-lichy