\documentclass{bschlangaul-aufgabe} \bLadePakete{mathe} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 5}, Thematik = {Hashing}, Referenz = 66115-2021-F.T2-TA2-A5, RelativerPfad = Examen/66115/2021/03/Thema-2/Teilaufgabe-2/Aufgabe-5.tex, ZitatSchluessel = examen:66115:2021:03, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Streutabellen (Hashing)}, EinzelpruefungsNr = 66115, Jahr = 2021, Monat = 03, ThemaNr = 2, TeilaufgabeNr = 2, AufgabeNr = 5, } \begin{enumerate} %% % a) %% \item Nennen Sie zwei wünschenswerte Eigenschaften von Hashfunktionen. \index{Streutabellen (Hashing)} \footcite{examen:66115:2021:03} \begin{bAntwort} \begin{description} \item[surjektiv] Die Abbildung soll surjektiv sein, \dh jeder Index soll berechnet werden können. \item[gleichverteilt] Durch die Hashfunktion soll möglichst eine Gleichverteilung auf die Buckets (Indexliste) erfolgen. \item[effizient] Zudem sollte die Verteilung mittels Hashfunktion möglichst effizient gewählt werden. \footcite{wiki:hashfunktion} \end{description} \end{bAntwort} %% % b) %% \item Wie viele Elemente können bei Verkettung und wie viele Elemente können bei offener Adressierung in einer Hashtabelle mit $m$ Zeilen gespeichert werden? \begin{bAntwort} \begin{description} \item[Verkettung] Es darf mehr als ein Element pro Bucket enthalten sein, deswegen können beliebig viele Element gespeichert werden. \item[offene Addressierung] (normalerweise) ein Element pro Bucket, deshalb ist die Anzahl der speicherbaren Elemente höchstens $m$. Können in einem Bucket $k$ Elemente gespeichert werden, dann beträgt die Anzahl der speicherbaren Elemente $k \cdot m$. \end{description} \end{bAntwort} %% % c) %% \item Angenommen, in einer Hashtabelle der Größe $m$ sind alle Einträge (mit mindestens einem Wert) belegt und insgesamt $n$ Werte abgespeichert. Geben Sie in Abhängigkeit von $m$ und $n$ an, wie viele Elemente bei der Suche nach einem nicht enthaltenen Wert besucht werden müssen. Sie dürfen annehmen, dass jeder Wert mit gleicher Wahrscheinlichkeit und unabhängig von anderen Werten auf jeden der $m$ Plätze abgebildet wird (einfaches gleichmäßiges Hashing). \begin{bAntwort} $\frac{n}{m}$ Beispiel: 10 Buckets, 30 Elemente: $\frac{30}{10} = 3$ Elemente im Bucket, die man durchsuchen muss. \end{bAntwort} %% % d) %% \item Betrachten Sie die folgende Hashtabelle mit der Hashfunktion $h(x) = x \mod 11$. Hierbei steht $\emptyset$ für eine Zelle, in der kein Wert hinterlegt ist. \def\l{$\emptyset$} \begin{tabular}{|r||c|c|c|c|c|c|c|c|c|c|c|} Index & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\\hline Wert & 11 & \l & \l & 3 & \l & 16 & 28 & 18 & \l & \l & 32 \\ \end{tabular} Führen Sie nun die folgenden Operationen mit offener Adressierung mit linearem Sondieren aus und geben Sie den Zustand der Datenstruktur nach jedem Schritt an. Werden für eine Operation mehrere Zellen betrachtet, aber nicht modifiziert, so geben Sie deren Indizes in der betrachteten Reihenfolge an. \begin{enumerate} %% % i) %% \item Insert 7 \begin{bAntwort} \begin{tabular}{|r||c|c|c|c|c|c|c|c|c|c|c|} Index & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\\hline Wert & 11 & \l & \l & 3 & \l & 16 & 28 & 18 & $7_2$ & \l & 32 \\ \end{tabular} \end{bAntwort} %% % ii) %% \item Insert 20 \begin{bAntwort} \begin{tabular}{|r||c|c|c|c|c|c|c|c|c|c|c|} Index & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\\hline Wert & 11 & \l & \l & 3 & \l & 16 & 28 & 18 & $7_2$ & $20_1$ & 32 \\ \end{tabular} \end{bAntwort} %% % iii) %% \item Delete 18 \begin{bAntwort} \begin{tabular}{|r||c|c|c|c|c|c|c|c|c|c|c|} Index & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\\hline Wert & 11 & \l & \l & 3 & \l & 16 & 28 & del & $7_2$ & $20_1$ & 32 \\ \end{tabular} del ist eine Marke, die anzeigt, dass gelöscht wurde und der Bucket nicht leer ist. \end{bAntwort} %% % iv) %% \item Search 7 \begin{bAntwort} \begin{tabular}{|r||c|c|c|c|c|c|c|c|c|c|c|} Index & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\\hline Wert & 11 & \l & \l & 3 & \l & 16 & 28 & del & $7_2$ & $20_1$ & 32 \\ \end{tabular} $h(7) = 7 \mod 11 = 7$ 7 (Index) $\rightarrow$ del lineares sondieren $\rightarrow$ 8 (Index) $\rightarrow$ gefunden \end{bAntwort} %% % v) %% \item Insert 5 \begin{bAntwort} \begin{tabular}{|r||c|c|c|c|c|c|c|c|c|c|c|} Index & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\\hline Wert & 11 & \l & \l & 3 & \l & 16 & 28 & $5_3$ & $7_2$ & $20_1$ & 32 \\ \end{tabular} \end{bAntwort} \end{enumerate} \end{enumerate} \end{document}