0.05.0 vyhledávací algoritmy Brute Force, Binary Search, Interpolation Search indexové soubory Dense index, Sparse index, Multilevel index transformační funkce Perfect Hash Close Hash Table Open Hash Table Double Hash Rehash table vyhledávací stromové struktury
0.05.0 rozptylovací (transformační) funkce princip: hodnota klíče = adresa uložení záznamu v tabulce úzký interval hodnot ( ) bez duplicit (pouze unikátní hodnoty) tabulka s přímým přístupem tabulka pro hodnotu klíče vyhrazen jeden řádek tabulky rozsah tabulky určuje rozsah hodnot klíčů 0 Jan 89 Eva hash funkce: Ota p adres tabulky : : : p Jiří p Jana jeden řádek = jeden záznam
0.05.0 Výhody malé časové nároky Nevýhody klíče nenabývají všech hodnot z rozsahu klíčů určité adresy nebudou nikdy využité plýtvání s pamětí horší faktor zaplnění tabulky např. rodná čísla osob z ÚL, db slov v ČJ realizace v praxi těžké dodržet podmínky pro klíče rozsah v intervalu, unikátní hodnoty umělý klíč umělé dodržení podmínek např. evidenční číslo studenta, použití tabulky pro konverzi kódů ASCII, Latin, kód Kamenických, (B) UCS, UTF 8 (B) UTF (B)
0.05.0 realizace v praxi vhodné pro, kde problémy jak zvolit hash funkci, aby rovnoměrně rozdělila klíče? rovnoměrné rozložení hodnot klíčů nelze zaručit jak zařídit, aby v každém řádku tabulky byl právě jeden záznam? perfect hash faktor zaplnění tabulky n = počet záznamů p = počet adres v tabulce perfect hash vytvoříme perfektní hash funkci klíči přiřadí vzájemně jednoznačnou adresu v tabulce vzájemná jednoznačnost není v praxi zaručena v praxi velký rozsah adres tabulky neúměrný počtu záznamů ( ) obtížné nalezení vhodné hash funkce nutná znalost dat (hodnot klíčů) duplicita klíčů hash funkce určí stejnou adresu v tabulce nelze funkce add, del narušuje perfektnost funkce nelze realizovat» naruší tak vzájemnou jednoznačnost
0.05.0 problémy jak rychle spočítat hash funkci? omezení na funkce 98 Jaeschke» lze najít vhodná a,b,c my pro jednoduchost p = prvočíslo, kolize problém vzájemné jednoznačnosti klíče adresa a zároveň Vstupní pole klíčů: 9,, 0, 7, 5 7 0 5 0 0 0,000 7 5
0.05.0 Vstupní pole klíčů: 9,, 0, 7, 0 7 0, 9 9 7 5 9 Vstupní pole klíčů: 9,, 0, 7, 0 7 0,8 7 0
0.05.0 Vstupní pole klíčů: 9,, 0, 7, 0 7 0,9 0 0 7 0 0 Vstupní pole klíčů: 9,, 0, 7, 0 7 0,9 7 7 7 5 0 7 kolize 7
0.05.0 Vstupní pole klíčů: 9,, 0, 7, 0 7 0,57 7 7 7 0 7 7 Vstupní pole klíčů: 9,, 0, 7, 0 7 0,57 7 0 7 kolize 8
0.05.0 Vstupní pole klíčů: 9,, 0, 7, 0 5 5 7 0,7 7 0 7 Vstupní pole klíčů: 9,, 0, 7, 0 0 7 5 5 7 0,7 9
0.05.0 Vstupní pole klíčů: 9,, 0, 7, 0 shluky jsou důsledky kolizí různé způsoby řešení 0 7??? shluk Vstupní pole klíčů: 9,, 0, 7,????? 0 5 5????? 0 0 7??? 5 5 7??? logické mazání evidence smazaných míst 0
0.05.0 obecné časové parametry??? α T opt T pes 0 0,,05,7 0,,5,8 0,5,5,5 0,7 5 0 0,7 vše O.K. rehash Vstupní pole klíčů: 9,,, 7, 5 7 0,, a 0 5 0 0 0,000 7
0.05.0 Vstupní pole klíčů: 9,,, 7, 0 7 0, 9 9 7 5 9 7 Vstupní pole klíčů: 9,,, 7, 0 7 0,9 7 7 7 5 7 kolize 7
0.05.0 Vstupní pole klíčů: 9,,, 7, 0 7 7 0,57 7 7 7 7 7 Vstupní pole klíčů: 9,,, 7, 0 7 7 0,57 7 5 kolize 7
0.05.0 Vstupní pole klíčů: 9,,, 7, 0 kolize 7 kolize 7 0,57 9 7 kolize kolize 7 Vstupní pole klíčů: 9,,, 7, 0 7 5 5 7 0,7 7 5 7
0.05.0 Vstupní pole klíčů: 9,,, 7, 0 7 7 5 5 7 0,7 Vstupní pole klíčů: 9,,, 7, 0 7 shluky jsou důsledky kolizí 5????? shluky 5
0.05.0 Vstupní pole klíčů: 9,,, 7,????? 5 5????? 0 7 0?????? logické mazání evidence smazaných míst obecné časové parametry??? ln α T opt T pes 0 0 0,,05, 0,,,5 0,5,8 0,7,8 0,99,5 00 0 0,7 vše O.K. rehash