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ř.

Slides:



Advertisements
Podobné prezentace
OZD: Hašování RNDr. Michal Žemlička.
Advertisements

J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
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.
Vnitřní řazení v poli (in sito)
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ý.
DATOVÝ TYP POLE.
Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 6
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
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
Algoritmy zpracování textů II
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
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í
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.
ORGANIZACE DATOVÉ STRUKTURY SOUBOR
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Adaptivní Huffmanův kód.
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Informatika I 3. přednáška
Jazyk vývojových diagramů
Procedury a funkce Základní charakteristika a použití v programu.
B-strom je dynamická indexová struktura.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
Algoritmy a programovací techniky
Organizace a zpracování dat I
Algoritmy vyhledávání a řazení
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Algoritmizace a programování Třídící algoritmy - 12
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
Datové typy a struktury
Programovací jazyk PASCAL
STROMY Datová struktura sestávající z uzlů
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Typy cyklů Do...Loop For...Next For Each...Next.
Databázové systémy Přednáška č. 5 Datové typy a Fyzická organizace dat.
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
doc. RNDr. Zdeněk Botek, CSc.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
4. Typ pole 4.1 Jednorozměrná pole
MS ACCESS Databáze pro každého. Základní pojmy  Data  určitá fakta, vztahující se k objektům z reálného světa, uložená v paměti počítače  Informace.
doc. RNDr. Zdeněk Botek, CSc.
Spirálová paměť připomíná lineární štěpení stránek předpokládá exponenciální rozdělení klíčů klíče primárně transformovány do intervalu funkcí G(c,k).
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
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.
Algoritmy a programovací techniky Třídící algoritmy.
Výška stromu - algoritmus
Jakub Brodský Ondřej Radosta
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
program TextovySoubor;
Algoritmizace a datové struktury (14ASD)
Algoritmizace Dynamické programování
Transkript prezentace:

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ř. index prvku v poli, pořadí záznamu v souboru apod.  Primární klíč – jednoznačně identifikuje záznam (např. rodné číslo)  Sekundární klíč – není jedinečný (např. jméno)

2 Metody vyhledávání Sekvenční vyhledávání v prostém seznamu Sekvenční vyhledávání v seřazeném seznamu Binární vyhledávání Index-sekvenční vyhledávání Vyhledávání ve stromě (ve vyhledávacím stromě) Vyhledávání v seznamech s rozptýlenými záznamy (v hešovacích tabulkách)

3 Adresní vyhledávání Založeno na znalosti vztahu mezi hodnotami klíče a umístěním prvku v datové struktuře Použití Množina přípustných klíčů není rozsáhlá Množina přípustných klíčů je zobrazitelná na množinu adres prvků

4 Příklady použití: práce s celočíselnými hodnotami v interval např Příklad: Seřaďte vzestupně údaje o výšce měřeného vzorku obyvatelstva a uveďte četnost výskytu jednotlivých hodnot (po centimetrech). Řešíme problematiku »Seřazení »Vyhledávání »Vložení »Odstranění Dále viz Vyhledávání v rozptýlených tabulkách

5 Sekvenční (lineární) vyhledávání const N=10; type COSI= string[10] {popř. něco jiného} T=array[1..N] of COSI; function HLEDEJ(A:T; B:COSI):byte; {0..N} var I:byte; begin HLEDEJ:=0; for I:=1 to N do if A[I]=B then HLEDEJ:=I end

6 popř. příkazovou část funkce HLEDEJ řešíme optimálněji begin HLEDEJ:=0; I:=0; repeat I:=I+1; if A[I]=B then HLEDEJ:=I until (I=N) or (A[I]=B) end

7 Je-li seznam A setříděn, pak k případnému nalezení hodnoty KLIC vede upravený algoritmus (zbytečné prohlížet složky seznamu A s větší hodnotou, než je hodnota KLIC): begin HLEDEJ:=0; I:=0; repeat I:=I+1; if A[I]=B then HLEDEJ:=I until (I=N) or (A[I]>=B) end

8 Binární vyhledávání Pro setříděný seznam A (tabulku, soubor atd.) je velmi efektivní vyhledávací metodou. function HLEDEJ(A:T; B:COSI) : byte; {0..N} var FI, LI, I : byte; begin HLEDEJ:=0; FI:=1; LI:=1; repeat I:=(FI+LI) div 2; if A[I]>B then LI:=I-1 else FI:=I+1 until (B=A[I]) or (FI>LI); if B=A[I] then HLEDEJ:=I end

9 Dijkstrova metoda binárního vyhledávání vychází z předpokladu, že seznam A může obsahovat více záznamů s hodnotou KLIC. Nalezen je prv- ní záznam s hodnotou KLIC: begin HLEDEJ:=0; FI:=0; LI:=N; while LI<>(FI+1) do begin I:=(FI+LI) div 2; if A[I]<=B then FI:=I else LI:=I end; if A[I]=B then HLEDEJ:=I end

10 Metoda binárního vyhledávání je řešitelná rovněž rekurzívním algoritmem, i když méně efektivním: Function BV(A:T;X:COSI;FI,LI:byte) : byte; var I : byte; begin if FI>LI then BV:=0 else begin I:=(FI+LI) div 2; if A[I]=B then BV:=I else if B<A[I] then BV:=BV(A,B,FI,I-1) else BV:=BV(A,B,I+1,LI) end

11 Index-sekvenční vyhledávání Pro setříděný seznam (tabulku, soubor atd.) tvoříme zpravidla tabulku nazvanou index, která obsahuje vedle klíče i ukazatel na odpovídající záznam v původním seznamu. Pro rozsáhlé soubory je efektivní využít víceúrovňové indexování; vedle primárního indexu ukazujícího do sekvenčního souboru využíváme jednoho (či více) klíčů sekundárních sloužícího jako index indexu primárního.

12 Vyhledávání v rozptýlených tabulkách Tabulka s přímým přístupem je z hlediska časové složitosti vyhledávání (přístupu) nejefektivnější metodou. Nevýhodou je její paměťová náročnost; pro rozsáhlé množiny přípustných hodnot klíčů (např. příjmení) je nepoužitelná. Pozornost je věnována metodám implementace tabulek založených na zobrazení klíčů do množiny adres. Zobrazení klíčů však není jednoznačné, hovoříme o tzv. hašování (hashing, rozptýlení).

13 Zobrazení (transformace) klíče na adresu není vzájemně jednoznačná –existují dva či více klíčů se stejnou adresou; řešíme tzv. kolize –existuje adresa, které neodpovídá žádný klíč; Běžná, optimální popř. špatná struktura rozmístění klíčů v hašovací tabulce je důsledkem špatně volené hašovací funkce

14 Hašovací funkce m = h(k) jako generátor rovnoměrně rozložených adres m generovaných z klíčů k –klíč k  K* –adresa m  {M} Elementární hašovací funkce: m = h(k) = k mod m’ kde m’ je nejmenší prvočíslo > m max

15 Příklady na hašovací funkci: jsou-li např. klíčem hmotnosti skupiny lidí s přesností na 0.5 kg; přičemž k , pak hašovací funkce může mít tvar např. m = 2 * k jsou-li klíčem např. jména (řetězce znaků), pak hašovací funkce může být řešena algoritmem např. m:=0; for I:=1 to length(S) do m:=m+(ord(UpCase(S[I]))-65; m:=m mod 11; ‘Albert’  ( ) = 52 mod 11  8

16 Řešení kolizí kolize nastává, jsou-li 2 či více klíčů hašovány na jednu adresu buď hledáme perfektní hašování (je obtížné) nebo se smíříme se sekvenčním prohledáváním kolizního prostoru – kapsy Perfektní hašování, otevřené hašování dvoustupňové hašování –v 1. kroku je např. h(k) = k mod 11 –při kolizi 2. stupeň hašování, např. h(k)=(k mod 5) +1 je krokem hledání další pozice vpravo