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

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

OZD: Hašování RNDr. Michal Žemlička. 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.

Podobné prezentace


Prezentace na téma: "OZD: Hašování RNDr. Michal Žemlička. 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."— 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 3 h(k) = k mod 7 Insert: 3,5,12, … I(3): I(5): I(12): Kolize!

6 Hašování - příklad 3 h(k) = k mod 7 Insert: 3, 5, 12, … I(3): I(5): I(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 naplnění # přístupů

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 adresář pir p…ukazuje na oblast v prim. souboru i …určuje sekundární hašovací funkci r… počet kolidujících prvků/rozsah pro h i primární soubor h(k,s) … primární hašovací funkce k… klíč s … velikost adresáře sekundární hašovací funkce h i (k,r)

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í: –h i (k) – udávají adresu stránky (0..M-1) –s i (k) – udávají signaturu záznamu (0..2 d -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 h i a s i 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. 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."

Podobné prezentace


Reklamy Google