Previous Contents Next

6   Hashstrukturen

Literatur: Kapitel 12 aus [CLR90]. Hashfunktionen werden auch in [Knu73b] diskutiert.
Inhalt Hashstrukturen ·Hashing mit externer Verkettung ·Hashing mit offener Adressierung ·Hashfunktionen
Einleitung


Adreßtabellen mit direktem Zugriff




Search(T,k)   = return T[k];

Insert(T,x)   = T[key(x)] := x;

Delete(T,x)   = T[key(x)] := nil;

Hashtabelle
Kollisionsauflösung: Verkettung




Insert(T,x) = T[h(key(x))] := insert x at the head of T[h(key)];

Search(T,k) = Search for an element with key k in T[h(k)];

Delete(T,x) = Delete x  from list  T[h(k)];




Analyse


Definition 1  [Belegungsfaktor]   Der Belegungsfaktor a (load factor) einer Hashtabelle T[0,..., m-1] ist definiert als
a =
n
m
,
wobei n gleich die Anzahl der gespeicherten Elemente ist.
Analyse (2)
Satz 1   Das erfolgreiche sowie erfolglose Suchen in einer Hashtabelle mit Verkettung und unter der Annahme einfachen, uniformen Hashings benötigt im Mittel O(1+a) Zeitaufwand.

Beweis: Unterscheidung in erfolglose und erfolgreiche Suche. erfolglos erfolgreich Annahmen: Ansatz:
|Zugriffe beim Finden von e| = |Zugriffe beim Einfügen von e| +1
Durschnittliche Länge beim Einfügen des i-ten Elements: i-1/m im Durchschnitt: 1/n åi=1n(1+i-1/m) = ... 1 + a/2 - 1/2m Þ O(1+a)


Hashfunktionen


Offene Adressierung


Offene Adressierung: Hashfunktionen


February 5, 2002
Previous Contents Next