Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

OZD: Hašování RNDr. Michal Žemlička.

Podobné prezentace


Prezentace na téma: "OZD: Hašování RNDr. Michal Žemlička."— Transkript prezentace:

1 OZD: Hašování RNDr. Michal Žemlička

2 Přímý přístup do paměti
Hodnotu atributu můžeme přímo využít pro určení pozice záznamu: Hodnota udává logické číslo záznamu Hodnota udává přesnou adresu Hodnota je algoritmicky transformována na přesnou adresu Hodnota je algoritmicky transformována na logické číslo záznamu

3 Základy hašování Předpokládá adresový prostor Addr s M adresovými buňkami Obecně rekurzivní funkce h:Dom(k)→Addr Ideál: každému klíči jednoznačně přiřazena právě jedna adresa, která není přiřazena žádnému jinému klíči Realita: Více klíčům přiřazena tatáž adresa – kolize → nutno ošetřit

4 Jednoduché hašování Nechť h(k) = k mod M, kde M je počet buněk paměti
Kolize mohou být řešeny: seznamy prvků na jednotlivých adresách vložením prvku na jiné volné místo v tabulce První volná pozice za určenou Další hašování

5 Hašování - příklad h(k) = k mod 7 Insert: 3,5,12, … 1 2 3 4 5 6 I(3): 3 1 2 3 4 5 6 I(5): 3 5 1 2 3 4 5 6 I(12): 3 5 Kolize!

6 Hašování - příklad h(k) = k mod 7 Insert: 3, 5, 12, … 1 2 3 4 5 6 I(3): 3 1 2 3 4 5 6 I(5): 3 5 1 2 3 4 5 6 I(12): 3 5 12 Při kolizi vkládáme na první volné místo za danou pozici

7 Hašování – první odhady
Asymptotická i konkrétní varianta popsány přibližně ve stejnou dobu Asymptotická varianta – Knuth Konkrétní rozsah a naplnění – Král Naplnění …  Očekávaný počet přístupů k nalezení prvku s daným klíčem … 1/  je-li tabulka z poloviny zaplněna, potřebuji v průměru dva přístupy

8 Hašování – potřebné přístupy
10 5 25 50 75 naplnění

9 Hašování do stránek Hašovací funkce může místo logických čísel záznamů vracet čísla stránek Vejde-li se do stránky více záznamů, kolize do úrovně kapacity stránky nevadí

10 Řešení kolizí Najdeme prostou hašovací funkci (velmi obtížné)
Najdeme první volné místo za kolizní pozicí Použijeme sekundární hašovací funkci Požijeme (složené) perfektní hašování

11 Perfektní hašování využívá složitějších hašovacích funkcí
přístup k záznamu v konstantním čase přidání dalších prvků může vyvolat změnu hašovací funkce vhodné pro úložiště, kde se hodně hledá, kam se tu a tam přidá (do určitého rozsahu), a kde mazání záznamů může být omezeno použitou metodou

12 Perfektní hašování (Cormack)
Hašování dvoufázové: do adresáře do primárního souboru adresář obsahuje informace o kolidujících prvcích (počet, umístění v primárním souboru, rozlišující hašovací funkce)

13 Perfektní hašování Cormacka
h(k,s) … primární hašovací funkce sekundární hašovací funkce hi(k,r) k… klíč s … velikost adresáře p i r adresář p…ukazuje na oblast v prim. souboru i …určuje sekundární hašovací funkci r… počet kolidujících prvků/rozsah pro hi primární soubor

14 Perf. hašování Cormacka
je vhodné, aby velikost adresáře přibližně odpovídala očekávanému počtu záznamů (větší šance, že nebudou kolidovat velké skupiny záznamů) Při insertu se vždy hledá nové místo pro celou kolidující skupinu Primární soubor je možné reorganizovat tak, aby data byla uložena souvisle

15 Cormack - závěr Vyhledání záznamu vyžaduje 2 (případně jen 1) přístup na disk Někdy je možné reorganizovat primární soubor tak, aby v něm nebyla volná místa Při mnoha kolizích do jedné položky adresáře je možné nechat sekundární hašovací funkci rozdělovat k prvků do více pozic, čímž se zvýší šance na rychlé nalezení příslušné sekundární haš. fce.

16 Perfektní hašování Larsona a Kalji
Data umístěna do M stránek Přístup ke stránkám řízen speciálním hašováním Využívá dvě sady hašovacích funkcí: hi(k) – udávají adresu stránky (0..M-1) si(k) – udávají signaturu záznamu (0..2d-2) Ke každé stránce je separátor – d-bitová hodnota, omezující velikost signatury záznamů ve stránce

17 Larson, Kalja – hledání záznamu
Postupně se pro zvyšující se i funkcemi hi a si generují adresa a signatura tak dlouho, až se nalezne stránka s danou adresou a se separátorem nižším, než je adrese odpovídající signatura. Buď se v dané stránce nachází, nebo není v celé databázi

18 Larson, Kalja - vkládání
Najdeme stránku, kde by se měl záznam nacházet Pokusíme se záznam vložit Vejde-li se, ok Nevejde-li se, setřídíme záznamy dle signatur Záznamy s největší signaturou z bloku vyjmeme Separátor bloku nastavíme na signaturu vytlačených záznamů Vyjmuté záznamy vložíme zpět do db

19 Larson, Kalja – výhody a nevýhody
Signatury jsou velmi malé, je možné je udržovat v paměti téměř vždy – pro získání dat stačí jediný přístup na médium Vkládání jediného prvku může vyvolat celou kaskádu vkládání prvků Může dojít k situaci, kdy separátory stránek budou nastaveny na příliš nízké hodnoty, a tak dojde ke zbytečné blokaci velké části adresového prostoru

20 Perfektní hašování - shrnutí
Obě uvedené metody perfektního hašování (Cormacka i Larsona a Kalji) dovolují velmi rychle přistupovat k uloženým záznamům, vkládání nových prvků však může být dosti zdlouhavé. Úspěšné nasazení se dá očekávat v případě kolekcí, kde se k záznamům přistupuje výhradně podle klíče a kde se data mění (ve srovnání s množstvím přístupů) jen minimálně


Stáhnout ppt "OZD: Hašování RNDr. Michal Žemlička."

Podobné prezentace


Reklamy Google