HASZOWANIE Zadanie 1.

Transkrypt

HASZOWANIE Zadanie 1.
HASZOWANIE
Zadanie 1. [Cormen, Zadanie 11.2-1.] Załóżmy, że funkcja haszujaca
˛ h odwzorowuje n różnych kluczy w tablic˛e T o długości m. Jaka jest oczekiwana liczba kolizji przy założeniu o prostym równomiernym haszowaniu? Mówiac
˛ precyzyjnie, jaka jest oczekiwana liczba elementów zbioru
{{k, l} : k 6= l i h(k) = h(l)}?
Zadanie 2. Przypuśćmy, że kule sa˛ wrzucane do m urn. Rzuty sa˛ niezależne i każda kula może trafić do każdej z urn z jednakowym prawdopodobieństwem. Jaka jest oczekiwana liczba rzutów, zanim każda z urn b˛edzie
zawierać co najmniej jedna˛ kule?
Definicja 1. Powiemy, że rodzina funkcji haszujacych
˛
H, odwzorowujacych
˛
skończony zbiór U w skończony zbiór B, jest e-uniwersalna, jeśli dla każdej pary różnych elementów k i l z U zachodzi
Pr {h(k) = h(l)} 6 e,
gdzie h jest losowo wybrana˛ funkcja˛ z rodziny H.
Zadanie 3. [Cormen, Zadanie 11.3-5.] Pokaż, że dla e-uniwersalnej rodziny
funkcji haszujacych
˛
zachodzi
1
1
−
.
e>
|B| |U|
Zadanie 4. [Cormen, Zadanie 11.3-6.] Niech U b˛edzie zbiorem n elementowych wektorów o elementach z Z p i niech B = Z p , gdzie p jest liczba˛
pierwsza.˛ Dla b ∈ Z p zdefiniujmy funkcj˛e haszujac
˛ a˛ h b : U −→ B, jak
nast˛epuje:
hb (ha0 , a1 , . . . , an−1 i) =
n−1
∑ aj bj ,
j=0
i niech H = hb : b ∈ Z p . Wykaż, że H jest ((n − 1)/p)-uniwersalna.
Zadania 5. – 9. dotycza˛ haszowania otwartego.
Zadanie 5. Załóżmy, że rozwiazujemy
˛
kolizje za pomoca˛ linowego haszowania z funkcja˛ haszujac
˛ a˛
h(k, i) = h1 (k) + i
mod m.
Pokaż, że jeśli w tablicy znajduje si˛e n elementów to j pozycja jest wolna z
prawdopodobieństwem 1 − n/m.
Zadanie 6. Załóżmy, że rozwiazujemy
˛
kolizje za pomoca˛ kwadratowego
haszowania z funkcja˛ haszujac
˛ a˛
h(k, i) = h1 (k) + i2
mod m.
Przedstaw przykład tablicy niewpełni zapełnionej, w której pozycje h(k, 0),
. . . , h(k, m − 1) sa˛ zaj˛ete.
1
2
HASZOWANIE
Zadanie 7. Pokaż, że jeśli m jest liczba˛ pierwsza˛ oraz współczynnik zapełnienia nie przekracza połowy to istnieje takie i, że pozycja h(k, i) =
h1 (k) + i2 mod m jest wolna.
Zadanie 8. [Cormen, Zadanie 11.4-3.] Załóżmy, że rozwiazujemy
˛
kolizje za
pomoca˛ dwukrotnego haszowania z funkcja˛ haszujac
˛ a˛
h(k, i) = h1 (k) + i h2 (k)
mod m.
Niech d b˛edzie najwi˛ekszym wspólnym dzielnikiem m i h 2 (k). Wykaż, że
jeśli d > 1 dla pewnego klucza k, to wyszukiwanie klucza k kończace
˛ si˛e
porażka˛ wymaga przejrzenia 1/d spośród wszystkich pozycji w tablicy
przed powrotem na pozycj˛e h 1 (k). Tak wi˛ec, gdy d = 1 (m i h 2 (k) sa˛ wzgl˛ednie pierwsze), wyszukiwanie może wymagać przejrzenia całej tablicy.
Zadanie 9. [Cormen, Zadanie 11.5-1.] Załóżmy, że do tablicy z haszowaniem rozmiaru m wstawiamy n kluczy, wykorzystujac
˛ zarówno adresowanie otwarte, jak i haszowanie uniwersalne. Niech p(n, m) b˛edzie prawdopodobieństwem niewyst˛epowania kolizji. Pokaż, że p(n, m) 6 e −n(n−1)/2m.
L ITERATURA
[Cormen] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Wprowadzenie do algorytmów, 6 zmienione i rozszerzone, Wydawnictwo NaukowoTechniczne, Warszawa, 2004, ISBN 83-204-2879-3.