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

Podobné dokumenty
Datové struktury 2: Rozptylovací tabulky

Návrh designu: Radek Mařík

Datové struktury Úvod

Dynamické datové struktury III.

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

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

Algoritmizace prostorových úloh

Vyhledávání, zejména rozptylování

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

Algoritmy a datové struktury

Dynamické datové struktury IV.

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í

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

Stromy, haldy, prioritní fronty

Radek Mařík

vyhledávací stromové struktury

TGH07 - Chytré stromové datové struktury

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

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

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

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

HASHING GENERAL Hashovací (=rozptylovací) funkce

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

TGH07 - Chytré stromové datové struktury

Prioritní fronta, halda

Rozptylovací tabulky

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

a) b) c) Radek Mařík

Úvod. Úvod do programování. Úvod. Hashovací tabulky

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

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

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

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

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

Návrh Designu: Radek Mařík

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í:

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

Rekurzivní algoritmy

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

Algoritmy I, složitost

5. Vyhledávání a řazení 1

BINARY SEARCH TREE

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

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

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

BINARY SEARCH TREE

Kapitola 11: Indexování a hešování. Základní představa

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í

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

Základy algoritmizace a programování

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

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

HASHING GENERAL Hashovací (=rozptylovací) funkce

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

vyhledávací stromové struktury

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

TÉMATICKÝ OKRUH TZD, DIS a TIS

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

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

IB111 Úvod do programování skrze Python

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

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

ADT STROM Lukáš Foldýna

SQL tříhodnotová logika

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

Stromové struktury v relační databázi

Stromy. Jan Kybic.

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

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

Pole a kolekce. v C#, Javě a C++

Dynamické datové struktury II.

R zné algoritmy mají r znou složitost

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

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

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

5 Metody vyhledávání 5.1 Asociativní vyhledávání sekvenční Pole se sekvenčně prochází = od začátku do konce prvek po prvku :-)))

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

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

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

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

Algoritmy výpočetní geometrie

Algoritmizace Hashing II. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Topics. Vyhledávání, zejména rozptylování. Slovník - Dictionary. Vyhledávání. Rozptylování - Hashing. Rozptylování - Hashing

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

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

Spojová implementace lineárních datových struktur

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

Časová a prostorová složitost algoritmů

1. Databázové systémy (MP leden 2010)

Tabulka. Datová struktura, která umožňuje vkládat a později vybírat informace podle identifikačního klíče. Mohou být:

Spojový seznam. Jan Kybic.

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_26 04

Různé algoritmy mají různou složitost

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

Dynamické datové struktury I.

Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: (Tučná čísla indikují počet neuspěvších (z 50) v jednotlivých otázkách) 1.

Jazyk C++ II. STL knihovna kontejnery část 2

Základy algoritmizace. Hašování

Transkript:

13. Metody vyhledávání. Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce). Asociativní vyhledávání (sekvenční, binárním půlením, interpolační, binární vyhledávací stromy). Operační a paměťová sloţitost algoritmů vyhledávání. (A7B36ALG, A7B36DSA) Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce) porovnáváním klíčů (nepatří mezi adresní vyhledávání, jen pro porovnání) Nalezeno, když klíč_prvku = hledaný klíč (složitost omega(log n) ) např. sekvenční vyhledávání, BVS,... Adresní vyhledávaní - z klíče se vypočte adresa umístění prvku. Využívá se jednoznačného vztahu mezi hodnotou klíče prvku a umístěním prvku ve struktuře představující vyhledávací prostor Přímý přístup klíč je přímo adresou(indexem) hledaného prvku, rozsah klíčů ~ rozahu indexů (složitost omega(1)). Rozptylování výpočtem adresy z hodnoty klíče (složitost průměrně omega(1) ) Rozptylování Hešování = kompromis mezi rychlostí a spotřebou paměti Něco za něco: čas provádění ~ délce klíče není vhodné pro operace výběru podmnožiny a řazení (select a sort)

Pro výpočet adresy se používá rozptylovací funkce ve tvaru h(k)=a, kde kk je množina identifikačních klíčů a aa=[a min,,a max ] je souvislý interval adres. Vzhledem k tomu, že K >> A může nastat, že pro dva různé prvky jejichž klíče se nerovnají k 1 k 2 (říká se jim synonyma) platí h(k 1 )=h(k 2 ). Takovému stavu se říká kolize. Kolize se řeší zřetězeným rozptylováním nebo otevřeným rozptylováním. Zřetězené rozptylování (chaining) jedná se o zřetězení synonym v dynamické paměti Shrnutí: + nemusíme znát n předem potřebuje dynamické přidělování paměti potřebuje paměť na ukazatele a na tabulku[m]

Otevřené rozptylování Znám předem počet prvků (odhad) nechci ukazatele (v prvcích ani tabulku) => posloupnost do pole Linear probing - sekvenční ukládání do pole Double Hashing: h(k) = (k + i.3) mod x

Asociativní vyhledávání (sekvenční, půlením, binární vyhledávací stromy) Sekvenční polem se postupně prochází, dokud nenajdeme požadovaný prvek Hledání s označením (Sentinel): search( E, a); Sekvenční vyhledávání mírně rychlejší, ale stále Q(n) = O(n) Půlením před vlastním hledáním se pole vzestupně setřídí. Poté se najde prostřední prvek a porovná se s hledaným. Pokud je větší, tak se hledaný prvek nachází ve spodní polovině. Pokud je menší, tak se hledaný nachází v horní polovině. V polovičním půlení se pokračuje až do pole délky dva. Něco jako hádání čísel od 1 do 100 s nápovědou větší menší. Složitosti se počítají bez setřídění pole:

Binární vyhledávací stromy používá se v úlohách, kde máme soubor stavů s definovanými přechody mezi nimi. Binární strom je takový strom, kde každý uzel má 0 nebo 2 následníky. Strom je uspořádán tak, že levý následník je menší než předchůdce a pravý následník je větší než předchůdce. pro všechny uzly u L z levého podstromu platí: klíč(u L ) < klíč(u) pro všechny uzly u R z pravého podstromu platí: klíč(u R ) > klíč(u) u je kořen Minimum v BST je úplně levý prvek a maximum je pravý prvek Všechny operace: Search, Maximum, Minimum, Successor, Predecessor můžou běžet v čase O(h), kde h je hloubka stromu

Insert (vložení prvku) 1. Najdi rodičovský uzel ve vyváženém stromu O(log(n)), nebo O(h) v normalním 2. Připoj nový element jako jeho uzel O(1) Delete (smazaní prvku) 3 typy mazání: Uzel nemá potomky prostě ho smažeme Uzel má jednoho potomka přemostíme vymazaný uzel tak, že místo něj se jenom spojí jeho rodič a následník Uzel má 2 potomky jeho potomka potomek na jeho xové úrovni se s ním vymění..

Vyvažování stromu: L rotace (Left Rotation) R rotace (Right Rotation) LR station RL rotatin

Operační a paměťová složitost algoritmů vyhledávání v průměrném, nejhorším a nejlepším případě Vyhledávání Typ Paměťo vá složitos t P(n) Vyhledávání Q(n) Vládání I(n) Mazání D(n) Nalezení minima, maxima Nalezení předchůd ce Naleze ní násled níka Sekvenční Asoc O(n) O(n) O(1) O(n) O(n) N/A N/A Půlením (binární) Asoc O(n) O(log n) O(n) O(n) O(1) N/A N/A Binární vyhledávací stromy Asoc O(n) O(h) O(h) O(h) O(h) O(h) O(h) Přímý přístup Adr. Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) N/A N/A Zřetězené rozptylování Adr. O(m + n) Extrém O(n) Průměrně O(1 + α) O(1) Extrém O(n) Průměrně O(1 + α) Extrém O(n) Průměrně O(1 + α) N/A N/A Otevřené rozptylování Adr. O(n) úměrné α úměrné α úměrné α úměrné α N/A N/A

ZDROJE : fel.jahho.cz/statnice/sw/soft%20-%2004.doc