Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Strom

Podobné dokumenty
AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

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

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Dynamické programování

Binární Vyhledávací Stromy, u kterých je. složitost operací v nejhorším. rovná O(log n)

Binární vyhledávací stromy pokročilé partie

Radek Mařík

Stromy, haldy, prioritní fronty

Základní datové struktury III: Stromy, haldy

ADT STROM Lukáš Foldýna

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Algoritmy a datové struktury

Stromy. Jan Hnilica Počítačové modelování 14

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Binární vyhledávací stromy

3 Algoritmy řazení. prvku a 1 je rovněž seřazená.

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Časová a prostorová složitost algoritmů

Vyhledávací stromy. Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání.

Datové struktury Úvod

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

NPRG030 Programování I, 2018/19 1 / :03:07

Dynamicky vázané metody. Pozdní vazba, virtuální metody

a) b) c) Radek Mařík

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

TÉMATICKÝ OKRUH TZD, DIS a TIS

Rekurzivní algoritmy

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

1. D Y N A M I C K É DAT O V É STRUKTUR Y

Stromy. Jan Kybic.

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Anotace. Spojové seznamy, haldy. AVL-stromy, A-B stromy. Martin Pergel,

Jednoduché datové struktury a stromy

Implementace LL(1) překladů

ABSTRAKTNÍ DATOVÉ TYPY

Základy algoritmizace c2007 Michal Krátký, Jiří Dvorský 1/57

Rekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1

Dynamické datové struktury II.

bfs, dfs, fronta, zásobník, prioritní fronta, halda

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Abstraktní datové typy FRONTA

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

BINARY SEARCH TREE

Složitosti základních operací B + stromu

Předmět: Algoritmizace praktické aplikace

Programování v C++ 1, 16. cvičení

Datový typ prioritní fronta Semestrální práce z předmětu 36PT

BINARY SEARCH TREE

B-Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

Algoritmy výpočetní geometrie

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Grafové algoritmy. Programovací techniky

Prioritní fronta, halda

Grafové algoritmy. Programovací techniky

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

5 Rekurze a zásobník. Rekurzivní volání metody

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Dynamické datové typy a struktury

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Implementace binárního stromu směrníky

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Dynamické datové struktury III.

Kapitola 4: Stromy a jejich zpracování

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Dynamické programování. Optimální binární vyhledávací strom

Algoritmizace prostorových úloh

Algoritmizace a programování

Úvod do teorie grafů

Datové struktury 2: Rozptylovací tabulky

TGH07 - Chytré stromové datové struktury

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

vyhledávací stromové struktury

Binární soubory (datové, typované)

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Dynamické datové struktury IV.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Algoritmy II. Otázky k průběžnému testu znalostí

Spojové struktury. Spojová struktura (linked structure):

Cyklické kódy. Alena Gollová, TIK Cyklické kódy 1/23

Implementace aritmetického stromu pomocí směrníků

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Náznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8.

Transkript:

8 Podklady ředmětu ro akademický rok 2013/2014 Radim Farana Obsah 2 Dynamické datové struktury. Strom. Binární stromy. Vyhledávací stromy. Vyvážené stromy. AVL stromy. Strom 3 Název z analogie se stromy. Základní rvek uzel, vrchol. Odkazy na konečný očet odstromů. Stueň stromu maximální očet odstromů. list větev větev list délka větve hloubka stromu htt://office.microsoft.com/cs-cz/cliart/default.asx výška stromu 1

Strom 4 Kořen základní rvek stromu, nemá ředchůdce, jen následníky. Prázdný strom neobsahuje žádný rvek. Prvky se stejnou vzdáleností od e leží na stejné úrovni. Maximální úroveň = hloubka (výška) stromu. Délka cesty k rvku očet sojnic na cestě od e k rvku. Součet délek cesty všech rvků délka cesty stromu. Strom 5 Minimální délku má strom jestliže na každé úrovni kromě oslední má maximální možný očet rvků. Pak má současně minimální hloubku. Binární strom 6 Každý rvek má nejvýše dva následníky. klíč data klíč data klíč data 2

Vyhledávací strom 7 Vyhledávací stromy jsou stromy, u kterých zařazujeme rvky odle klíčové oložky tak, že ro všechny rvky latí následník má vždy nižší hodnotu klíče než rvek a ravý následník hodnotu vyšší. Algoritmy ráce se stromy jsou velmi často rekurzívní. Binární vyhledávací strom 8 hledej (klíč, ByRef rvek) w = rvek if w = nil then new(w) w.klíč = klíč w.data = data w. = nil w.ravý = nil if klíč < w.klíč then hledej (klíč, w.) if klíč > w.klíč then hledej (klíč, w.ravý) REM zracování dat w.data end hledej Vyhledávání a vkládání rvků do stromu Nebezečí: Degenerace stromu na lineární seznam ři vkládání rvků v ořadí odle velikosti. Přetečení zásobníku ři rekurzivním volání. Binární vyhledávácí strom 9 h = true w = while w <> nil and h if w.klíč = klíč then if w.klíč > klíč then w = w. w = w.ravý end while Vyhledávání rvků iterační algoritmus 3

Binární vyhledávací strom 10 rojdi (rvek) if rvek <> nil then rojdi (rvek.) zracování dat rvek.data rojdi (rvek.ravý) end rojdi Procházení a zracování rvků stromu v ořadí jejich klíčů zruš (ByRef rvek) if rvek <> nil then zruš (rvek.) zruš (rvek.ravý) disose() end zruš Zrušení celého stromu Binární vyhledávací strom 11 Vyhledávání a rušení rvku 4 klíč = 8 rvek 4 0 náhrada q 0 klíč = 9 klíč =12 klíč = 30 1 Binární vyhledávací strom 12 vezmi (klíč, ByRef rvek) if rvek = nil REM hledaný rvek ve stromu není if klíč<rvek.klíč then vezmi (klíč, rvek.) if klíč>rvek.klíč then vezmi (klíč, rvek.ravý) REM hledaný rvek byl nalezen q = rvek if q.ravý = nil then rvek = q. if q. = nil then rvek = q.ravý najdi (q.) disose (q) end vezmi Vyhledávání a rušení rvků stromu najdi (ByRef náhrada) if náhrada.ravý<>nil najdi (náhrada.ravý) q.klíč = náhrada.klíč q.data = náhrada.data q = náhrada náhrada = náhrada. end najdi 4

Vyvážený strom 13 Odstranění nebezečí degenerace stromu. Konstrukce stromu s minimální hloubkou. Strom je vyvážený, jestliže ro každý rvek latí, že očet rvků v jeho levém a ravém odstromu se liší nejvýše o jeden rvek. Vyvážený strom 14 Nejjednodušší je umisťování rvků střídavě na levou a ravou stranu stromu strukturování stromu: zvolíme jeden z rvků jako stromu, vytvoříme odstrom s očtem n l = n div 2 rvků. vytvoříme ravý odstrom s očtem n r = n - n l -1 rvků Výsledný strom je dokonale vyvážený. Pro realizaci vyhledávacího stromu ři náhodném vkládání rvků je o každém vložení nutná restrukturalizace stromu. AVL-strom 15 Strom je vyvážený rávě tehdy, když se výšky obou odstromů každého rvku liší nejvýše o jeden rvek. Formulovali: Adelson-Velskij a Landis. V nejhorším říadě bude AVL-strom o 45 % vyšší než dokonale vyvážený strom. Se složitostí O(log n) lze realizovat všechny základní oerace vložení, vyhledání i zrušení rvku s daným klíčem 5

AVL-strom 16 Po vložení nového rvku do levého odstromu se z ohledu rvku: vyváženost zleší, okud výška levého byla menší než u ravého odstromu, vyváženost se zhorší, ale neoruší, okud byly obě výšky stejné, vyváženost se oruší, okud výška levého odstromu byla větší než u ravého, vyváženost je třeba uravit. Orava vyvážení se realizuje rotacemi. AVL-strom 17 Prvek AVL-stromu, roměnná vaz má hodnoty: -1 : odstrom je delší, 0 : oba odstromy mají stejnou délku, 1 : ravý odstrom je delší. Proměnné: ukazatel na rvek, h informace o zvětšení výšky. klíč vaz data AVL-strom, rotace RR 18 Porušení zůsobil u ravého následníka ravý odstrom RR rotace Jednoduchá rotace RR 1 1 =.ravý.ravý = 1. 1. =. = 1. 6

AVL-strom, rotace LL 19 Porušení zůsobil u levého následníka odstrom. LL rotace ravý Jednoduchá rotace LL 1 1 =.. = 1.ravý 1.ravý =. = 1 ravý. AVL-strom, LR-rotace 1 =. 2 = 1.ravý 1.ravý = 2. 2. = 1. = 2.ravý 2.ravý = if 2. then.. if 2. then 1. 1. = 2. 1 klíč = 3 ravý 2 Dvojitá LR rotace LR rotace 1 klíč = 3 ravý 2 20 AVL-strom, RL-rotace 1 =.ravý 2 = 1. 1. = 2.ravý 2.ravý = 1.ravý = 2. 2. = if 2. then.. if 2. then 1. 1. = 2. klíč = 3 2 klíč = 6 Dvojitá RL rotace RL rotace 1 klíč = 3 klíč = 6 2 21 1 7

AVL-strom, vkládání rvků 22 hledej1 (ByRef, ByRef h) if = nil REM vložení nového rvku do roměnné, h = true if klíč <.klíč then hledej1 (.,h) if h then case.. case.. case. 1 =. if 1. then REM rotace LL REM rotace LR. end case if klíč >.klíč then hledej1 (.ravý,h) if h then case 1. 1. case 1.. case 1. 1.vaz = ravý if 1. then REM rotace RR REM rotace RL 1. end case REM zracování dat.data, end hledej1 8