\documentclass{bschlangaul-aufgabe}
\bLadePakete{mathe}
\begin{document}
\bAufgabenMetadaten{
  Titel = {4. Hashing},
  Thematik = {Hashing mit verketteten Listen und offener Adressierung},
  Referenz = 66115-2016-F.T2-A4,
  RelativerPfad = Examen/66115/2016/03/Thema-2/Aufgabe-4.tex,
  ZitatSchluessel = examen:66115:2016:03,
  ZitatBeschreibung = {Seite 7},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Streutabellen (Hashing), Separate Verkettung, Offene Adressierung},
  EinzelpruefungsNr = 66115,
  Jahr = 2016,
  Monat = 03,
  ThemaNr = 2,
  AufgabeNr = 4,
}

Betrachte eine Hashtabelle der Größe $m = 10$.
\index{Streutabellen (Hashing)}
\footcite[Seite 7]{examen:66115:2016:03}

\begin{enumerate}

%%
% a)
%%

\item Welche der folgenden Hashfunktionen ist für Hashing mit
verketteten Listen\index{Separate Verkettung} am besten geeignet?
Begründen Sie Ihre Wahl!

\begin{enumerate}
\item $h_1(x) = (4x + 3) \mod m$

\begin{bAntwort}
\begin{description}
\item[1] $h_1(1) = (4 \cdot 1 + 3) \mod 10 = 7$
\item[2] $h_1(2) = (4 \cdot 2 + 3) \mod 10 = 1$
\item[3] $h_1(3) = (4 \cdot 3 + 3) \mod 10 = 5$
\item[4] $h_1(4) = (4 \cdot 4 + 3) \mod 10 = 9$
\item[5] $h_1(5) = (4 \cdot 5 + 3) \mod 10 = 3$
\item[6] $h_1(6) = (4 \cdot 6 + 3) \mod 10 = 7$
\item[7] $h_1(7) = (4 \cdot 7 + 3) \mod 10 = 1$
\item[8] $h_1(8) = (4 \cdot 8 + 3) \mod 10 = 5$
\item[9] $h_1(9) = (4 \cdot 9 + 3) \mod 10 = 9$
\item[10] $h_1(10) = (4 \cdot 10 + 3) \mod 10 = 3$
\end{description}
\end{bAntwort}

\item $h_2(x) = (3x + 3) \mod m$

\begin{bAntwort}
\begin{description}
\item[1] $h_2(1) = (3 \cdot 1 + 3) \mod 10 = 6$
\item[2] $h_2(2) = (3 \cdot 2 + 3) \mod 10 = 9$
\item[3] $h_2(3) = (3 \cdot 3 + 3) \mod 10 = 2$
\item[4] $h_2(4) = (3 \cdot 4 + 3) \mod 10 = 5$
\item[5] $h_2(5) = (3 \cdot 5 + 3) \mod 10 = 8$
\item[6] $h_2(6) = (3 \cdot 6 + 3) \mod 10 = 1$
\item[7] $h_2(7) = (3 \cdot 7 + 3) \mod 10 = 4$
\item[8] $h_2(8) = (3 \cdot 8 + 3) \mod 10 = 7$
\item[9] $h_2(9) = (3 \cdot 9 + 3) \mod 10 = 0$
\item[10] $h_2(10) = (3 \cdot 10 + 3) \mod 10 = 3$
\end{description}
\end{bAntwort}
\end{enumerate}

\begin{bAntwort}
Damit die verketteten Listen möglichst klein bleiben, ist eine möglichst
gleichmäßige Verteilung der Schlüssel in die Buckets anzustreben. $h_2$
ist dafür besser geeignet als $h_1$, da $h_2$ in alle Buckets Schlüssel
ablegt, $h_1$ jedoch nur in Buckets mit ungerader Zahl.
\end{bAntwort}

%%
% b)
%%

\item Welche der folgenden Hashfunktionen ist für Hashing mit offener
Adressierung\index{Offene Adressierung} am besten geeignet? Begründen
Sie Ihre Wahl!

\begin{enumerate}
\item $h_1(x,i) = (7 \cdot x + i \cdot m) \mod m$
\item $h_2(x,i) = (7 \cdot x + i \cdot (m - 1)) \mod m$
\end{enumerate}

\begin{bAntwort}
$h_2(x,i)$ ist besser geeignet. $h_1$ sondiert immer im selben Bucket,
$(i \cdot m) \mod m$ heben sich gegenseitig auf,
zum Beispiel ergibt:

\begin{itemize}
\item $h_1(3,0) = (7 \cdot 3 + 0 \cdot 10) \mod 10 = 1$
\item $h_1(3,1) = (7 \cdot 3 + 1 \cdot 10) \mod 10 = 1$
\item $h_1(3,2) = (7 \cdot 3 + 2 \cdot 10) \mod 10 = 1$
\end{itemize}

Während hingegen $h_2$ verschiedene Buckets belegt.

\begin{itemize}
\item $h_2(3,0) = (7 \cdot 3 + 0 \cdot 9) \mod 10 = 1$
\item $h_2(3,1) = (7 \cdot 3 + 1 \cdot 9) \mod 10 = 0$
\item $h_2(3,2) = (7 \cdot 3 + 2 \cdot 9) \mod 10 = 9$
\end{itemize}
\end{bAntwort}
\end{enumerate}
\end{document}
