Cvičení 1. 12. 2021: Hešování za neideálních podmínek

\( \def\H{\mathcal{H}} \def\U{\mathcal{U}} \def\B{\mathcal{B}} \)

Nový úkol: hash_experiment

Řešení matrix_experiment

Povím na cvičení.
Utilita hwloc zobrazující mimo jiné i pěkné info o keších, např. skrz příkaz lstopo.

Notace:

Na cvičení budeme používat definice univerzality a nezávislosti dle skript, stejně se z nich nejspíš budete učit na zkoušku. Bohužel, v téhle oblasti je terminologie silně zmatená a neustálená.
Rozdíly terminologie mezi přednáškou a skripty:

Př. 1: Univerzalita a nezávislost

  1. Připomeňte si definici c-univerzality a (k,c)-nezávislosti.
  2. Uvažte systém funkcí \(\mathcal{H}_1 = \{h(x) = x\}\), který obsahuje jedinou funkci \(h(x) = x\) (to jest, \(\B = \U\)). Je \(\H_1\) c-univerzální pro nějaké c? Je (k,c)-nezávislý pro nějaká k a c?
  3. Dokažte, že systém \(\H_2 = \{h_a(x) = a | a\in\B\}\) všech konstantních funkcí je (1,1)-nezávislý. Též ukažte, že \(\H_2\) není (2,c)-nezávislý ani c-univerzální pro žádné c.
  4. Dokažte následující:

Př. 2: Modulo ničí univerzalitu

Ukažte, že pokud máme univerzální systém hešovacích funkcí \(\H\), pak systém \(\H'\), kde ke každé fci navíc přidáme modulo m, už nemusí být univerzální.
Trochu formálněji: Dokažte, že pro každé \(c\) a \(m > 1\) existuje univerzum \(\U\) a systém \(\H\) z \(\U\) do \(\U\) tak, že \(\H\) je univerzální, ale \(\H'\) už není c-univerzální.
Hint: Můžou se hodit systémy z předchozího příkladu.