Skip-list - použití a implementace

Z FAV wiki
Verze z 20. 2. 2014, 06:44; Acolade (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Skiplist je alternativa ke stromům, která je snadno implementovatelná. Operace se skiplistem jsou podobné složitosti jako u stromů (O(n log n)), ale paměťová náročnost může být o něco větší.

Skiplist si lze představit následovně: seznam, ve kterém některé prvky ukazují i na vzdálenější prvky než jsou prvky bezprostředně následující. Tyto ukazatele "přeskakují" položky seznamu, odtud skiplist.

Maximální výška uzlu = Maxlevel, každý prvek může mít 1 <= k <= Maxlevel ukazatelů na další prvky


Skip-list.jpg


Popisky (obrázek je z přednášky):

Výhody:

Nevýhody:

Řešení: skiplist s náhodnými velikostmi uzlů. Potom:

Tento skip-list není zcela log n, a nelze (díky náhodnosti) jeho složitost určit. S vysokou pravděpodobností však všechny operace budou rychlejší než O(n) (samozřejmě můžeme mít smůlu a všechny prvky budou náhodně výšky 1).


Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje