pomocna struktura pro zmenseni prohledavane domeny
vyhledavaci strom
hash tabulka, hash funkce
pri kolizi znovu hash
index napriklad podle prvnich n-bitu
Hash tabulka
chceme efektivne vyuzivat alkovane misto
chceme vyhledavat zaznamy s konstantni slozitosti
Implementace:
hashfunc – hasovaci funkce. chceme aby byla rychla, mela dobre rozprostreni hodnot a minimum kolizi. Univerzalni hash funkce jsou napriklad CRC32 (akcelerovana na Intelu)
hash_lookup – dostane klic a musi vratit index do tabulky, kde se klic nachazi. Pro prevod hash na cislo radku se pouziva napriklad modulo poctu radku tabulky (pro staticke tabulky) nebo n-bitu prefixu hashe (dynamicke tabulky)
hash_insert – vyhleda pomoci lookup klic. pokud nenajde, zalozi novy na radku s indexem z lookup. pokud najde, mel by overit, ze je skutecne stejne hodnoty.
radek tabulky vetsinou obsahuje kapsu, kam se davaji stejne hash hodnoty (kolize). Pouziva se zde linearne zretezeny seznam
pokud vypocitame hash a zjistime, ze hodnota je jina nez u jiz ulozenho, muzeme hash znovu zahashovat a dostat tak novou hodnotu pro ulozeni