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.