Previous Up 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 (=vor dem) 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
Page last (re-)generated May 21, 2003 (Martin Steffen)
Previous Up Next