plně náhodná hashovací funkce
Plně náhodná hashovací funkce (v materiálech označovaná jako completely random function) je teoretický ideál, se kterým srovnáváme ostatní reálné hashovací systémy.
Představte si ji takto:
1. Definice (Co to je)
Je to funkce $h:U→[m]$, která vznikne tak, že pro každý možný vstup $x$ z univerza $U$ hodíme kostkou (vygenerujeme náhodné číslo) a výsledek si zapamatujeme jako $h(x)$.
- Nezávislost: Hodnota h(x) je zcela nezávislá na hodnotě h(y) pro jakékoliv jiné y.
- Vlastnost: Taková funkce je k-nezávislá pro libovolně velké k (resp. pro k=∣U∣).
2. Problém (Proč ji nepoužíváme)
Abychom mohli takovou funkci realizovat v počítači, museli bychom si pamatovat náhodně vygenerovanou hodnotu pro každý prvek z univerza.
- Potřebovali bychom tabulku o velikosti celého univerza ∣U∣.
- Pokud hashujeme např. 64-bitová čísla, univerzum má velikost 264. Taková tabulka se do paměti nevejde.
Vztah k ostatním rodinám
Protože plně náhodnou funkci nemůžeme mít, snažíme se jí přiblížit pomocí rodin hashovacích funkcí (jako je lineární nebo polynomiální), které:
-
Šetří místo (stačí uložit pár parametrů a,b).
-
Zaručují alespoň částečnou náhodnost (např. 2-nezávislost nebo c-univerzalitu).