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.

Slides:



Advertisements
Podobné prezentace
Grafové algoritmy.
Advertisements

Zpracování informací a znalostí Datové struktury a algoritmy pro vyhledávání informací Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního.
TEORIE ROZHODOVÁNÍ A TEORIE HER
Stavový prostor. • Existují úlohy, pro které není k dispozici univerzální algoritmus řešení • různé hry • problém batohu, problém obchodního cestujícího.
Programovací jazyk C++
Třída SIMSET je druhou standardní systémovou třídou, která obsahuje prostředky pro práci se spojovými seznamy. KRUHOVÉ SPOJOVÉ SEZNAMY Spojový seznam –
ARITMETICKÁ POSLOUPNOST
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a]
10. Dynamické datové struktury
Vyhodnocování dotazů slajdy k LS I155 Jaroslav Pokorný.
Red-Black Stromy Binární Vyhledávací Stromy, u kterých je časová složitost operací v nejhorším případě rovná O(log n)
Semestrální práce KIV/PT Martin Kales Hana Hůlová.
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
TEORIE ROZHODOVÁNÍ.
Aplikace teorie grafů Základní pojmy teorie grafů
Úvod Klasifikace disciplín operačního výzkumu
SQL – tříhodnotová logika
ALGO – Algoritmizace 1. cvičení
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Vyvážení Č-B stromu po zrušení uzlu Tomáš Pitner jaro 2004.
ADT Strom.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Metody řazení s lineární časovou složitostí
B-Strom.
Binární stromy, AVL stromy
ARITMETICKÁ POSLOUPNOST I
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
VÍCEKRITERIÁLNÍ ROZHODOVÁNÍ I.
1IT S ÍŤOVÝ DATOVÝ MODEL Ing. Jiří Šilhán. S ÍŤOVÝ DATOVÝ MODEL Je historicky nejstarším datovým modelem. Jeho základem jsou vzájemně propojené množiny.
Řadicí algoritmy autor: Tadeáš Berkman.
B-strom je dynamická indexová struktura.
STANOVENÍ NEJISTOT PŘI VÝPOŠTU KONTAMINACE ZASAŽENÉHO ÚZEMÍ
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Algoritmy a programovací techniky
Algoritmy vyhledávání a řazení
Stromy.
Vyváženost SOS Vyvážené SOS –Omezení délky vyhledávací cesty ve struktuře počtem logických stránek M O(f(M)): O(M), O(log M), O(1), … Složitost (počet.
Název projektu: Šablony Špičák číslo projektu: CZ.1.07/1.4.00/ šablona III/2 autor výukového materiálu: Mgr. Jana Jiroušová, VM vytvořen: květen.
Další abstraktní datové typy
Spojové struktury BI-PA1 Programování a algoritmizace 1, ZS
Sorty Bubble, Insert a Quick
STROMY Datová struktura sestávající z uzlů
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Kompresní algoritmus LZW Dokumentografické informační systémy.
Rozpoznávání v řetězcích
Grafický zápis algoritmů (vývojové diagramy) Eratosthenovo síto
Databázové systémy Přednáška č. 5 Datové typy a Fyzická organizace dat.
Prostorové datové struktury
Teorie čísel Prvočíslo Generování prvočísel: Erathosenovo síto
Využití sestavy Zobrazení a typy Části sestavy Vytvoření sestavy Ovládací prvky.
Programování 3. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6.
Výška stromu - algoritmus
Programovací jazyk C++
ZAL – 6. cvičení 2016.
C-síť (circle – net) Petr Kolman.
Programování 2. hodina RNDr. Jan Lánský, Ph.D.
Abstraktní datové typy
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
Oblast platnosti identifikátoru (1)
Typ pole (1) Proměnná typu pole představuje kolekci proměnných stejného datového typu, které mohou být označovány společným jménem (identifikátorem) Pole.
Výpočetní složitost algoritmů
ALG 07 Selection sort (Select sort) Insertion sort (Insert sort)
ALG 13b Srůstající hashování Ukázky
AVL a B-stromy cvičení Radek Mařík.
Transkript prezentace:

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ů

Základní myšlenka zavedení skip-listů seznam složitost vyhledávání – nejhorší případ a) obyčejný spoj.seznam n b) extra ukazatele mezi každým 2. uzlem n/2+1 c) extra ukazatele mezi každým 4. uzlem n/4+1 d) extra ukazatele mezi každým 2i. uzlem log n e) náhodná volba extra uzlů s ukazateli (skip list) ???

Skip-List prky v seznamu jsou uspořádány seznam obsahuje prvky, které mají k ukazatelů 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

Výhoda: složitost vyhledávání O(log n) 2 3 5 7 8 9 11 17 21 NULL 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

ukazatele na další prvky Prvek Skip-listu 1 MaxLevel 15 Klíč + data ukazatele na další prvky forward[i] každý prvek seznamu úrovně k má k ukazatelů (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

Vyhledávání Časová složitost 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)

Algoritmus vyhledávání

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 3 9 12 18 29 35 37 40 Level 1 2 17

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 3 3 9 12 18 29 35 37 40

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 3 3 9 12 18 29 35 37 40

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 3 3 9 12 18 29 35 37 40

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 3 9 12 18 29 35 37 40 Level 1 2 17

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

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.

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