Dvojitý hash

Když metoda dvojité hodnoty šíření nebo dvojité hashování ( anglické dvojité hashování ) je metoda pro realizaci metody uzavřeného hash . V uzavřených hash postupů, pokusy o přizpůsobení odpadlíci v na hašovací tabulky namísto jejich uložení v buňce (např. Jako seznam). (Otevřené hashovací postupy mohou přiřadit položky dvakrát, a proto je není nutné prozkoumávat.) Upozornění: Stejně jako v hashové tabulce článku v části „Varianty hashovací procedury“ jsou termíny „otevřený“ nebo „uzavřený hash“ použity přesně opačným způsobem.

K tomu používá dvojitý hash sondovací funkci, která zahrnuje sekundární hashovací funkci, např. B. , a který se používá, pokud je index vypočítaný primární hashovací funkcí již obsazený.

Plná hash funkce pak čte :, kde j je počet již „vyzkoušených“ indexů, tj. To znamená, že j se zvýší o 1 při každém použití indexu.

Funkce sondování má tvořit permutaci indexů hash tabulky.

Sekvence hash funkcí, které jsou nyní vytvořeny pomocí a vypadá takto:

Cena této metody se blíží ceně ideálního hašování.

Nezávislost hashovacích funkcí

Double hash používá dvě nezávislé hashovací funkce a . Tito jsou voláni nezávislí jestliže pravděpodobnost takzvané dvojité srážky, tj. H. , je menší nebo rovno, a proto minimální, kde je velikost pole.

Příklady

Ukázkové funkce

Velikost pole: m

Indexy: {0; m-1}

Primární hash funkce: ( metoda rozdělení zbytku )

Sekundární hash funkce:

Průzkumná funkce:

Plná funkce dvojitého hash:

Příklad výpočtu

Velikost pole: m = 7

Funkce hash
Průzkumná funkce

Tabulka hash:

k 10 19 31 22 14 16
H 3 5 3 1 0 2
H ' 1 5 2 3 5 2

Pole vyplněné pomocí hash tabulky a funkce sondy:

0 1 2 3 4. místo 5 6.
31 22 16 10 - 19 14

Vysvětlení pomocí příkladu :

a negenerují kolizi, a proto nepotřebují funkci dvojitého hash . Zde si můžete přečíst index hashovací funkce . vytváří kolizi v poli v místě , což je důvod, proč nyní funkce dvojitého hash s :

Bod znovu vytvoří kolizi, a proto se volá:

Pozice je prázdná, a tak přijímá obsah .

webové odkazy