vyhledávací stromové struktury

Podobné dokumenty
vyhledávací stromové struktury

Základní informace o předmětu Otázka:

Algoritmy a datové struktury

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

Algoritmizace a programování

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

Algoritmizace prostorových úloh

Datové struktury 2: Rozptylovací tabulky

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

Maturitní téma: Programovací jazyk JAVA

Prioritní fronta, halda

Základy algoritmizace a programování

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

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

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

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

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) {

IB111 Úvod do programování skrze Python

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

Třídění a vyhledávání Searching and sorting

Organizace a zpracování dat I

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

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

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í

Algoritmy I, složitost

TGH07 - Chytré stromové datové struktury

Dynamické datové struktury I.

Microsoft Office. Excel vyhledávací funkce

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

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

Standardní algoritmy vyhledávací.

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin

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

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í

Databáze I. 5. přednáška. Helena Palovská

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

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

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

Šablony, kontejnery a iterátory

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

Algoritmizace řazení Bubble Sort

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

Rozptylovací tabulky

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Nelineární rovnice. Numerické metody 6. května FJFI ČVUT v Praze

Šablony, kontejnery a iterátory

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Lineární a polynomická regrese, interpolace, hledání v tabulce

1. Pro přihlášení k odběru novinek klikněte na tlačítko Registrace nového uživatele.

MATLAB a numerické metody

Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole

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

TGH07 - Chytré stromové datové struktury

OZD. 2. ledna Logický (Objekty, atributy,...) objekty stejného typu.

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

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

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

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

Databox CONTACT 6 základní operace programu

Da D to t v o é v ty t py IB111: Datové typy

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

ALGORITMY A DATOVÉ STRUKTURY

04 - Databázové systémy

Základní principy vyhledávání firem

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

George J. Klir Vilem Vychodil (Palacky University, Olomouc) State University of New York (SUNY) Binghamton, New York 13902, USA

Binární vyhledávací stromy II

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

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

BAKALÁŘSKÁ PRÁCE. Numerické metody jednorozměrné minimalizace

Grafové algoritmy. Programovací techniky

SQL tříhodnotová logika

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

Grafové algoritmy. Programovací techniky

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

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

Numerické řešení rovnice f(x) = 0

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

Numerické metody a programování. Lekce 7

Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort.

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

Access. Tabulky. Vytvoření tabulky

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

Malířův algoritmus Josef Pelikán CGG MFF UK Praha. 1 / 15

MIDAM Verze 1.1. Hlavní okno :

Numerické řešení nelineárních rovnic

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.

Zadání k 2. programovacímu testu

Internetové vyhledávače

Digitální učební materiál

Semestrální z předmětu MM

11. Tabu prohledávání

Kombinatorická minimalizace

Úvod do programování 10. hodina

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

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

Stromové struktury v relační databázi

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III

Transkript:

vyhledávací algoritmy Brute Force Binary Search Interpolation Search indexové soubory Dense index, Sparse index transformační funkce Perfect Hash, Close Hash Table, Open Hash Table vyhledávací stromové struktury binary tree, digi tree, BST, B tree, AVL tree, R B tree, Trie, 1

Co potřebujeme zjistit? funkce: čas potřebný pro nalezení/nenalezení záznamu s danou hodnotou klíče ( ) čas potřebný pro přidání záznamu (uspořádání vstupních dat) čas potřebný pro odebrání záznamu (logicky/fyzicky), čas potřebný pro nalezení 1. záznamu, n tého záznamu, čas potřebný pro nalezení předchozího záznamu, následujícího záznamu» má smysl jen v některých případech funkce: hledáme záznam s hodnotou klíče hledáme takové i, kde 0 pro které platí:» hledáme všechna taková i přidáváme záznam s hodnotou klíče nesmí být porušena organizace vstupního souboru (setřídění, struktura) odebíráme záznam s hodnotou klíče záznam musíme nejdříve nalézt» tj. +??? mazání logické nebo fyzické (pokud to jde) 2

vyhledávání hrubou silou lineární vyhledávání (linear search) sekvenční vyhledávání nejjednodušší způsob vyhledávání nepředpokládá žádnou organizaci dat na vstupu nulová chytrost algoritmu prochází posloupnost klíčů od začátku do konce doplňuje ostatní vyhledávací algoritmy vyhledání záznamů s duplicitní hodnotou klíče vstupní soubor určitým způsobem organizován (setříděn) binární vyhledávání vyhledávání pomocí bisekce (bisection search) vyhledávání půlením intervalu (half interval search) nejběžnější způsob vyhledávání předpokládá na vstupu setříděnou posloupnost záznamů využívá numerickou metodu půlení intervalu v každém kroku je eliminována ta část souboru, kde se hledaný klíč určitě nevyskytuje 3

interpolační vyhledávání vyhledávání pomocí lineární interpolace extrapolační vyhledávání (extrapolation search) další, rychlejší způsob vyhledávání předpokládá na vstupu setříděnou posloupnost záznamů pro vyhledávání využívá numerickou metodu interpolace, tj. metodu regula falsi (metoda sečen) v každém kroku je eliminována ta část pole, kde se hledaný klíč určitě nevyskytuje obtížnější výpočet (vhodné pro třídění neindexovaných dat na disku) pouze pro unikátní hodnoty klíčů předpokládá rovnoměrné rozložení hodnot klíčů Algoritmus: pro 0,1,2,, 1 porovnáme s hledaným pokud, pak algoritmus končí nalezením záznamu» v případě duplicitních hodnot pokračujeme v hledání až do konce pokud, pak pokračujeme v hledání pro 1 4

Algoritmus: porovnáme krajní hodnoty tj. s hledaným a s hledaným není nutné pro 0a 1 spočteme index porovnáme s hledaným pokud, pak algoritmus končí nalezením záznamu» v případě duplicitních hodnot pokračujeme v hledání Brute Force pokud, pak pokračujeme v hledání pro» tj. budeme pokračovat v hledání na intervalu, pokud, pak pokračujeme v hledání pro» tj. budeme pokračovat v hledání na intervalu, Algoritmus: porovnáme krajní hodnoty tj. s hledaným a s hledaným není nutné pro 0a 1 spočteme index porovnáme s hledaným pokud, pak algoritmus končí nalezením záznamu pokud, pak pokračujeme v hledání pro 1» tj. budeme pokračovat v hledání na intervalu, pokud, pak pokračujeme v hledání pro 1» tj. budeme pokračovat v hledání na intervalu, 5

Kdy hledání ukončit? nalezením záznamu se stejným klíčem najdu i, pro které platí v tomto případě platí: 0 1 Problém: duplicitní hodnoty klíčů nutné prohledat celý soubor záznamů ( ),» odfláknuté vyhledávání nedoporučuje se, nenalezením záznamu se stejným klíčem prohledávání skončí neúspěchem nutné informovat o nenalezení v tomto případě platí: Problém: nastavit se na určitý záznam v souboru s podobným klíčem nesetříděný soubor: nastavit na konec souboru Kdy hledání ukončit? nalezením záznamu se stejným klíčem najdu s, pro které platí v tomto případě platí: 1 Problém: duplicitní hodnoty klíčů nutné dohledat další záznamy (Brute Force) oběma směry,» odfláknuté vyhledávání nedoporučuje se nenalezením záznamu se stejným klíčem prohledávání skončí neúspěchem nutné informovat o nenalezení v tomto případě platí: 1 Problém: nastavit se na určitý záznam v souboru s podobným klíčem setříděný soubor: nastavit na předchozí nebo následující pozici» Co v případě nebo? 6

Kdy hledání ukončit? nalezením záznamu se stejným klíčem najdu s, pro které platí v tomto případě platí: 1 Problém: duplicitní hodnoty klíčů NEDOPORUČUJE SE: narušuje rovnoměrné rozdělení hodnot klíčů nenalezením záznamu se stejným klíčem prohledávání skončí neúspěchem nutné informovat o nenalezení v tomto případě platí: 1 Problém: nastavit se na určitý záznam v souboru s podobným klíčem setříděný soubor: nastavit na předchozí nebo následující pozici» Co v případě nebo? 0 1 2 3 4 5 6 7 8 9 10 11 12 1 3 5 7 9 11 13 15 17 19 21 23 25 17 0 1 1 3 2 5 atd. 8 17 duplicita klíčů = pokračujeme dál v prohledávání až do konce 7

0 1 2 3 4 5 6 7 8 9 10 11 12 1 3 5 7 9 11 13 15 17 19 21 23 25 8 0 1 1 3 2 5 atd. 12 25 prohledán celý vstup 0 1 2 3 4 5 6 7 8 9 10 11 12 1 3 5 7 9 11 13 15 17 19 21 23 25 17 0 1 12 25 0, 12 0 12 2 6 13 6, 12 6 12 2 9 19 6, 9 2 7 15 7, 9 2 8 17 8

0 1 2 3 4 5 6 7 8 9 10 11 12 1 3 5 7 9 11 13 15 17 19 21 23 25 8 0 1 12 25 0, 12 0 12 2 6 13 0, 6 2 3 7 3, 6 2 4 9 3, 4 1 0 1 2 3 4 5 6 7 8 9 10 11 12 1 3 5 7 9 11 13 15 17 19 21 23 25 17 0 1 12 25 0, 12 0 17 1 12 0 25 1 8 17 9

0 1 2 3 4 5 6 7 8 9 10 11 12 1 3 5 7 9 11 13 15 17 19 21 23 25 8 0 1 12 25 0, 12 0 8 1 12 0 25 1 3,5 7 3, 12 3 8 7 12 3 25 7 3,5 vstupní soubor nesetříděný nalezený záznam fyzicky zrušit (přepsat) okamžitý posun všech následujících záznamů» ČASOVĚ NÁROČNÉ: 1 nalezený záznam nahradit jiným záznamem (poslední v souboru) záznamy musí mít pevnou délku» 1 setříděný nalezený záznam logicky zrušit (označit ke smazání) označit neexistující hodnotou klíče / přidat mazací bit» 1 evidence % zrušených záznamů (fronta)» občas nutné spustit setřásající algoritmus: 10

vstupní soubor nesetříděný vložíme záznam na konec souboru záznamy mohou mít různou délku» 1» Delete: záznamy musí mít pevnou délku setříděný vložíme záznam na konec souboru + Sort Sort: nutné po každém vložení záznamu, celý vstupní soubor» ČASOVĚ NÁROČNÉ: 1 1» 1 vstupní soubor setříděný vložíme záznam na pozice záznamů určených pro smazání záznamy musí mít pevnou délku» 1 nutná evidence zrušených záznamů (fronta)» nutné občas spustit setřásající algoritmus, tj. Search: nutné prohledávat i frontu rušených záznamů (Brute Force) vložíme záznam na pozice mimo soubor do oblasti přetečení udržuje se sekvenčně (Brute Force) záznamy mohou mít různou délku» 1» nutné občas spustit přirozený třídící algoritmus, tj. Search: nutné prohledávat i oblast přetečení (Brute Force) 11

pozitiva jednoduchá realizace pouze jeden cyklus negativa nejpomalejší 1 1 1 1 n T(n) 10 1 10 10 2 1 100 10 3 1 1 000 10 4 1 10 000 10 5 1 100 000 10 6 1 1 000 000 pozitiva nejčastější negativa setříděná data 1 log n T(n) 10 1 4 10 2 1 7 10 3 1 10 1 1 1 1 10 4 1 14 10 5 1 17 10 6 1 20 12

pozitiva méně časté negativa setříděná data, unikátní klíče 1 log log n T(n) 10 1 2 10 2 1 3 10 3 1 4 1 1 1 1 10 4 1 4 10 5 1 5 10 6 1 5 pozitiva nejrychlejší negativa setříděná data, unikátní klíče 1 log log log n T(n) 10 1 1 10 2 1 2 10 3 1 2 1 1 1 1 10 4 1 2 10 5 1 3 10 6 1 3 Lepší už to nebude! 13