Haszowanie z adresowaniem otwartym
Zadanie z6.1. Niech m=13. Zdefiniujmy następujące funkcje haszujące:(A) Prześledź działanie haszowania z adresowaniem otwartym, wariant z adresowaniem liniowym, z funkcją haszującą h(k,i)=(h1(k)+i) mod m w sytuacji, gdy do początkowo pustej (m-elementowej) tablicy T wstawiamy liczby 6, 19, 28, 41, 54, a następnie usuwamy 41 i szukamy potem 54 oraz 32. "Prześledź działanie" oznacza, że dla każdej wstawianej liczby należy wyliczyć pozycje, na jakich były próby wstawienia i pozycję na której ostatecznie było wstawienie.
(B) Prześledź działanie haszowania z adresowaniem otwartym, wariant z adresowaniem kwadratowym, z funkcją haszującą h(k,i)=(h1(k)+i2) mod m w sytuacji, gdy do początkowo pustej (m-elementowej) tablicy T wstawiamy liczby 6, 19, 28, 41, 54, 67, a następnie usuwamy 54 i szukamy potem 67.
(C) Prześledź działanie haszowania z adresowaniem otwartym, wariant z haszowaniem dwukrotnym, z funkcją haszującą h(k,i)=(h1(k)+i*h2(k)) mod m w sytuacji, gdy do (m-elementowej) tablicy T zawierającej elementy 50 (pozycja 11), 69 (pozycja 4), 72 (pozycja 7), 79 (pozycja 1), oraz 98 (pozycja 5), wstawiamy liczbę 14, a następnie usuwamy 98 i szukamy potem 14.
Zadanie z6.2. (4 pkt.) Zaprogramować wybraną JEDNĄ operację (W, S lub U) dla TRZECH różnych technik rozwiązywania kolizji na tablicy z haszowaniem z adresowaniem otwartym oraz przeprowadzić testy i pomiary:
W tablicy haszowań mają być obiekty zawierające dwa pola:
ilosc – typu int
nazwisko – ciąg znaków
Kluczami mają być nazwiska (schematy zamiany na liczbę, do haszowania, jak w zadaniu z5). W pliku nazwiskaASCII znajduje się wykaz zapisów postaci: [liczba typu int] [nazwisko], które można wykorzystać.
Wykaz liczb pierwszych (przydatnych przy doborze rozmiaru tablicy): pierwsze.txt.
Warianty operacji i pomiarów