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)

Slides:



Advertisements
Podobné prezentace
MS PowerPoint Prezentační manažer Kapitola 6.3 (Data vložená z MS Excel)
Advertisements

Komplexní čísla. Komplexní číslo je uspořádaná dvojice [x, y], kde číslo x představuje reálnou část a číslo y imaginární část. Pokud je reálná část nulová,
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Úhly v trojúhelníku Vlastnosti úhlů v trojúhelníku
NEJKRATŠÍ CESTY MEZI VŠEMI UZLY
TEORIE ROZHODOVÁNÍ A TEORIE HER
PLANARITA A TOKY V SÍTÍCH
Vkládání a úprava tabulek do Wordu 2003
Utvořte negaci výroku, a to bez použití záporu.
Limita funkce. Koncentrace 137Cs v odpadním kanálu jaderné elektrárny se v časovém intervalu (t1, t2) řídí rovnicí c (t) = c0e -(t-t0). V čase t1 dojde.
Konstrukce trojúhelníku
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
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]
Diskrétní matematika Opakování - příklady.
Aplikace teorie grafů Základní pojmy teorie grafů
SQL – tříhodnotová logika
Téma 3 ODM, analýza prutové soustavy, řešení nosníků
Teorie zpracování dat Ukázková písemka. Kapitola 4 Je dána tabulka Zam (login, jmeno, plat, funkce), implementovaná je v SŘBD používajícím indexové soubory.
Vyvážení Č-B stromu po zrušení uzlu Tomáš Pitner jaro 2004.
Varianty Turingova stroje Výpočet funkcí pomocí TS
ADT Strom.
Metody řazení s lineární časovou složitostí
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.
B-Strom.
Binární stromy, AVL stromy
MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA reg. č.: CZ.1.07/1.4.00/ Základní škola, Šlapanice, okres Brno-venkov, příspěvková organizace Masarykovo nám.
Základní číselné množiny
Dělení se zbytkem 6 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Dělení se zbytkem 5 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
POZNÁMKY ve formátu PDF
SÍŤOVÁ ANALÝZA.
Mgr. Vlastislav Kučera přednáška č. 8.  Boxy  Vlastnosti ◦ width ◦ height ◦ padding ◦ border ◦ margin.
B-strom je dynamická indexová struktura.
Posloupnosti, řady Posloupnost je každá funkce daná nějakým předpisem, jejímž definičním oborem je množina všech přirozených čísel n=1,2,3,… Zapisujeme.
Zásady pozorování a vyjednávání Soustředění – zaznamenat (podívat se) – udržet (zobrazit) v povědomí – představit si – (opakovat, pokud se nezdaří /doma/)
REDUKCE DAT Díváme-li se na soubory jako na text, pak je tento text redundantní. Redundance vyplývá z:  některé fráze nebo slova se opakují  existuje.
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:
Lineární rovnice – 1. část
Projekt OP VK č. CZ.1.07/1.5.00/ Šablony Mendelova střední škola, Nový Jičín Tento projekt je spolufinancován ESF a státním rozpočtem ČR. Byl uskutečněn.
Rovnoběžné promítání. Nevlastní útvary. Osová afinita v rovině.
1 Jádro polygonální oblasti 36VGE ZS 2007/2008 FEL ČVUT Roman Hocke.
Stromy.
Funkční hodnota a argument funkce
Časová složitost algoritmů
Rekurze Predikát predek(X,Y). predek(X,Y) :- rodic(X,Y). predek(X,Y) :- rodic(Z,Y),predek(X,Z).
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
STROMY Datová struktura sestávající z uzlů
Reaktivní stromy. Motivace Existují algoritmy, které jsou schopny generalizovat výskyt i tvar jednotlivých objektů obsažených na mapě s daným měřítkem.
VLASTNOSTI GRAFŮ Vlastnosti grafů - kap. 3.
Textový procesor (MS Word) Ing. Jan Roubíček. Vlastnosti stránky VY_32_INOVACE_10_2_11_AP.
Základ hry HEX: dva matematické výsledky Nejvýš jeden hráč vybuduje cestu. Aspoň jeden hráč vybuduje cestu.
hledání zlepšující cesty
Mgr. Vlastislav Kučera lekce č. 5.  Boxy  Vlastnosti ◦ width ◦ height ◦ padding ◦ border ◦ margin.
Prostorové datové struktury
Teorie čísel Prvočíslo Generování prvočísel: Erathosenovo síto
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.
Hledání silně souvislý komponent Silně souvislá komponenta orientovaného grafu G= (V,E) je maximální množina uzlů UV taková že ∀ u,v ∈ V : u je dosažitelné.
NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6.
Výška stromu - algoritmus
STROMY A KOSTRY Stromy a kostry - odst. 3.2.
Znázornění dopravní sítě grafem a kostra grafu Předmět: Teorie dopravy - cvičení Ing. František Lachnit, Ph.D.
Konstrukce trojúhelníku
Konstrukce trojúhelníku
Výpočetní složitost algoritmů
ALG 07 Selection sort (Select sort) Insertion sort (Insert sort)
Toky v sítích.
27 ROVNICE – POČET ŘEŠENÍ.
AVL a B-stromy cvičení Radek Mařík.
Transkript prezentace:

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)

Vlastnosti Red-Black Stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů Černá výška (black-height bh(x) ) uzlu x je počet černých uzlů na cestě z uzlu x (ale bez uzlu x) k listu. Bh(T) stromu T je rovna bh(r), kde r je kořen stromu.

Výška Red-Black stromů s n uzly Lemma: Red-black strom T s bh(T)=h má minimálně 2h – 1 vnitřních uzlů. Lemma: Red-black strom T s bh(T)=h má maximálně 2h vnitřních uzlú. Důsledek: Red-black strom s n uzly má výšku maximálně 2 log (n + 1). Důsledek: Operace nad red-black stromem velikosti n mají časovou složitost O(log n)

RB strom a implementace

Rotace Pravá rotace Levá rotace

Operace rotace se provádí v konstantním čase Pravá rotace

Operace rotace se provádí v konstantním čase Pravá rotace

Operace rotace se provádí v konstantním čase Pravá rotace

Operace rotace se provádí v konstantním čase Pravá rotace

Operace rotace se provádí v konstantním čase Pravá rotace

Vložení prvku do Red-Black stromu 17 7 19 13 18 5 37 1 25 49 33 Vkládaný prvek: 21

Vložení prvku do Red-Black stromu ✔ 49 Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů 17 7 19 13 18 5 37 1 25 21 33 Vkládaný prvek: 21

Vložení prvku do Red-Black stromu 17 7 19 13 18 5 37 1 25 49 33 Vkládaný prvek: 3

Vložení prvku do Red-Black Stromu Vlastnosti Red-Black stromu Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů ✔ 1 5 13 7 17 18 19 37 25 33 49 3 ✔ ✔ Problém dvou červených uzlů ✘ ✔ Cíl:Obnovit vlastnosti Red-black stromu přebarvením uzlů popř. provedením rotací Vkládaný prvek: 3

Vložení prvku do Red-Black Stromu Vlastnosti Red-Black stromu Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů ✔ 1 5 13 7 17 18 19 37 25 33 49 3 ✔ ✔ Problém dvou červených uzlů ✘ ✔ Cíl:Obnovit vlastnosti Red-black stromu přebarvením uzlů popř. provedením rotací Vkládaný prvek: 3

Obnovení vlastností Red-black stromu Ve stromu existuje pouze jeden červený uzel x jehož předchůdce je červený Postup: Opravit problém dvou červených uzlů x Oprava může způsobit stejný problém u předka -> je nutné postupovat směrem ke kořeni a upravit totéž i u předků Platí následující: Jelikož x má červeného předka pak x není kořen stromu. Je-li parent[x] červený, pak ani on není kořenem tj. existuje parent[parent[x]]. Je-li parent[x] černý, pak úpravy končí. x parent[x] parent[parent[x]] ? x parent[x] parent[parent[x]]

Algoritmus vložená prvků do RB stromu

Obnovení vlastností Red-black stromu Existují 3 případy: parent[x] a jeho bratr jsou červení parent[x] je červený, jeho bratr je černý, and x je levý syn svého rodiče jako v případě 2; ale x je pravý syn svého rodiče x parent[x] parent[parent[x]] Případ 1 Přebarvení x x parent[x] parent[parent[x]] Případ 2 Přebarvení Pravá rotace

Obnovení vlastností Red-black stromu Existují 3 případy: parent[x] jeho bratr jsou červení parent[x] je červrný, and x je levý syn svého rodiče jako v případě 2; ale x je pravý syn svého rodiče x parent[x] parent[parent[x]] Případ 3 Případ 2 Přebarvení + Pravá rotace Levá rotace

Vložení prvku do Red-black stromu - shrnutí Pozorování: Každý z uvedených případů je proveden v konstantním čase Případ 1 přesouvá x o dva kroky blíže ke kořeni a neprovádí se v něm žádné rotace – pouze se přebarvují uzly V Případě 2 a 3, se provádí 1 nebo 2 rotace; pak úpravy končí Lemma: Vložení prvku do red-black stromu s n uzly má časovou složitost O(log n) a provádí se v něm pouze 2 rotace.

Zrušení uzlu v Red-Black stromu ✔ Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů 17 7 19 13 18 5 37 1 25 49 33 Rušený prvek: 25

Zrušení uzlu v Red-Black stromu ✔ Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů 1 5 13 7 17 18 19 37 33 49 Rušený prvek: 25

Zrušení uzlu v Red-Black stromu ✔ Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů 17 7 19 13 18 5 37 1 25 49 33 Rušený prvek: 18

Zrušení uzlu v Red-Black stromu ✔ Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů 17 7 19 13 5 37 1 25 49 33 Rušený prvek: 18

Zrušení uzlu v Red-Black stromu ✔ Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů 17 7 19 13 5 37 1 25 49 33 První krok: Označíme syna zrušeného uzlu jako extra černý (“doubly black”) Rušený prvek: 18

Zrušení uzlu v Red-Black stromu Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou nebo černou barvou. Kořen stromu je obarven černě. Listy (nil) jsou černé. Červený uzel má pouze černé syny. Na kterékoliv cestě z kořene do listu leží stejný počet černých uzlů Barva neodpovídá 17 ✘ 7 19 13 ✔ 5 37 ✔ 1 25 49 ✔ 33 ✔ Rušený prvek: 18

Zrušení uzlu v Red-Black stromu 17 7 19 13 5 37 1 25 49 33 Rušený prvek: 18

Korekce barvy uzlů v RB stromu Předpokládejme že x je levý syn svého rodiče a jeho bratr w je černý. Existují 3 případy, závisející na barvě synů w: Oba synové w jsou černí Pravý syn w je červený Levý syn w je červený a pravý je černý x parent[x] w c Případ 1 Přebarvení x c x parent[x] w c c' Případ 2 c c' Přebarvení c c' Levá rotace

Korekce barvy uzlů v RB stromu Předpokládejme že x je levý syn svého rodiče a jeho bratr w je černý. Existují 3 případy, závisející na barvě synů w: Oba synové w jsou černí Pravý syn w je červený Levý syn w je červený a pravý je černý Případ 3 x parent[x] w c Přebarvení c c Pravá rotace Případ 2

Korekce barvy uzlů v RB stromu Případ 4: Pravý bratr w uzlu x je červený. Případ 4 x w parent[x] x w parent[x] Přebarvení x w (new) w (old) Levá rotace Pozorování: Případy 2 a 3 provádí maximálně 2 rotace; pak je vše hotovo Případ 1 pouze přebarvuje a přesouvá korekci o jeden krok blíže ke kořeni Případ 4 provádí pouze jedinou rotaci a přesouvá korekci o jeden krok dále od kořene! Lemma: Zrušení uzlu v red-black stromu s n uzly má časovou složitost O(log n) a provádí maximálně tři rotace.

Algoritmus zrušení prvku RB stromu

Algoritmus zrušení prvku RB stromu