1 / 15

Skip-List

Skip-List. je datová struktura, která může být použita jako náhrada za vyvážené stromy. představují pravděpodobnostní alternativu k vyváženým stromům (struktura jednotlivých uzlů se volí náhodně) Na rozdíl od stromů má skip list následující výhody: jednoduchá implementace

clio
Download Presentation

Skip-List

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Skip-List • je datová struktura, která může být použita jako náhrada za vyvážené stromy. • představují pravděpodobnostní alternativu k vyváženým stromům (struktura jednotlivých uzlů se volí náhodně) • Na rozdíl od stromů má skip list následující výhody: • jednoduchá implementace • jednoduché algoritmy vložení/zrušení • časová složitost vyhledávání je obdobná jako u stromů

  2. Základní myšlenka zavedení skip-listů

  3. Skip-List • prky v seznamu jsou uspořádány • seznam obsahuje prvky, které majíkukazatelů 1 ≤ k ≤ max_level • uzel s k-ukazateli se nazývá uzel úrovně k • seznam úrovně k – obsahuje prvky s maximálně k ukazateli • ideální skip-list – každý 2i-tý prvek má ukazatel, který ukazuje o 2i prvků dopředu

  4. NULL 17 7 3 9 2 5 8 11 21 • Pokud má každý 2itý uzel 2i ukazatelů na následující uzly, pak jsou uzly jednotlivých úrovní rozloženy následovně: • 50% uzlů úrovně 1 • 25% uzlů úrovně2 • 12.5% uzlů úrovně3 • atd. • Výhoda: složitost vyhledávání O(log n) • Nevýhoda: po provedení operací insert/delete je nutné • provádět restrukturalizaci seznamu • Řešení: ponechat rozložení uzlů ale vyhnout se restrukturalizaci – tj. • uzly úrovně k jsou vkládány náhodně s uvedeným • pravděpodobnostním rozložením

  5. MaxLevel 15 ukazatele na další prvky forward[i] 1 Klíč + data Prvek Skip-listu • každý prvek seznamu úrovně k má kukazatelů (k se volí náhodně při vytvoření prvku ) Inicializace seznamu Prázdný seznam • je vytvořena hlavička seznamu • (obsahuje MaxLevel ukazatelů) • všechny ukazatele se inicializují na • NIL • celkový počet úrovní MaxLevel se volí na • základě maximálního počtu prvků N • MaxLevel=log2(N) NULL header

  6. Vyhledávání • Začínáme v nejvyšší úrovni • Dokud je hledaný prvek větší než prvek na který ukazuje ukazatel, • posouváme se vpřed v dané úrovni . • Pokud je hledaný prvek menší než následující klíč, • přesuneme se o jednu úroveň níž. • Opakujeme postup pokud není prvek nalezen, nebo pokud není jisté(v úrovni 1), že prvek neexistuje. • Časová složitost • nejlepší/průměrnýpřípad : logaritmický • nejhorší případ : lineární(skip list přechází v normální spojový seznam)

  7. Algoritmus vyhledávání

  8. Vložení prvku 17 Level 2 1 0 3 3 9 12 18 29 35 37 40 • Vyhledávacím algoritmem nalezněte pozici pro vložení prvku • zapamatujte pozici předchůdce • Zvolte úroveň nově vkládaného uzlu • Vložte nový uzel a pokud je to nutné zvětšete hodnotu MaxLevel

  9. Vložení prvku • Vyhledávacím algoritmem nalezněte pozici pro vložení prvku • zapamatujte pozici předchůdce • Zvolte úroveň nově vkládaného uzlu • Vložte nový uzel a pokud je to nutné zvětšete hodnotu MaxLevel 17 Level 2 1 0 3 3 9 12 18 29 35 37 40

  10. Vložení prvku • Vyhledávacím algoritmem nalezněte pozici pro vložení prvku • zapamatujte pozici předchůdce • Zvolte úroveň nově vkládaného uzlu • Vložte nový uzel a pokud je to nutné zvětšete hodnotu MaxLevel 17 Level 2 1 0 3 3 9 12 18 29 35 37 40

  11. Vložení prvku • Vyhledávacím algoritmem nalezněte pozici pro vložení prvku • zapamatujte pozici předchůdce • Zvolte úroveň nově vkládaného uzlu • Vložte nový uzel a pokud je to nutné zvětšete hodnotu MaxLevel 17 Level 2 1 0 3 3 9 12 18 29 35 37 40

  12. Vložení prvku 17 Level 2 1 0 3 3 9 12 18 29 35 37 40 • Vyhledávacím algoritmem nalezněte pozici pro vložení prvku • zapamatujte pozici předchůdce • Zvolte úroveň nově vkládaného uzlu • Vložte nový uzel a pokud je to nutné zvětšete hodnotu MaxLevel

  13. Volba náhodné úrovně Algoritmus vložení prvku

  14. Zrušení prvku • Vyhledávacím algoritmem nalezněte pozici pro zrušení prvku • zapamatujte pozici předchůdce • Zrušte uzel, je-li to nutné zmenšete MaxLevel.

  15. Porovnání s ostatními datovými strukturami

More Related